Blame |
Last modification |
View Log
| Download
| RSS feed
package br.com.kronus.binance.futures;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.Date;
import br.com.kronus.binance.futures.model.CandleKLinha;
import br.com.kronus.core.Candle;
public final class ConversorCandle
{
private ConversorCandle
() {}
// =========================================================
// CandleKLinha -> Candle (modelo Kronus)
// =========================================================
public static Candle candleKLinhaParaCandle
(CandleKLinha k,
String ativo,
String periodo, ZoneId zona
) {
if (k ==
null) return null;
// Usa o método já existente no KLinha:
ZonedDateTime abertura = k.
getHorarioAberturaZoned(zona
);
Candle c =
new Candle
();
c.
setNomeAtivo(ativo
);
c.
setPeriodo(periodo
);
// DATA / HORA no padrão da classe Candle
Date dataHora =
Date.
from(abertura.
toInstant());
c.
setDataHora(dataHora
);
c.
setDataHoraTime(abertura.
toLocalDateTime());
// OHLCV
c.
setAbertura(k.
getAbertura());
c.
setMaxima(k.
getMaxima());
c.
setMinima(k.
getMinima());
c.
setFechamento(k.
getFechamento());
c.
setVolume(k.
getVolume());
return c
;
}
// =========================================================
// Candle -> CandleKLinha (modelo Binance Futures)
// AGORA APENAS COM SETTERS (SEM CONSTRUTOR)
// =========================================================
public static CandleKLinha candleParaCandleKLinha
(Candle c, ZoneId zona
) {
if (c ==
null) return null;
// Recupera horário do Candle do Kronus
LocalDateTime ldt
;
if (c.
getDataHora() !=
null) {
ldt = c.
getDataHora().
toInstant().
atZone(zona
).
toLocalDateTime();
} else if (c.
getDataHoraTime() !=
null) {
ldt = c.
getDataHoraTime();
} else {
throw new IllegalArgumentException("Candle sem dataHora nem dataHoraTime definido.");
}
ZonedDateTime abertura = ldt.
atZone(zona
);
long openTime = abertura.
toInstant().
toEpochMilli();
long closeTime = abertura.
plusMinutes(1).
toInstant().
toEpochMilli();
BigDecimal vol = c.
getVolume() !=
null ? c.
getVolume() :
BigDecimal.
ZERO;
CandleKLinha k =
new CandleKLinha
();
// ===== AJUSTAR AQUI OS SETTERS CONFORME SUA CLASSE KLinha =====
// nomes mais comuns:
k.
setHorarioAbertura(openTime
); // ou k.setOpenTime(...)
k.
setHorarioFechamento(closeTime
); // ou k.setCloseTime(...)
k.
setAbertura(c.
getAbertura());
k.
setMaxima(c.
getMaxima());
k.
setMinima(c.
getMinima());
k.
setFechamento(c.
getFechamento());
// Volume é opcional
k.
setVolume(vol
);
// ===============================================================
return k
;
}
}