Ist schon wieder verstümmelter code = aus dem Zusammenhang gerissen.
Falls du das in der OnTick() eingebaut hast: handle erzeugen gehört hier nicht hin. Das gehort in die OnInit().
Das ArraySetAsSeries(RSI,true) fehlt hier auch! Und ArrayResize() ist vollkommen Überflüssig!
Bist wohl ein weiteres Opfer vom Herrn R.B. mit seinem dubiosen YT-Kanal, dem das Handwerk gelegt gehört!
Und lass doch bitte die original Daten vom RSI in Ruh!
Ist schon wieder verstümmelter code = aus dem Zusammenhang gerissen.
Falls du das in der OnTick() eingebaut hast: handle erzeugen gehört hier nicht hin. Das gehort in die OnInit().
Das ArraySetAsSeries(RSI,true) fehlt hier auch! Und ArrayResize() ist vollkommen Überflüssig!
Bist wohl ein weiteres Opfer vom Herrn R.B. mit seinem dubiosen YT-Kanal, dem das Handwerk gelegt gehört!
Und lass doch bitte die original Daten vom RSI in Ruh!
ArraySetAsSeries(RSI,true) hatte ich tatsächlich vergessen :) Bin ziemlich eingerostet seit ich mich fast nurnoch mit machine learning befasse... und der code sitzt leider bereits in der OnInit() OnInit, daran kann es nicht liegen. YT-tutorials sind teilweise echt schrott größtenteils, aber ich verstehe nicht ganz was mit RSI original Daten gemeint ist ( "Und lass doch bitte die original Daten vom RSI in Ruh!")... muss ich sie noch irgendwie konvertieren?
//+------------------------------------------------------------------+ //| Forum_Baye_Array_Init_fehlt.mq5 | //| Copyright 2019, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2019, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ double rsi[]; double rsi2[]; void OnStart() { ArrayResize(rsi,20); ArrayResize(rsi2,20); ArrayFill(rsi2,0,20,0); for (int idx=0; idx < 10; idx++) { Print(rsi[idx]); } for (int idx=0; idx < 10; idx++) { Print(rsi2[idx]); } } //+------------------------------------------------------------------+
07:11:06.702 Forum_Baye_Array_Init_fehlt (AUDJPY,H1) 2.747131562348284e+271 EQ 0 07:11:06.702 Forum_Baye_Array_Init_fehlt (AUDJPY,H1) 2.312276629101618e-319 QD 0 07:11:06.702 Forum_Baye_Array_Init_fehlt (AUDJPY,H1) 0.0 QS 0 07:11:06.702 Forum_Baye_Array_Init_fehlt (AUDJPY,H1) 8.455280662327365e-307 EM 0 07:11:06.702 Forum_Baye_Array_Init_fehlt (AUDJPY,H1) 1.112610266547175e-306 FG 0 07:11:06.702 Forum_Baye_Array_Init_fehlt (AUDJPY,H1) 2.419107905071504e-312 GM 0 07:11:06.702 Forum_Baye_Array_Init_fehlt (AUDJPY,H1) 0.0 GJ 0 07:11:06.702 Forum_Baye_Array_Init_fehlt (AUDJPY,H1) 2.072210131787356e-317 OD 0 07:11:06.702 Forum_Baye_Array_Init_fehlt (AUDJPY,H1) 9.881312916824931e-324 CN 0 07:11:06.702 Forum_Baye_Array_Init_fehlt (AUDJPY,H1) 9.881312916824931e-324 QE 0 07:11:06.702 Forum_Baye_Array_Init_fehlt (AUDJPY,H1) Array mit Initialisiereung QL 0 07:11:06.702 Forum_Baye_Array_Init_fehlt (AUDJPY,H1) 0.0 CD 0 07:11:06.702 Forum_Baye_Array_Init_fehlt (AUDJPY,H1) 0.0 EL 0 07:11:06.702 Forum_Baye_Array_Init_fehlt (AUDJPY,H1) 0.0 GD 0 07:11:06.702 Forum_Baye_Array_Init_fehlt (AUDJPY,H1) 0.0 IL 0 07:11:06.702 Forum_Baye_Array_Init_fehlt (AUDJPY,H1) 0.0 KE 0 07:11:06.702 Forum_Baye_Array_Init_fehlt (AUDJPY,H1) 0.0 MM 0 07:11:06.702 Forum_Baye_Array_Init_fehlt (AUDJPY,H1) 0.0 PE 0 07:11:06.703 Forum_Baye_Array_Init_fehlt (AUDJPY,H1) 0.0 RM 0 07:11:06.703 Forum_Baye_Array_Init_fehlt (AUDJPY,H1) 0.0 DE 0 07:11:06.703 Forum_Baye_Array_Init_fehlt (AUDJPY,H1) 0.0
Ups , hab doch glatt den Text vergessen.
Ich denke das Skript erklärt die "seltsamen" Werte.
Gehört zu den Grundlagen
Ich vermute das CopyBuffer schlägt fehl. Du prüfst den Returnwert nicht. Bei 6010 Kerzen kann es sein, dass der RSI Buffer gar nicht genug Werte vorhält. Immer mit CopyBuffer(handle,bufnum,shift,amount,buffer)==amount prüfen.
Stimmt,was kann man da machen?
spontan fällt mir nur batchweise drüber zu iterieren ein: sprich nur die benötigten in ein lokales Array einsetzen, welches nach dem es seinen Zweck erfüllt verfällt,
Das Ding ist nur: ich iteriere über alle daten im OnInit (um ein CSV aus den daten zu shreiben) und bekomme somit leider error 4806 zurück
ERR_INDICATOR_DATA_NOT_FOUND |
4806 |
Angeforderte Daten nicht gefunden |
Wenn du das array nach dem ersten Resize nicht mit Werten füllst kann es passieren das du solche "Werte" siehst.
Warum ?
Weil das array beim erstellen nur in der Struktur angelegt wird. Es können alte Daten in dem Wertebereich sein.
Und ich gehe stark davon aus das du auf so einen Bereich zugegriffen hast .
Wenn es ein IndikatorBuffer werden soll brauchst du das nicht.
Die Werte 0-100 musst du selber hinkriegen.
Stimmt,was kann man da machen?
spontan fällt mir nur batchweise drüber zu iterieren ein: sprich nur die benötigten in ein lokales Array einsetzen, welches nach dem es seinen Zweck erfüllt verfällt,
Das Ding ist nur: ich iteriere über alle daten im OnInit (um ein CSV aus den daten zu shreiben) und bekomme somit leider error 4806
zurück
ERR_INDICATOR_DATA_NOT_FOUND |
4806 |
Angeforderte Daten nicht gefunden |
Zunächst mal, wenn Du Daten nicht kriegst heißt das nicht, dass es sie nicht gibt. Es gibt sie nur momentan nicht. Deine Anfrage wird dann im
Hintergrund bearbeitet, bis der Server die Daten rausrückt, oder auch nicht. Also später noch einmal nachfragen. Bei 6000 Kerzen würde ich
aber auch erstmal nachschauen, ob die Charthistorie überhaupt ausreicht. Also Chart aufmachen, ganz an den Anfang springen mit Pos1 und
versuchen nach links zu scrollen, ob der Server noch was rausgibt. Cursor links oder Bild-hoch Taste. Wenn die Historie vollständig
geladen ist, den EA noch mal starten. Die Chart-Historie liegt dann lokal auf Deiner Festplatte vor, und aus dieser werden auch die RSI Werte
berechnet.
Zunächst mal, wenn Du Daten nicht kriegst heißt das nicht, dass es sie nicht gibt. Es gibt sie nur momentan nicht. Deine Anfrage wird dann im
Hintergrund bearbeitet, bis der Server die Daten rausrückt, oder auch nicht. Also später noch einmal nachfragen. Bei 6000 Kerzen
würde ich aber auch erstmal nachschauen, ob die Charthistorie überhaupt ausreicht. Also Chart aufmachen, ganz an den Anfang springen
mit Pos1 und versuchen nach links zu scrollen, ob der Server noch was rausgibt. Cursor links oder Bild-hoch Taste. Wenn die Historie
vollständig geladen ist, den EA noch mal starten.
iBars gibt mir 6129 zurück, jeder Close liegt fehlerfrei vor (auch im CSV) also gehe ich davon aus dass ich das gescrolle vorerst sparen kann.
Aber kriege schon probleme wenn ich die vorletzten 3 Bars aufrufen will
ArraySetAsSeries(RSI,true); int rsi_buf=CopyBuffer(RSI_Handle,0,1,3,RSI); if (rsi_buf<0){Print("CopyBufferMA1 error =",GetLastError()); DebugBreak();}@Christian ich glaube wir reden wieder völlig aneinander vorbei ... es mehr geht darum die richtigen Werte zu bekommen, also die prozentwerte des RSI, aber danke für den hinweis mit dem nicht initialisierten array
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
iteriere über ein array gefüllt mit kursdaten, wobei i = 6010 bars zurück in der vergangenheit entspricht. Soweit ich weiß sollte der RSI Value eigentlich doch zwischen 0 und 100 und etwas grober sein (ein prozentwert eben) oder liege ich Falsch?
bekomme folgende Werte raus: