Husker Posted July 24, 2019 Share Posted July 24, 2019 Hallo zusammen, seit fast einer Woche versuche ich nun den RSI Indikator für Bitcoins auf Kraken zu berechnen und bekomme es einfach nicht hin. Da ich hier leider keine Bilder einfügen kann, wird die Erklärung etwas schwer, aber ich hoffe ich bekomme es hin .. Also die Ausgangssituation ist: RSI(14) bei einer Auflösung von 1 min. # id, time_stamp, date_time, close, close_balance, gain, loss, AG, AL, RS, RSI '150189', '1563962160', '2019-07-24 11:56:00', '8775.60', '5.7000', '5.7000', '0.0000', '1.457142857', '0.178571428', '8.160', '89.083' '150187', '1563962100', '2019-07-24 11:55:00', '8769.90', '8.5000', '8.5000', '0.0000', '1.050000000', '0.192857142', '5.444', '84.482' '150185', '1563962040', '2019-07-24 11:54:00', '8761.40', '0.1000', '0.1000', '0.0000', '0.442857142', '0.221428571', '2.000', '66.667' '150183', '1563961980', '2019-07-24 11:53:00', '8761.30', '0.1000', '0.1000', '0.0000', '0.450000000', '0.221428571', '2.032', '67.018' '150181', '1563961920', '2019-07-24 11:52:00', '8761.20', '-0.5000', '0.0000', '0.5000', '0.492857142', '0.221428571', '2.226', '69.002' '150179', '1563961860', '2019-07-24 11:51:00', '8761.70', '1.2000', '1.2000', '0.0000', '0.492857142', '0.242857142', '2.029', '66.986' '150177', '1563961800', '2019-07-24 11:50:00', '8760.50', '0.1000', '0.1000', '0.0000', '0.407142857', '0.721428571', '0.564', '36.061' '150175', '1563961740', '2019-07-24 11:49:00', '8760.40', '4.5000', '4.5000', '0.0000', '0.400000000', '1.078571428', '0.371', '27.061' '150173', '1563961680', '2019-07-24 11:48:00', '8755.90', '0.0000', '0.0000', '0.0000', '0.078571428', '1.092857142', '0.072', '6.716' '150171', '1563961620', '2019-07-24 11:47:00', '8755.90', '-0.1000', '0.0000', '0.1000', '0.078571428', '1.092857142', '0.072', '6.716' '150169', '1563961560', '2019-07-24 11:46:00', '8756.00', '0.2000', '0.2000', '0.0000', '0.392857142', '1.085714285', '0.362', '26.579' '150167', '1563961500', '2019-07-24 11:45:00', '8755.80', '-0.1000', '0.0000', '0.1000', '0.378571428', '1.100000000', '0.344', '25.595' '150165', '1563961440', '2019-07-24 11:44:00', '8755.90', '-0.1000', '0.0000', '0.1000', '0.378571428', '1.100000000', '0.344', '25.595' '150163', '1563961380', '2019-07-24 11:43:00', '8756.00', '-1.7000', '0.0000', '1.7000', '0.671428571', '1.092857142', '0.614', '38.042' '150161', '1563961320', '2019-07-24 11:42:00', '8757.70', '-0.2000', '0.0000', '0.2000', '1.442857142', '0.971428571', '1.485', '59.759' '150159', '1563961260', '2019-07-24 11:41:00', '8757.90', '-0.4000', '0.0000', '0.4000', '1.485714285', '0.957142857', '1.552', '60.815' '150157', '1563961200', '2019-07-24 11:40:00', '8758.30', '0.2000', '0.2000', '0.0000', '1.621428571', '0.928571428', '1.746', '63.583' '150155', '1563961140', '2019-07-24 11:39:00', '8758.10', '0.7000', '0.7000', '0.0000', '1.607142857', '1.414285714', '1.136', '53.184' '150154', '1563961080', '2019-07-24 11:38:00', '8757.40', '-0.8000', '0.0000', '0.8000', '1.557142857', '1.492857142', '1.043', '51.052' "Close" bekomme ich von der Kraken API, also behaupte ich mal die Daten Stimmen. gain, loss, AG, AL, RS und RSI sind meine Berechnungen Kraken hat für 11:56 einen RSI Wert von 70,82 Berechnet in diesem beispiel nutze ich also die 14 werte id = 150189 -> 150161 Was und wie habe ich gerechnet Die Differenz zwischen 2 Closewerten überprüfe ich auf <> 0 ist der wert Positive kommt er zu gain, andernfalls zu loss, der jeweils andere wert ist 0 jetzt summiere ich gain und loss auf, und teil es durch 14 das ergebnis kommt in AG und AL also: AG = SUM(gain) / 14 AL = SUM(loss) / 14 RS = AG / AL RSI = (100 - (100 / (1+RS))) Wie ihr sehen könnt komme ich auf 89,083 und nicht 70,82 also was zur Hölle mache ich Falsch. Ich habe jetzt schon wirklich alles versucht, verschiedene Formeln usw. aber ich komme nicht mal annähernd auf ein richtiges Ergebnis. Könnt ihr mir vielleicht einen Tipp geben wo mein Fehler liegt ? Tekkies unter euch: MySQL Code zu meinen Berechnungen: SELECT id, time_stamp, date_time, close, close_balance, gain, loss, @AG:=( SELECT IF((SUM(gain) / intervall) IS NULL, 0, (SUM(gain) / intervall)) FROM ohlc_data WHERE id <= oclc.id AND TIMESTAMPDIFF(MINUTE, date_time, oclc.date_time) < intervall ORDER BY date_time DESC ) as AG, @AL:=( SELECT IF((SUM(loss) / intervall) IS NULL, 0, (SUM(loss) / intervall) ) FROM ohlc_data WHERE id <= oclc.id AND TIMESTAMPDIFF(MINUTE, date_time, oclc.date_time) < intervall ORDER BY date_time DESC ) as AL, @RS:=ROUND((@AG / @AL),3) as RS, ROUND((100-(100 / (1 + @RS))), 3) as RSI FROM ohlc_data as oclc ORDER BY date_time DESC; Über ein wenig Unterstützung würde ich mich sehr freuen Grüße Link to comment Share on other sites More sharing options...
PeWi Posted July 28, 2019 Share Posted July 28, 2019 On 7/24/2019 at 12:12 PM, Husker said: RS = AG / AL RSI = (100 - (100 / (1+RS))) Das könntest du auf jeden Fall vereinfachen zu RSI = 100*(AG/(AG+AL)) Löst aber leider dein Problem mit den unterschiedlichen Werten nicht. Ich habe es jetzt mal manuell nachgerechnet, deine 89,083 für 11:56 sind richtig, insofern scheint dein SQL-Statement auch richtig zu sein. Der Fehler muss wohl an anderer Stelle liegen. Bloss was? Kann es sein, dass dir die Kraken-Oberfläche MESZ anzeigt, die Kraken-API dir aber die Zeiten in UTC angibt? Sprich, du berechnest den RSI von 11:56 UTC und vergleichst den mit dem Kraken-RSI von 11:56 MESZ? Oder umgekehrt? Der Timestamp 1563962160 deiner obersten Zeile ist 9:56h UTC und somit 11:56 MESZ. Vielleicht zeigt dir die Kraken-Oberfläche UTC-Uhrzeiten an? Sorry, hätte dir gerne besser geholfen ... Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now