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) { |