Hi, ich wollte mal Fragen, ob das so richtig ist...
Ich versuche, die durchschnittliche Kursvolatility in Prozent mithilfe von 4-Stunden-Kerzen über einen Zeitraum von 1 Monat zu berechnen. Bin mir aber unsicher, ob der Rechenweg so richtig wäre:
Die Ausgabe ist dann in etwa:
Heißt das, der Kurs steigt/absinkt in 4 Stunden durchschnittlich um ca. 0,45 % nach oben bzw. unten? Erfahrungsgemäß müsste das ungefähr passen, bin mir wegen des Rechenwegs aber noch nicht sicher ...
Ich versuche, die durchschnittliche Kursvolatility in Prozent mithilfe von 4-Stunden-Kerzen über einen Zeitraum von 1 Monat zu berechnen. Bin mir aber unsicher, ob der Rechenweg so richtig wäre:
Java:
public static String f(Object dObj) {
if (dObj instanceof BigDecimal) {
return ((BigDecimal) dObj).toPlainString();
}
return String.format(Locale.ROOT, "%.9f", (double) dObj);
}
public static void main(String[] args) throws BinanceApiException {
SimpleDateFormat sdf = new SimpleDateFormat();
BinanceApi api = new BinanceApi();
List<BinanceCandlestick> klines = api.klines(BinanceSymbol.valueOf("ETHBTC"), BinanceInterval.FOUR_HOURS, 31 * 6, null);
double sumDerivation = 0;
double sumVolatilityUp = 0;
double sumVolatilityDown = 0;
for (int i = 0; i < klines.size(); i++) {
BinanceCandlestick cs = klines.get(i);
double derivation = cs.getHigh().doubleValue() - cs.getLow().doubleValue();
double mid = (cs.getHigh().doubleValue() + cs.getLow().doubleValue()) / 2.0;
double vUp = cs.getHigh().doubleValue() / mid;
double vDown = mid / cs.getLow().doubleValue();
sumDerivation += derivation;
sumVolatilityUp += vUp;
sumVolatilityDown += vDown;
System.out.println((i + 1) + ";" + sdf.format(new Date(cs.getOpenTime())) + ";" + f(cs.getHigh()) + ";" + f(cs.getLow()) + ";" + f(derivation) + ";" + f(vUp) + ";" + f(vDown));
}
System.out.println("avgDerivation = " + f(sumDerivation / klines.size()));
System.out.println("avgVolatilityUp = " + f((sumVolatilityUp / klines.size() - 1) * 100));
System.out.println("avgVolatilityDown = " + f((sumVolatilityDown / klines.size() - 1) * 100));
}
Die Ausgabe ist dann in etwa:
Code:
...
181;22.03.23, 13:00;0.06380500;0.06299500;0.000810000;1.006388013;1.006429082
182;22.03.23, 17:00;0.06440300;0.06250100;0.001902000;1.014987707;1.015215757
183;22.03.23, 21:00;0.06438800;0.06320300;0.001185000;1.009287489;1.009374555
184;23.03.23, 01:00;0.06379200;0.06345100;0.000341000;1.002679912;1.002687113
185;23.03.23, 05:00;0.06359100;0.06321100;0.000380000;1.002996798;1.003005806
186;23.03.23, 09:00;0.06344000;0.06334000;0.000100000;1.000788768;1.000789391
avgDerivation = 0.000606113
avgVolatilityUp = 0.445288083
avgVolatilityDown = 0.448367477
Heißt das, der Kurs steigt/absinkt in 4 Stunden durchschnittlich um ca. 0,45 % nach oben bzw. unten? Erfahrungsgemäß müsste das ungefähr passen, bin mir wegen des Rechenwegs aber noch nicht sicher ...