Hallo und guten Morgen,
ich habe mir deinen EA kurz angeschaut und m.E. liegt das Problem darin, dass du in Zeile 195 auf das
Array mrate zugreifst, es aber in Zeile 175 lediglich als (leeres) Array deklarierst.
Weil du die Zeile 178 auskommentiert hast, werden dem Array keine Elemente zugewiesen. Also nimmst
du entweder die Kommentierung von Zeile 178 wieder herrraus oder du fügst dem Array über die Funktion
ArrayResize Elemente hinzu (vor Zeile 195)
Ich hoffe, ich kann dir damit helfen.
Viele Grüße
2021.06.09 09:57:51.551 MetaTester 5 started on 127.0.0.1:3000
2021.06.09 09:57:51.552 initialization finished
2021.06.09 09:57:51.737 login (build 2940)
2021.06.09 09:57:51.745 4372 bytes of account info loaded
2021.06.09 09:57:51.745 1470 bytes of tester parameters loaded
2021.06.09 09:57:51.745 5820 bytes of input parameters loaded
2021.06.09 09:57:51.751 18959 bytes of symbols list loaded (3852 symbols)
2021.06.09 09:57:51.751 expert file added: Experts\Test EA-1manuel.ex5. 34689 bytes loaded
2021.06.09 09:57:51.764 4868 Mb available, 60 blocks set for ticks generating
2021.06.09 09:57:51.764 initial deposit 10000.00 USD, leverage 1:25
2021.06.09 09:57:51.765 successfully initialized
2021.06.09 09:57:51.765 55 Kb of total initialization data received
2021.06.09 09:57:51.765 Intel Core i3-6100 @ 3.70GHz, 8081 MB
2021.06.09 09:57:51.818 EURUSD: symbol to be synchronized
2021.06.09 09:57:51.819 EURUSD: symbol synchronized, 3720 bytes of symbol info received
2021.06.09 09:57:51.819 EURUSD: history synchronization started
2021.06.09 09:57:51.821 EURUSD: load 27 bytes of history data to synchronize in 0:00:00.001
2021.06.09 09:57:51.821 EURUSD: history synchronized from 2015.01.02 to 2021.05.31
2021.06.09 09:57:51.922 EURUSD,M15: history cache allocated for 35065 bars and contains 30950 bars from 2020.01.02 03:00 to 2021.03.31 23:45
2021.06.09 09:57:51.922 EURUSD,M15: history begins from 2020.01.02 03:00
2021.06.09 09:57:51.923 EURUSD,M15 (AdmiralMarkets-Demo): every tick generating
2021.06.09 09:57:51.923 EURUSD,M15: testing of Experts\Test EA-1manuel.ex5 from 2021.04.01 00:00 to 2021.05.31 00:00 started with inputs:
2021.06.09 09:57:51.923 Lots=0.02
2021.06.09 09:57:51.923 TpPoints=100
2021.06.09 09:57:51.923 PartialClosePoints=50
2021.06.09 09:57:51.923 PartialCloseFactor=0.3
2021.06.09 09:57:51.923 SlPoints=100
2021.06.09 09:57:51.923 Magic=111
2021.06.09 09:57:51.923 Timeframe=0
2021.06.09 09:57:51.923 IND_MA=8
2021.06.09 09:57:51.923 IND_FRACTALS=0
2021.06.09 09:57:51.923 IND_AC=0
2021.06.09 09:57:51.923 IND_AO=0
2021.06.09 09:57:51.944 2021.04.01 00:00:00 OnInit > EA (re)start...
2021.06.09 09:57:52.047 2021.04.01 00:15:00 neuer Bar!
2021.06.09 09:57:52.047 2021.04.01 00:15:00 array out of range in 'Test EA-1manuel.mq5' (195,31)
2021.06.09 09:57:52.047 OnTick critical error
2021.06.09 09:57:52.051 EURUSD,M15: 115 ticks, 2 bars generated. Environment synchronized in 0:00:00.074. Test passed in 0:00:00.240 (including ticks preprocessing 0:00:00.078).
2021.06.09 09:57:52.051 EURUSD,M15: total time from login to stop testing 0:00:00.314 (including 0:00:00.074 for history data synchronization)
2021.06.09 09:57:52.051 271 Mb memory used including 2 Mb of history data, 64 Mb of tick data
2021.06.09 09:57:52.051 log file "C:\Users\Lasser Franz\AppData\Roaming\MetaQuotes\Tester\D0E8209F77C8CF37AD8BF550E51FF075\Agent-127.0.0.1-3000\logs\20210609.log" written
2021.06.09 09:57:52.052 test Experts\Test EA-1manuel.ex5 on EURUSD,M15 thread finished
2021.06.09 09:57:52.061 prepare for shutdown
Guten Tag, hier bin ich wieder mal mit einem - für mich - Riesenproblem.
Ich bin immer noch beim Versuch, einen EA zu schreiben und zum Laufen zu bringen.
Der Compiler gibt keinen Error aus, aber der Strategietest.
Die Fehlermeldung des Strategietest haber ich oben mit Schrifttarbe rot hervorgehoben, den Report und den EA habe ich als Datei angehängt.
Vielleicht kann mir jemand einen Tip geben?
Danke
Was ist das Problem?
In der Zeile 195 gibt es ein Array auf das mit einem zu großen (=größer als seine Größe) oder zu kleinen (-1?) zugegriffen wird.
Also mit dem Debugger den Index und die Array-Größe überprüfen. Dynamischen Array muss immer die benötigte Größe mit ArrayResize() zugewiesen werden.
Im Editor Kursor auf die Funktion stellen F1 drücken und das Beispiel studieren.
Hallo und guten Morgen,
ich habe mir deinen EA kurz angeschaut und m.E. liegt das Problem darin, dass du in Zeile 195 auf das
Array mrate zugreifst, es aber in Zeile 175 lediglich als (leeres) Array deklarierst.
Weil du die Zeile 178 auskommentiert hast, werden dem Array keine Elemente zugewiesen. Also nimmst
du entweder die Kommentierung von Zeile 178 wieder herrraus oder du fügst dem Array über die Funktion
ArrayResize Elemente hinzu (vor Zeile 195)
Ich hoffe, ich kann dir damit helfen.
Viele Grüße
danke für den Hinweis, ich hoffe ichkomme damit klar.
Die Zeile 178 habe ich auskommentiert, weil ich sonst auf diesen Eintrag errors bekomme. Das mach ich immer so, wenn der compiler schreit und versuch dann was anderes.
hat leider diesmal halt nicht geklappt.
Was ist das Problem?
In der Zeile 195 gibt es ein Array auf das mit einem zu großen (=größer als seine Größe) oder zu kleinen (-1?) zugegriffen wird.
Also mit dem Debugger den Index und die Array-Größe überprüfen. Dynamischen Array muss immer die benötigte Größe mit ArrayResize() zugewiesen werden.
Im Editor Kursor auf die Funktion stellen F1 drücken und das Beispiel studieren.
Danke für den Hinweis.
danke für den Hinweis, ich hoffe ichkomme damit klar.
Die Zeile 178 habe ich auskommentiert, weil ich sonst auf diesen Eintrag errors bekomme. Das mach ich immer so, wenn der compiler schreit und versuch dann was anderes.
hat leider diesmal halt nicht geklappt.
Also die Zeile 178 wieder aktiv setzen, hilft nicht.
Bitte an welche Position gehört das ArrayResize eingefügt?
Danke
Das Problem besteht darin, dass ich die Errormeldungen - jetz zumindest - nicht verstehe. Gibt es vielleicht in der Doku oder sonst wo einen Beitrag, der sich mit diesem Thema befasst?
Danke für den Hinweis.
Hinweis
Die Funktion kann nur auf dynamischen Arrays angewendet werden. Es sollte beachtet werden, dass die Größe dynamischer Arrays, die als Indikatorpuffer mit der Funktion SetIndexBuffer() definiert wurden, nicht verändert werden können. Für Indikatorpuffer werden alle Änderungen der Größe von Laufzeit-Subsystem des Terminals durchgeführt.
Die Gesamtzahl der Elemente im Array darf nicht größer als 2147483647 sein.
Bei häufigen Speicherveränderungen wird empfohlen, den dritten Parameter zu verwenden, der eine Reserve festlegt, um die Anzahl der physikalischen Speicherzuweisungen zu reduzieren. Alle nachfolgenden Aufrufe der Funktion ArrayResize führen dann nicht mehr zu einer neuen physikalischer Speicherzuweisung, in diesen Fällen ändert sich nur die Größe der ersten Dimension des Arrays im reservierten Speicherbereich. Es sei daran erinnert, dass der dritte Parameter nur dann verwendet wird, wenn die physikalische Speicherzuweisung stattfindet, zum Beispiel:
ArrayResize(arr,1000,1000); |
In diesem Fall gibt es nur zwei Speicherzuweisungen, einmal vor der Schleife mit 3000 Iterationen (dabei wird die Dimension des Arrays auf 1000 festgelegt) und das zweite Mal wenn i gleich 2000 ist. Wenn der dritte Parameter weggelassen worden wäre, würden es 2000 einzelne physikalische Speicherzuweisungen geben, welches die Ausführung des Programms verzögern würde.
Leider, ich versteh oft nicht nur die Fehler nicht, sondern auch die Erklärungen der Hilfe.
Im mrate[] sind ja Preisdaten gespeichert und diese brauche ich für meine Einstiege. Und zwar OHLC - Werte für bis zu max 5 Bars. Wie muss da der Code geschreiben sein?
Danke
Also die Zeile 178 wieder aktiv setzen, hilft nicht.
Bitte an welche Position gehört das ArrayResize eingefügt?
Danke
ArrayResize(mrate[],1000,1000)
Also das hab ich mal als Zeile 185 hinzugefügt; da kommen dann gleich mal 6 Fehler vom Compiler
']' - expression expected Test EA-1manuel.mq5 185 25
'mrate' - array required Test EA-1manuel.mq5 185 19
'BuyCondition1' - unexpected token Test EA-1manuel.mq5 197 9
'=' - unexpected token Test EA-1manuel.mq5 197 23
'>' - some operator expected Test EA-1manuel.mq5 197 40
'BuyCondition1' - undeclared identifier Test EA-1manuel.mq5 220 14
6 errors, 0 warnings 7 1
Was mach ich falsch?
Hallo,
du musst beim ArrayResize Aufruf die eckigen Klammern vom ersten Parameter weglassen - also:
ArrayResize(mrate, 1000, 1000);
Der Aufruf sollte zwischen der Deklaration und dem Zugriff auf das Array stehen - der Einfachheit halber,
könntest du ArrayResize direkt hinter die Deklaration setzen.
Viel Grüße
Dir fehlen die Grundlagen der Programmierung, da musst Du anfangen. Mal dies und mal das fragen und dann doch nicht ganz verstehen ist ein sehr umständlicher Weg:
Bezüglich der Arrays empfehle ich Dir dies:
https://www.mql5.com/de/articles/567 Grundlagen der Programmierung in MQL5: Arrays
https://www.mql5.com/de/articles/1334 Das MQL5-Kochbuch: Implementierung eines Assoziativen Arrays oder eines Lexikons für raschen Datenzugriff
Außerdem gibt es viele Beispiele in der Referenz - nutze sie!
- www.mql5.com
Hallo,
du musst beim ArrayResize Aufruf die eckigen Klammern vom ersten Parameter weglassen - also:
ArrayResize(mrate, 1000, 1000);
Der Aufruf sollte zwischen der Deklaration und dem Zugriff auf das Array stehen - der Einfachheit halber,
könntest du ArrayResize direkt hinter die Deklaration setzen.
Viel Grüße
- 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.
2021.06.09 09:57:51.551 MetaTester 5 started on 127.0.0.1:3000
2021.06.09 09:57:51.552 initialization finished
2021.06.09 09:57:51.737 login (build 2940)
2021.06.09 09:57:51.745 4372 bytes of account info loaded
2021.06.09 09:57:51.745 1470 bytes of tester parameters loaded
2021.06.09 09:57:51.745 5820 bytes of input parameters loaded
2021.06.09 09:57:51.751 18959 bytes of symbols list loaded (3852 symbols)
2021.06.09 09:57:51.751 expert file added: Experts\Test EA-1manuel.ex5. 34689 bytes loaded
2021.06.09 09:57:51.764 4868 Mb available, 60 blocks set for ticks generating
2021.06.09 09:57:51.764 initial deposit 10000.00 USD, leverage 1:25
2021.06.09 09:57:51.765 successfully initialized
2021.06.09 09:57:51.765 55 Kb of total initialization data received
2021.06.09 09:57:51.765 Intel Core i3-6100 @ 3.70GHz, 8081 MB
2021.06.09 09:57:51.818 EURUSD: symbol to be synchronized
2021.06.09 09:57:51.819 EURUSD: symbol synchronized, 3720 bytes of symbol info received
2021.06.09 09:57:51.819 EURUSD: history synchronization started
2021.06.09 09:57:51.821 EURUSD: load 27 bytes of history data to synchronize in 0:00:00.001
2021.06.09 09:57:51.821 EURUSD: history synchronized from 2015.01.02 to 2021.05.31
2021.06.09 09:57:51.922 EURUSD,M15: history cache allocated for 35065 bars and contains 30950 bars from 2020.01.02 03:00 to 2021.03.31 23:45
2021.06.09 09:57:51.922 EURUSD,M15: history begins from 2020.01.02 03:00
2021.06.09 09:57:51.923 EURUSD,M15 (AdmiralMarkets-Demo): every tick generating
2021.06.09 09:57:51.923 EURUSD,M15: testing of Experts\Test EA-1manuel.ex5 from 2021.04.01 00:00 to 2021.05.31 00:00 started with inputs:
2021.06.09 09:57:51.923 Lots=0.02
2021.06.09 09:57:51.923 TpPoints=100
2021.06.09 09:57:51.923 PartialClosePoints=50
2021.06.09 09:57:51.923 PartialCloseFactor=0.3
2021.06.09 09:57:51.923 SlPoints=100
2021.06.09 09:57:51.923 Magic=111
2021.06.09 09:57:51.923 Timeframe=0
2021.06.09 09:57:51.923 IND_MA=8
2021.06.09 09:57:51.923 IND_FRACTALS=0
2021.06.09 09:57:51.923 IND_AC=0
2021.06.09 09:57:51.923 IND_AO=0
2021.06.09 09:57:51.944 2021.04.01 00:00:00 OnInit > EA (re)start...
2021.06.09 09:57:52.047 2021.04.01 00:15:00 neuer Bar!
2021.06.09 09:57:52.047 2021.04.01 00:15:00 array out of range in 'Test EA-1manuel.mq5' (195,31)
2021.06.09 09:57:52.047 OnTick critical error
2021.06.09 09:57:52.051 EURUSD,M15: 115 ticks, 2 bars generated. Environment synchronized in 0:00:00.074. Test passed in 0:00:00.240 (including ticks preprocessing 0:00:00.078).
2021.06.09 09:57:52.051 EURUSD,M15: total time from login to stop testing 0:00:00.314 (including 0:00:00.074 for history data synchronization)
2021.06.09 09:57:52.051 271 Mb memory used including 2 Mb of history data, 64 Mb of tick data
2021.06.09 09:57:52.051 log file "C:\Users\Lasser Franz\AppData\Roaming\MetaQuotes\Tester\D0E8209F77C8CF37AD8BF550E51FF075\Agent-127.0.0.1-3000\logs\20210609.log" written
2021.06.09 09:57:52.052 test Experts\Test EA-1manuel.ex5 on EURUSD,M15 thread finished
2021.06.09 09:57:52.061 prepare for shutdown
Guten Tag, hier bin ich wieder mal mit einem - für mich - Riesenproblem.
Ich bin immer noch beim Versuch, einen EA zu schreiben und zum Laufen zu bringen.
Der Compiler gibt keinen Error aus, aber der Strategietest.
Die Fehlermeldung des Strategietest haber ich oben mit Schrifttarbe rot hervorgehoben, den Report und den EA habe ich als Datei angehängt.
Vielleicht kann mir jemand einen Tip geben?
Danke