|
Startseite | Registrieren | Hilfe | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Array Out of range
Hallo,
ich habe heute versucht, mit Arrays zu arbeiten, was mir nicht so recht gelingen will. Ich möchte aus dem Indikator "ZigZag" die letzten 5 Hochs und Tiefs ermitteln und diese in Hoch[p] und Tief[p] speichern. Ob die Berechnung dahinter bereits richtig ist, weiß ich noch nicht. Mir geht es erst mal um den Fehler in while (HTa[p]==0) Was stimmt daran nicht? Wenn ich statt "[p]" eine "1" einsetze und ohne Array arbeite, funktioniert der EA. Folgender Fehler erscheint: 2015.11.03 00:00:36.787 2015.10.01 08:00 ArrayTest DAX30,M1: array out of range in 'ArrayTest.mq4' (42,11) Blickt das Jemand? |
|
|||
1. Die Arrays sollten nicht in der Funktion OnTick() deklariert werden, sondern in OnInit() oder sogar vorher in den globalen Variablen.
2. Wenn für die Arrays vor dem Aufrufen keine Dimension festgelegt wird, wird das Zugreifen auf das Array ins Leere laufen und diesen Fehler produzieren. D.h. entweder bei der Deklaration die Dimension festlegen, also z.B. Array[10] oder im Verlauf des Befüllens des Arrays die Dimension dynamisch der Anzahl der Arrayfelder anpassen. Das geht mittels: int size = ArraySize(Array); size++; ArrayResize(Array, size); Array[size-1] = Wert; //size-1, weil die Felder von Index 0 bis sie-1 laufen, die Dimension size beträgt. traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Hallo traderdoc,
Zitat:
Gruß yytrader |
|
|||
1. Ich muß mich korrigieren: Die Arrays werden nur global deklariert. (leider kann ich es nicht mehr im Originalpost ändern)
2. Ja, warum sollten die Arrays mit jedem Tick neu deklariert werden? 3. Wäre der Geltungsbereich dieser Arrays nur auf die Funktion OnTick() beschränkt. (Daher auch meine Korrektur bzgl. der falschen Aussage der Deklaration in OnInit()). traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
Lesezeichen |
Stichworte |
array, array bereich, array out of range, bereich, mql4, programmierung, programmierung metatrader |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
|
|