
estonlabs.cxtl.exchanges.mexc.spot.v3.domain.KlineInterval Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of cxtl Show documentation
Show all versions of cxtl Show documentation
CXTL – Crypto eXchange Trading Library
package estonlabs.cxtl.exchanges.mexc.spot.v3.domain;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public enum KlineInterval {
ONE_MINUTE("1m", TimeUnit.MINUTES.toMillis(1)),
FIVE_MINUTES("5m", TimeUnit.MINUTES.toMillis(5)),
FIFTEEN_MINUTES("15m", TimeUnit.MINUTES.toMillis(15)),
THIRTY_MINUTES("30m", TimeUnit.MINUTES.toMillis(30)),
SIXTY_MINUTES("60m", TimeUnit.HOURS.toMillis(1)),
FOUR_HOURS("4h", TimeUnit.HOURS.toMillis(4)),
ONE_DAY("1d", TimeUnit.DAYS.toMillis(1)),
ONE_WEEK("1W", TimeUnit.DAYS.toMillis(7)),
ONE_MONTH("1M", TimeUnit.DAYS.toMillis(30)); // Approximation for a month
private final String code;
private final long millis;
KlineInterval(String code, long millis) {
this.code = code;
this.millis = millis;
}
@JsonValue
public String getCode() {
return code;
}
public long getMillis() {
return millis;
}
private static final Map CODE_MAP = Stream.of(values())
.collect(Collectors.toMap(KlineInterval::getCode, Function.identity()));
@JsonCreator
public static KlineInterval fromCode(String code) {
KlineInterval interval = CODE_MAP.get(code);
if (interval == null) {
throw new IllegalArgumentException("Unknown interval code: " + code);
}
return interval;
}
public static KlineInterval fromMillis(long millis) {
return Stream.of(values())
.filter(interval -> interval.getMillis() == millis)
.findFirst()
.orElseThrow(() -> new IllegalArgumentException("Unknown interval for millis: " + millis));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy