Subversion Repositories Integrator Subversion

Rev

Rev 779 | Rev 783 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 779 Rev 782
Line 9... Line 9...
9
import java.time.LocalDateTime;
9
import java.time.LocalDateTime;
10
import java.time.LocalTime;
10
import java.time.LocalTime;
11
import java.time.format.DateTimeFormatter;
11
import java.time.format.DateTimeFormatter;
12
import java.util.ArrayList;
12
import java.util.ArrayList;
13
import java.util.Collections;
13
import java.util.Collections;
-
 
14
import java.util.HashMap;
14
import java.util.List;
15
import java.util.List;
15
import java.util.Locale;
16
import java.util.Locale;
16
import java.util.Map;
17
import java.util.Map;
17
import java.util.stream.Stream;
18
import java.util.stream.Stream;
18
19
Line 21... Line 22...
21
import org.apache.poi.ss.usermodel.Row;
22
import org.apache.poi.ss.usermodel.Row;
22
import org.apache.poi.ss.usermodel.Sheet;
23
import org.apache.poi.ss.usermodel.Sheet;
23
import org.apache.poi.ss.usermodel.Workbook;
24
import org.apache.poi.ss.usermodel.Workbook;
24
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
25
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
25
26
-
 
27
import br.com.ec.core.util.VerificadorUtil;
26
import br.com.kronus.core.Timeframe;
28
import br.com.kronus.core.Timeframe;
27
import br.com.sl.domain.dto.robo.ProfitTick;
29
import br.com.sl.domain.dto.robo.ProfitTick;
28
import br.com.sl.domain.model.Candle;
30
import br.com.sl.domain.model.Candle;
29
import br.com.sl.domain.model.tipos.TipoPeriodoCandle;
31
import br.com.sl.domain.model.tipos.TipoPeriodoCandle;
30
import br.com.sl.shared.ExcelDataUtils;
32
import br.com.sl.shared.ExcelDataUtils;
Line 124... Line 126...
124
                            if (firstRow) {
126
                            if (firstRow) {
125
                                firstRow = false; // pula o cabeçalho
127
                                firstRow = false; // pula o cabeçalho
126
                                continue;
128
                                continue;
127
                            }
129
                            }
128
                           
130
                           
129
                            // 0 = Contador
-
 
130
                            // 1 = Ativo
-
 
131
                            // 2 = Dia
-
 
132
                            // 3 = Hora
-
 
133
                            // 4 = Abertura
-
 
134
                            // 5 = Máxima
-
 
135
                            // 6 = Mínima
-
 
136
                            // 7 = Fechamento
-
 
137
       
-
 
138
                            String ativoCell      = row.getCell(1).getStringCellValue();
-
 
139
                            if (!ativos.contains(ativoCell)) {
-
 
140
                                ativos.add(ativoCell);
-
 
-
 
131
                            Cell ativoCell = row.getCell(1);
-
 
132
                            if (VerificadorUtil.naoEstaNulo(ativoCell)) {
-
 
133
                                String ativoString = ativoCell.getStringCellValue();
-
 
134
                                if (VerificadorUtil.naoEstaNuloOuVazio(ativoString)) {
-
 
135
                                        if (!ativos.contains(ativoString)) {
-
 
136
                                                ativos.add(ativoString);
-
 
137
                                        }
-
 
138
                                }
141
                            }
139
                            }
142
                        }
140
                        }
143
                }
141
                }
144
            }
142
            }
145
           
143
           
Line 172... Line 170...
172
                                    Cell maximaCell     = row.getCell(5);
170
                                    Cell maximaCell     = row.getCell(5);
173
                                    Cell minimaCell     = row.getCell(6);
171
                                    Cell minimaCell     = row.getCell(6);
174
                                    Cell fechamentoCell = row.getCell(7);
172
                                    Cell fechamentoCell = row.getCell(7);
175
                                    Cell finalizadoCell = row.getCell(8);
173
                                    Cell finalizadoCell = row.getCell(8);
176
               
174
               
177
                                    String ativoDescricao = ativoCell.getStringCellValue();
-
 
178
                                   
-
 
179
                                    if (!ExcelDataUtils.isNumeric(aberturaCell) || !ExcelDataUtils.isNumeric(maximaCell)
175
                                    if (!ExcelDataUtils.isNumeric(aberturaCell) || !ExcelDataUtils.isNumeric(maximaCell)
180
                                                || !ExcelDataUtils.isNumeric(minimaCell) || !ExcelDataUtils.isNumeric(fechamentoCell)
-
 
181
                                                || !ativo.equals(ativoDescricao)) {
-
 
-
 
176
                                                || !ExcelDataUtils.isNumeric(minimaCell) || !ExcelDataUtils.isNumeric(fechamentoCell)) {
182
                                        continue;
177
                                        continue;
-
 
178
                                    }
-
 
179
                                   
-
 
180
                                    String ativoDescricao = ativoCell.getStringCellValue();
-
 
181
                                    if (!ativo.equals(ativoDescricao)) {
-
 
182
                                        continue;
183
                                    }
183
                                    }
184
                                   
184
                                   
185
                                    Integer contador = BigDecimal.valueOf(contadorCell.getNumericCellValue()).intValue();
185
                                    Integer contador = BigDecimal.valueOf(contadorCell.getNumericCellValue()).intValue();
186
                                   
186
                                   
187
                                    LocalDate data = ExcelDataUtils.lerData(dataCell);
187
                                    LocalDate data = ExcelDataUtils.lerData(dataCell);
Line 236... Line 236...
236
        List<Candle> invertida = new ArrayList<>(candles);
236
        List<Candle> invertida = new ArrayList<>(candles);
237
        Collections.reverse(invertida);
237
        Collections.reverse(invertida);
238
        return invertida;
238
        return invertida;
239
    }
239
    }
240
240
241
    // Contador separado para cada ativo
-
 
-
 
241
    // Contador separado para cada ativo iniciando pelo primeiro contador encontrado
242
    public static List<Candle> adicionarContadores(List<Candle> candles) {
242
    public static List<Candle> adicionarContadores(List<Candle> candles) {
243
        Map<String, Integer> contadorPorAtivo = new java.util.HashMap<>();
-
 
-
 
243
        Map<String, Integer> contadorPorAtivo = new HashMap<>();
244
        List<Candle> comContadores = new ArrayList<>();
244
        List<Candle> comContadores = new ArrayList<>();
245
245
246
        for (Candle candle : candles) {
246
        for (Candle candle : candles) {
247
            String ativo = candle.getNomeAtivo();
247
            String ativo = candle.getNomeAtivo();
248
248
249
            Integer contadorAtual = contadorPorAtivo.get(ativo);
-
 
250
            if (contadorAtual == null) {
-
 
251
                contadorAtual = 0;
-
 
-
 
249
            // Se for o primeiro candle do ativo, usar o contador original dele como ponto de partida
-
 
250
            if (!contadorPorAtivo.containsKey(ativo)) {
-
 
251
                int contadorInicial = candle.getContadorCandle() != null
-
 
252
                        ? candle.getContadorCandle()
-
 
253
                        : 1;  // fallback, se vier nulo
-
 
254
                contadorPorAtivo.put(ativo, contadorInicial);
-
 
255
                candle.setContadorCandle(contadorInicial);
-
 
256
                comContadores.add(candle);
-
 
257
                continue;
252
            }
258
            }
253
259
254
            contadorAtual++;
-
 
255
            contadorPorAtivo.put(ativo, contadorAtual);
-
 
256
            candle.setContadorCandle(contadorAtual);
-
 
-
 
260
            // Se não é o primeiro candle do ativo, incrementar baseado no último
-
 
261
            int proximoContador = contadorPorAtivo.get(ativo) + 1;
-
 
262
            contadorPorAtivo.put(ativo, proximoContador);
-
 
263
            candle.setContadorCandle(proximoContador);
-
 
264
257
            comContadores.add(candle);
265
            comContadores.add(candle);
258
        }
266
        }
-
 
267
259
        return comContadores;
268
        return comContadores;
260
    }
269
    }
-
 
270
261
   
271
   
262
    /**
272
    /**
263
     * 1 minuto = 1, 5 minutos = 2, 15 minutos = 3, 1 dia = 4
273
     * 1 minuto = 1, 5 minutos = 2, 15 minutos = 3, 1 dia = 4
264
     */
274
     */
265
    private Timeframe resolveTipoTemporizador(String sheetName) {
275
    private Timeframe resolveTipoTemporizador(String sheetName) {