Rev 779 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 779 | Rev 782 | ||
|---|---|---|---|
| Line 11... | Line 11... | ||
| 11 | import java.time.LocalDateTime; |
11 | import java.time.LocalDateTime; |
| 12 | import java.time.LocalTime; |
12 | import java.time.LocalTime; |
| 13 | import java.time.format.DateTimeFormatter; |
13 | import java.time.format.DateTimeFormatter; |
| 14 | import java.util.ArrayList; |
14 | import java.util.ArrayList; |
| 15 | import java.util.Collections; |
15 | import java.util.Collections; |
| - | 16 | import java.util.HashMap; |
|
| 16 | import java.util.List; |
17 | import java.util.List; |
| 17 | import java.util.Locale; |
18 | import java.util.Locale; |
| 18 | import java.util.Map; |
19 | import java.util.Map; |
| 19 | import java.util.stream.Stream; |
20 | import java.util.stream.Stream; |
| 20 | 21 | ||
| Line 271... | Line 272... | ||
| 271 | List<Candle> invertida = new ArrayList<>(candles); |
272 | List<Candle> invertida = new ArrayList<>(candles); |
| 272 | Collections.reverse(invertida); |
273 | Collections.reverse(invertida); |
| 273 | return invertida; |
274 | return invertida; |
| 274 | }
|
275 | }
|
| 275 | 276 | ||
| - | 277 | // Contador separado para cada ativo iniciando pelo primeiro contador encontrado
|
|
| 276 | public static List<Candle> adicionarContadores(List<Candle> candles) { |
278 | public static List<Candle> adicionarContadores(List<Candle> candles) { |
| 277 | // Contador separado para cada ativo
|
- | |
| 278 | Map<String, Integer> contadorPorAtivo = new java.util.HashMap<>(); |
- | |
| 279 | - | ||
| - | 279 | Map<String, Integer> contadorPorAtivo = new HashMap<>(); |
|
| 280 | List<Candle> comContadores = new ArrayList<>(); |
280 | List<Candle> comContadores = new ArrayList<>(); |
| 281 | 281 | ||
| 282 | for (Candle candle : candles) { |
282 | for (Candle candle : candles) { |
| 283 | - | ||
| 284 | // Ajuste aqui o getter conforme estiver na sua classe Candle
|
- | |
| 285 | // Ex.: getAtivo(), getAtivoDescricao(), getTicker()...
|
- | |
| 286 | String ativo = candle.getNomeAtivo(); |
283 | String ativo = candle.getNomeAtivo(); |
| 287 | 284 | ||
| 288 | Integer contadorAtual = contadorPorAtivo.get(ativo); |
- | |
| 289 | if (contadorAtual == null) { |
- | |
| 290 | contadorAtual = 0; |
- | |
| - | 285 | // Se for o primeiro candle do ativo, usar o contador original dele como ponto de partida
|
|
| - | 286 | if (!contadorPorAtivo.containsKey(ativo)) { |
|
| - | 287 | int contadorInicial = candle.getContadorCandle() != null |
|
| - | 288 | ? candle.getContadorCandle() |
|
| - | 289 | : 1; // fallback, se vier nulo |
|
| - | 290 | contadorPorAtivo.put(ativo, contadorInicial); |
|
| - | 291 | candle.setContadorCandle(contadorInicial); |
|
| - | 292 | comContadores.add(candle); |
|
| - | 293 | continue; |
|
| 291 | }
|
294 | }
|
| 292 | 295 | ||
| 293 | contadorAtual++;
|
- | |
| 294 | contadorPorAtivo.put(ativo, contadorAtual); |
- | |
| - | 296 | // Se não é o primeiro candle do ativo, incrementar baseado no último
|
|
| - | 297 | int proximoContador = contadorPorAtivo.get(ativo) + 1; |
|
| - | 298 | contadorPorAtivo.put(ativo, proximoContador); |
|
| - | 299 | candle.setContadorCandle(proximoContador); |
|
| 295 | 300 | ||
| 296 | candle.setContadorCandle(contadorAtual); |
- | |
| 297 | comContadores.add(candle); |
301 | comContadores.add(candle); |
| 298 | }
|
302 | }
|
| 299 | 303 | ||
| 300 | return comContadores; |
304 | return comContadores; |
| 301 | }
|
305 | }
|
| - | 306 | ||
| 302 | 307 | ||
| 303 | 308 | ||
| 304 | /**
|
309 | /**
|
| 305 | * 1 minuto = 1, 5 minutos = 2, 15 minutos = 3, 1 dia = 4
|
310 | * 1 minuto = 1, 5 minutos = 2, 15 minutos = 3, 1 dia = 4
|
| 306 | */
|
311 | */
|