Привет, я пытаюсь рассчитать коэффициент VOLD, но при тестировании своей функциональности я сталкиваюсь со следующими проблемами:
Получается несоответствие между объемом полигона и объемом торговых просмотров (-2,5%)
Мой коэффициент VOLD намного меньше, чем TV (1 против 4) (minute -> candle)
Map symbolTimeCandle = new HashMap();
for (Map.Entry entry : candlesBySymbol.entrySet()) {
String symbol = entry.getKey();
Map timeMap = new HashMap();
for (OhlcCandleResult c : entry.getValue()) {
String minuteKey = MINUTE_FORMATTER.format(c.getT());
timeMap.put(minuteKey, c);
}
symbolTimeCandle.put(symbol, timeMap);
}
// All minutes across all symbols
Set allMinutes = new TreeSet();
symbolTimeCandle.values().forEach(m -> allMinutes.addAll(m.keySet()));
long cumulativeUpVol = 0;
long cumulativeDownVol = 0;
for (String minute : allMinutes) {
long upVol = 0;
long downVol = 0;
for (Map timeMap : symbolTimeCandle.values()) {
OhlcCandleResult candle = timeMap.get(minute);
if (candle == null) continue;
String prevMinute = getPrevMinute(minute);
OhlcCandleResult prevCandle = timeMap.get(prevMinute);
if (prevCandle == null) continue;
if (candle.getC() > prevCandle.getC()) {
upVol += candle.getV();
} else if (candle.getC() < prevCandle.getC()) {
downVol += candle.getV();
}
}
if (cumulative) {
cumulativeUpVol += upVol;
cumulativeDownVol += downVol;
} else {
cumulativeUpVol = upVol;
cumulativeDownVol = downVol;
}
double ratio;
if (cumulativeDownVol > 0) {
ratio = (double) cumulativeUpVol / cumulativeDownVol;
} else if (cumulativeUpVol > 0) {
ratio = Double.POSITIVE_INFINITY;
} else {
ratio = 1.0;
}
result.put(minute, ratio);
}
return result;
}
private static String getPrevMinute(String currentMinute) {
Instant instant = Instant.from(MINUTE_FORMATTER.parse(currentMinute));
Instant prev = instant.minusSeconds(60);
return MINUTE_FORMATTER.format(prev);
}
}
[/code]
Я пытался добиться поддержки полигонов -> они не могут помочь
Пробовал GPT -> но соотношение все равно неправильное
Пробывал разные алгоритмы - но все равно что-то не так