Warum benutzt Du den MA1_Infikator_Buffer als statisches Array? Ich würde versuchsweise einfach mal die 10 weglassen.
Wenn ich folgende Kombination in den Code schreibe bekomme ich ein "array out of range" error
double MA1_Indikator_Array[]; ArraySetAsSeries(MA1_Indikator_Array,true); if(CopyBuffer(Handle_MA_1,0,0,1,MA1_Indikator_Array)!=1) { Print("CopyBuffer from iMA 1 failed, no data"); return; }
also das ist schon echt schade wie der Metatarder hin und weider nicht will funktioniert es bei dir wenn du mein code in ein EA packst und mal testet?
ich habe jetzt zufaellig die Loesung gefunden, folgender Code funktioniert
if(CopyBuffer(Handle_MA_1,0,0,5,MA1_Indikator_Array)<0) { Print("CopyBuffer from iMA 1 failed, no data"); return; } ArraySetAsSeries(MA1_Indikator_Array,true);
Die Ryeckgabe von CopyBuffer < 0 muss man schreiben irgendwo hatte ich vorher von einem anderen EA den Code kopiert und da stand einfach !=1 deswegen funktionierte es nicht, aber insgesamt bin ich oft enttaeuscht von MT5 ich frage mich warum die das so kompliziert aufgebaut haben frueher konnte man doch ganz gemuetlich einfach die iMA() Funktion benutzen und alles damit ablesen, naja.
Hat es jetzt eigenetlich mit statischem oder dynamischem Array geklappt?
ja klappt beides lag nicht daran, ich bekam die Fehlermeldung weil die Pruefung der Rueckgabe von CopyBuffer war nicht korrekt, dort stand wenn Rueckgabe !=1 dann Fehlermeldung druecken, aber man muss schreiben wenn rueckgabe < 0 weil die rueckgabe 1 bedeutet im prinzip das es auch geklappt hat, ich hatte da einfach auf die schnelle ein Code von jemand kopiert und deswegen nicht gemerkt
ja klappt beides lag nicht daran, ich bekam die Fehlermeldung weil die Pruefung der Rueckgabe von CopyBuffer war nicht korrekt, dort stand wenn Rueckgabe !=1 dann Fehlermeldung druecken, aber man muss schreiben wenn rueckgabe < 0 weil die rueckgabe 1 bedeutet im prinzip das es auch geklappt hat, ich hatte da einfach auf die schnelle ein Code von jemand kopiert und deswegen nicht gemerkt
Und was lernen wir daraus ?
Es macht Sinn, in der Dokumentation nach Informationen zu suchen. Auch wenn sie zugegeben extrem schlecht gemacht ist. Sei es drum sie ist aber da.
Dort stand der Beispielcode mit der Zeile
//--- try to copy if(CopyBuffer(ma_handle,0,0,to_copy,MABuffer)<=0) return(0); //--- return value of prev_calculated for next call return(rates_total); }
![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- 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.
Also Leute ihr wist selber manchmal macht der Metatrader einfach Sachen die man nicht kapiert, ich probiere gerade ganz einfach den Buffer von einer Moving Average in ein Array zu laden und bekomme immer die Fehlermeldung "no data" sobald ich den wert fuer die Anzahl zu kopierender Candels von 1 auf 2 stelle oder eine noch groesere Zahl, ich will ja eigentlich nur mehr als ein Wert von der Moving Average in das Array kopieren und kapiere nicht warum das nicht funktioniert; schaut mal bitte mein derzeitiger Code:
Wenn ich also einfach nur bei CopyBuffer folgendes schreibe
CopyBuffer(Handle_MA_1,0,0,2,MA1_Indikator_Array)
dann gibt es eine Fehlermeldung "no data", aber in der Beschreibung fuer die Funktion CopyBuffer steht das man dort einstellt wieviel Werte von der Moving Average in das Array geladen werden sollen, ich bin mal gespannt ob jemand mir hier sagen kann was ich falsch mache?