package br.com.robo.sim;
import br.com.robo.model.Candle;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class CandleGenerator
{
public static List<Candle
> gerarSerieSimulada
(int quantidade,
double precoInicial
) {
List<Candle
> candles =
new ArrayList<>();
Random random =
new Random();
LocalDateTime time = LocalDateTime.
now().
minusMinutes(quantidade
);
double lastClose = precoInicial
;
for (int i =
0; i
< quantidade
; i++
) {
// tendĂȘncia leve de alta + ruĂdo
double drift =
0.01;
double ruido =
(random.
nextDouble() -
0.5) * 0.5; // -0.25 a +0.25
double close =
Math.
max(1.0, lastClose + drift + ruido
);
double open = lastClose
;
double high =
Math.
max(open, close
) + random.
nextDouble();
double low =
Math.
min(open, close
) - random.
nextDouble();
double volume =
100 + random.
nextInt(900); // 100 a 1000
candles.
add(new Candle
(time, open, high, low, close, volume
));
lastClose = close
;
time = time.
plusMinutes(1);
}
return candles
;
}
}