(MQL5 EA-Problem) Position wird sofort wieder geschlossen und EA beendet

 

Hallo werte Community,


hoffentlich kann mir hier jemand weiterhelfen?

Ich versuche meine Strategie in einen EA zu integrieren, allerdings funktioniert das Grundgerüst "my_first_ea.mq5" von Samuel Olowoyo ( https://www.mql5.com/de/articles/100 ) schon nicht.

Nach dem Starten des Debugging aus dem MT5-Editor oder auch nach dem Starten des Strategietester aus dem MT5 läuft der Chart los.

Bei Beginn der 2. Kerze wird z.B. eine Verkaufs-Order gesetzt. Nach dem die Programm-Routine aus der Verkaufs-Order läuft, springt er sofort in die OnDeinit-Routine und beendet sich.

Vor dem Beenden wird die Position noch mit einer Kaufs-Order zum gleichen Level geschlossen.

Hier das Logbuch vom EA-Tester:

FH      0       20:51:42.086    Startup MetaTester 5 x64 build 1881 (09 Jul 2018)
FM      0       20:51:42.097    Server  MetaTester 5 started on 127.0.0.1:3000
NF      0       20:51:42.097    Startup initialization finished
DE      0       20:51:42.214    127.0.0.1       login (build 1881)
LS      0       20:51:42.229    Network 3860 bytes of account info loaded
IK      0       20:51:42.229    Tester  deposit currency is EUR
KR      0       20:51:42.229    Network 1482 bytes of tester parameters loaded
HE      0       20:51:42.229    Network 3772 bytes of input parameters loaded
IM      0       20:51:42.237    Network 9499 bytes of symbols list loaded
OE      0       20:51:42.237    Tester  expert file added: Experts\my_first_ea.ex5. 26159 bytes loaded
FL      0       20:51:42.251    Tester  initial deposit 50000.00 EUR, leverage 1:100
RE      0       20:51:42.255    Tester  successfully initialized
JQ      0       20:51:42.255    Network 37 Kb of total initialization data received
QK      0       20:51:42.255    Tester  Intel Core i7-3630QM  @ 2.40GHz, 16331 MB
CQ      0       20:51:42.790    Symbols DDU8: symbol to be synchronized
IJ      0       20:51:42.791    Symbols DDU8: symbol synchronized, 3624 bytes of symbol info received
OF      0       20:51:42.791    History DDU8: history synchronization started
EO      0       20:51:42.793    History DDU8: load 23 bytes of history data to synchronize in 0:00:00.000
JJ      0       20:51:42.793    History DDU8: history synchronized from 2017.12.18 to 2018.07.27
ED      0       20:51:42.793    Ticks   DDU8: ticks synchronization started
ID      0       20:51:42.802    Ticks   DDU8: load 30 bytes of tick data to synchronize in 0:00:00.000
GJ      0       20:51:42.821    History DDU8,M3: history cache allocated for 196114 bars and contains 11401 bars from 2017.12.18 11:12 to 2018.07.22 04:00
MD      0       20:51:42.822    History DDU8,M3: history begins from 2017.12.18 11:12
NM      0       20:51:42.823    Tester  DDU8,M3 (AMPGlobalClearing-Demo-CQG): generating based on real ticks
OR      0       20:51:42.823    Tester  testing with execution delay 100 milliseconds
ND      0       20:51:42.823    Tester  DDU8,M3: testing of Experts\my_first_ea.ex5 from 2018.07.23 00:00 to 2018.07.27 00:00 started with inputs:
EJ      0       20:51:42.823    Tester    StopLoss=30
HS      0       20:51:42.823    Tester    TakeProfit=100
JS      0       20:51:42.823    Tester    ADX_Period=8
HG      0       20:51:42.823    Tester    MA_Period=8
ME      0       20:51:42.823    Tester    EA_Magic=12345
QN      0       20:51:42.823    Tester    Adx_Min=22
QI      0       20:51:42.823    Tester    Lot=1
LK      3       20:51:42.881    Ticks   DDU8 : 2018.07.23 00:00 - 2018.07.27 00:00  no real ticks, every tick generation used
LF      0       20:51:42.881    my_first_ea (DDU8,M3)   2018.07.23 06:00:00   expiration=3
RO      0       20:51:42.881    my_first_ea (DDU8,M3)   2018.07.23 06:00:00   filling=1
JD      0       20:51:44.154    my_first_ea (DDU8,M3)   2018.07.23 06:03:00   expiration=3
DJ      0       20:51:44.154    my_first_ea (DDU8,M3)   2018.07.23 06:03:00   filling=1
FN      0       20:51:44.154    my_first_ea (DDU8,M3)   2018.07.23 06:03:00   Alert: Demokonto
RE      0       20:51:44.154    Symbols EURUSD: symbol to be synchronized
CM      0       20:51:44.155    Symbols EURUSD: symbol synchronized, 3544 bytes of symbol info received
MI      0       20:51:44.155    History EURUSD: history synchronization started
DQ      0       20:51:44.158    History EURUSD: load 27 bytes of history data to synchronize in 0:00:00.016
CQ      0       20:51:44.158    History EURUSD: history synchronized from 2017.01.02 to 2018.07.27
IG      0       20:51:44.159    Ticks   EURUSD: ticks synchronization started
PO      0       20:51:44.173    Ticks   EURUSD: load 34 bytes of tick data to synchronize in 0:00:00.000
FO      3       20:51:44.243    Ticks   EURUSD : 2018.07.23 00:00 - 2018.07.27 00:00  no real ticks, every tick generation used
CG      0       20:51:44.244    Trade   2018.07.23 06:03:00   exchange sell 1.00 DDU8 at 12525.0 sl: 12528.0 tp: 12515.0 (12525.0 / 12525.5 / 12525.0)
RD      0       20:51:44.244    Symbols EURAUD: symbol to be synchronized
ON      0       20:51:44.245    Symbols EURAUD: symbol synchronized, 3544 bytes of symbol info received
DP      0       20:51:44.245    History EURAUD: history synchronization started
LE      3       20:51:44.246    History no data synchronized, 27 bytes read
KM      2       20:51:44.246    Symbols symbol EURAUD history synchronization error
KI      0       20:51:44.246    Symbols AUDUSD: symbol to be synchronized
KR      0       20:51:44.247    Symbols AUDUSD: symbol synchronized, 3544 bytes of symbol info received
DD      0       20:51:44.247    History AUDUSD: history synchronization started
LP      3       20:51:44.248    History no data synchronized, 27 bytes read
GI      2       20:51:44.248    Symbols symbol AUDUSD history synchronization error
ES      0       20:51:44.248    Trades  2018.07.23 06:03:00   deal #2 sell 1.00 DDU8 at 12525.0 done (based on order #2)
DL      0       20:51:44.248    Trade   2018.07.23 06:03:00   deal performed [#2 sell 1.00 DDU8 at 12525.0]
DQ      0       20:51:44.248    Trade   2018.07.23 06:03:00   order performed sell 1.00 at 12525.0 [#2 sell 1.00 DDU8 at 12525.0]
DH      0       20:51:44.252    my_first_ea (DDU8,M3)   2018.07.23 06:03:00   Alert: A Sell order has been successfully placed with Ticket#:2!!
EE      0       20:51:44.252    Trade   2018.07.23 06:03:00   position closed due end of test at 12525.0 [#2 sell 1.00 DDU8 12525.0 sl: 12528.0 tp: 12515.0]
OP      2       20:51:44.252    Symbols 2018.07.23 06:03:00  no prices for symbol EURAUD (1970.01.01 00:00:00 0.00000, 0.00000)
MF      2       20:51:44.252    Symbols 2018.07.23 06:03:00  no prices for symbol AUDUSD (1970.01.01 00:00:00 0.00000, 0.00000)
GH      0       20:51:44.252    Trades  2018.07.23 06:03:00   deal #3 buy 1.00 DDU8 at 12525.0 done (based on order #3)
JG      0       20:51:44.252    Trade   2018.07.23 06:03:00   deal performed [#3 buy 1.00 DDU8 at 12525.0]
DN      0       20:51:44.252    Trade   2018.07.23 06:03:00   order performed buy 1.00 at 12525.0 [#3 buy 1.00 DDU8 at 12525.0]
QQ      0       20:51:44.253    Tester  final balance 49998.26 EUR
OG      0       20:51:44.253    my_first_ea (DDU8,M3)   2018.07.23 06:03:00   OnDeinit_Uninitalization reason code = 1
GK      0       20:51:44.253    my_first_ea (DDU8,M3)   2018.07.23 06:03:00   OnDeinit_UninitReason = Program my_first_ea.mq5 was removed from chart
MH      0       20:51:44.253    my_first_ea (DDU8,M3)   2018.07.23 06:03:00   DeInit Reason: 1
QR      0       20:51:44.253    my_first_ea (DDU8,M3)   2018.07.23 06:03:00   Symbol: DDU8 // Period :3
FE      0       20:51:44.258    Tester  DDU8,M3: 189 ticks, 2 bars generated. Environment synchronized in 0:00:00.530. Test passed in 0:00:01.517 (including ticks preprocessing 0:00:00.063).
LQ      0       20:51:44.258    Tester  DDU8,M3: total time from login to stop testing 0:00:02.047 (including 0:00:00.561 for history data synchronization)
DR      0       20:51:44.258    Tester  190 total ticks for all symbols
IJ      0       20:51:44.258    Tester  DDU8: generate 226213 ticks in 0:00:00.016, passed to tester 2632 ticks
FI      0       20:51:44.258    Tester  EURUSD: generate 639336 ticks in 0:00:00.047, passed to tester 9014 ticks
QS      0       20:51:44.258    Tester  4500 Mb memory used including 11 Mb of history data, 64 Mb of tick data
NS      0       20:51:44.258    Tester  log file "C:\Users\Boetti\AppData\Roaming\MetaQuotes\Tester\65D1CFCD3F6A1A06FDD09AF8B01AA7EF\Agent-127.0.0.1-3000\logs\20180729.log" written
ER      3       20:51:44.371    127.0.0.1       MetaTester 5 forced to stop

Vor der gelb markierten Stelle wurde die Sell-Order gesetzt... dann der EA geschlossen und darauf hin die Buy-Order ausgeführt.

Da ich auch einen anderen EA mit Bolinger-Bänder getestet habe, der das gleiche Problem hatte, gehe ich davon aus, dass mein Problem nicht im EA selbst liegt.

Ich nutze die MT5-Demo-Version von AmpFutures https://www.ampfutures.com/metatrader/  (Version 5.0 build 1881)

Der OrderCheck vor dem OrderSend….

OrderCheck(mrequest,mcheckresult);

…. gibt folgende Rückmeldung

MqlTradeCheckResult
{  retcode:0 balance:50000.0 equity:50000.0 profit:0.0 margin:2132.0 margin_free:47868.0 margin_level:2345.215759849906135059 comment:"Done" reserved:[128] }

Hier noch die Werte von...

OrderSend(mrequest,mresult);

MqlTradeRequest

{  action:TRADE_ACTION_DEAL magic:12345 order:0 symbol:"DDU8" volume:1.0 price:12525.0 stoplimit:0.0 sl:12528.0 tp:12515.0 deviation:100
type:ORDER_TYPE_SELL type_filling:ORDER_FILLING_FOK type_time:ORDER_TIME_GTC expiration… }

MqlTradeResult

{  retcode:10009 deal:2 order:2 volume:1.0 price:12525.0 bid:12525.0 ask:12525.5 comment:"Request executed" request_id:0 retcode_external:0 reserved:[124] }


Ich hoffe, dass mir hier jemand helfen kann. Solltet Ihr noch weitere Infos benötigen - einfach melden.

Vielen Dank schon mal vorab und

freundliche Grüße

Tobias

Schrittweiser Leitfaden für Anfänger zum Schreiben eines Expert Advisors in MQL5
Schrittweiser Leitfaden für Anfänger zum Schreiben eines Expert Advisors in MQL5
  • www.mql5.com
Dieser Beitrag richtet sich an Anfänger, die wissen möchten, wie man einen einfachen Expert Advisor (EA) in der neuen MQL5-Sprache schreibt. Beginnen wir also zunächst mit der Festlegung dessen, was unser Expert Advisor können, und sehen uns dann an, wie wir festlegen können, wie er dies ausführen soll. 1. Handels-Strategie Er überprüft einen...
 

Mir scheint, Du handelst DDU8 (was immer das ist) und dafür gibt es keine hist. Daten - könnte das sein?

Tester  DDU8,M3: 189 ticks, 2 bars generated. Environment synchronized in 0:00:00.530. Test passed in 0:00:01.517 (including ticks preprocessing 0:00:00.063).
  1. Versuch die ersten Tests mit EURUSD?
  2. Versuch doch einmal das Programm aus diesem Artikel: https://www.mql5.com/en/articles/4951?
Visual strategy builder. Creating trading robots without programming
Visual strategy builder. Creating trading robots without programming
  • www.mql5.com
Algotrading and the ability to check trading ideas on historical data in the strategy tester are the most important functions of the MetaTrader5 trading platform. But in order to use the trading strategy in automatic trading mode on a real time chart or in a strategy tester, it needs to be programmed and turned into an executable file (Expert...
 

Danke für die Ideen..DDU8 ist bei mir der September-Kontrakt vom DAX-Future. Historische Daten sind verfügbar.

EURUSD habe ich genau das gleich Problem. Habe ich auch schon getestet.

Bekomme ich bei der Demo auch einen Source-Code raus? Vermutlich nicht oder ?

 
MH      0       20:51:44.253    my_first_ea (DDU8,M3)   2018.07.23 06:03:00   DeInit Reason: 1


such dir mal den Reason für die DeInit funktion raus

 

Bin mir nicht ganz sicher, was Du mir damit sagen möchtest... evtl. ist es noch zu früh am Morgen  ;-)

https://www.mql5.com/en/docs/constants/namedconstants/uninit -> Hier steht eine Liste mit Reason-Codes.

"1" bedeutet in dem Fall, dass das Programm vom Chart entfernt wurde. Dies steht ja auch schon 1 Zeile über dem "DeInit Reason: 1" -> "OnDeinit_UninitReason = Program my_first_ea.mq5 was removed from Chart"

Aber warum ist mir nicht klar bzw. was ich dagegen tun kann!?

https://www.mql5.com/en/forum/374 -> hier wird ein Bug beschrieben, der bei einem Timeframe-Wechsel auftritt. Bin mir aber nicht sicher, ob dies bei mir auch der Fall ist, da ich meiner Ansicht nach die Timeframe nicht mehr wechsle.


Beim Ablauf ist es bei mir so, wenn ich eine falsche Lot-Größe programmiere, kommt als Message eben "falsche Lot-Size", aber der Chart läuft Kerze für Kerze beim EA-Tester fröhlich weiter und der EA beendet sich auch nicht und will halt immer wieder eine Position eröffnen.

Nur sobald ich die Lot-Size im Programm wieder z.B. auf 1 setze, wird eine Order gesetzt, dann wird diese eben sofort wieder geschlossen und der EA beendet sich. D.h. auch hier findet z.B. kein Timeframe-Wechsel statt. (Habe den Tester und die Debug-Einstellungen im Editor auf z.B. EURUSD und M3 gestellt).


Von daher verstehe ich Deinen Hinweis bzw. Frage nicht.

Documentation on MQL5: Constants, Enumerations and Structures / Named Constants / Uninitialization Reason Codes
Documentation on MQL5: Constants, Enumerations and Structures / Named Constants / Uninitialization Reason Codes
  • www.mql5.com
//| get text description                                             | //| Expert deinitialization function                                 |
 
Chief1504Justice:

Bin mir nicht ganz sicher, was Du mir damit sagen möchtest... evtl. ist es noch zu früh am Morgen  ;-)

https://www.mql5.com/en/docs/constants/namedconstants/uninit -> Hier steht eine Liste mit Reason-Codes.

"1" bedeutet in dem Fall, dass das Programm vom Chart entfernt wurde. Dies steht ja auch schon 1 Zeile über dem "DeInit Reason: 1" -> "OnDeinit_UninitReason = Program my_first_ea.mq5 was removed from Chart"

Aber warum ist mir nicht klar bzw. was ich dagegen tun kann!?

https://www.mql5.com/en/forum/374 -> hier wird ein Bug beschrieben, der bei einem Timeframe-Wechsel auftritt. Bin mir aber nicht sicher, ob dies bei mir auch der Fall ist, da ich meiner Ansicht nach die Timeframe nicht mehr wechsle.


Beim Ablauf ist es bei mir so, wenn ich eine falsche Lot-Größe programmiere, kommt als Message eben "falsche Lot-Size", aber der Chart läuft Kerze für Kerze beim EA-Tester fröhlich weiter und der EA beendet sich auch nicht und will halt immer wieder eine Position eröffnen.

Nur sobald ich die Lot-Size im Programm wieder z.B. auf 1 setze, wird eine Order gesetzt, dann wird diese eben sofort wieder geschlossen und der EA beendet sich. D.h. auch hier findet z.B. kein Timeframe-Wechsel statt. (Habe den Tester und die Debug-Einstellungen im Editor auf z.B. EURUSD und M3 gestellt).


Von daher verstehe ich Deinen Hinweis bzw. Frage nicht.

was für einen Zeitraum hast Du denn für den Backtest ausgewählt? Nimm mal einen wo auf jeden Fall Daten vorhanden sein müssen, letzter Monat, oder letzte Woche

 

Diesbezüglich bin ich schon auf Nummer sicher gegangen und habe den Zeitraum extra mal auf nur 23.7. - 27.7. gestellt.

Im Chart sieht man auch, das einige Kerzen davor vorhanden sind und der Tester am 23.7. seinen Testlauf beginnt.

 
Chief1504Justice:

Diesbezüglich bin ich schon auf Nummer sicher gegangen und habe den Zeitraum extra mal auf nur 23.7. - 27.7. gestellt.

Im Chart sieht man auch, das einige Kerzen davor vorhanden sind und der Tester am 23.7. seinen Testlauf beginnt.

schon einen anderen broker probiert?

 

Was ich nicht verstehe ist warum die Neueinsteiger immer ihren Code so geheim halten.


my_first_ea.ex5 klingt jetzt nicht nach dem Goldesel :--)


Einfach den Code Posten und die Lösung finden andere viel schneller als dieses im Trüben fischen.

Oder bringt ihr immer ein Zettel zum KFZ-Mechaniker ......
 

Du meinst den "geheimen" Code, auf den ich ganz oben verlinkt habe  ;-)

Ich wollte meinen ersten Post nicht unnötig aufblähen, da mir das Logbuch wichtiger war und der Code eben frei zugänglich ist.

Wenn sich jemand die Mühe machen sollte um mir zu helfen, hielt ich es am besten zu verlinken, da man sich dann eh einfach den ganzen Code herunterladen kann,

um zu schauen, ob die gleichen Probleme auftreten.

 
Chief1504Justice:

Du meinst den "geheimen" Code, auf den ich ganz oben verlinkt habe  ;-)

Ich wollte meinen ersten Post nicht unnötig aufblähen, da mir das Logbuch wichtiger war und der Code eben frei zugänglich ist.

Wenn sich jemand die Mühe machen sollte um mir zu helfen, hielt ich es am besten zu verlinken, da man sich dann eh einfach den ganzen Code herunterladen kann,

um zu schauen, ob die gleichen Probleme auftreten.

Ja du hast Recht , alles richtig gemacht. Hab das als "ich habe den code etwas modifiziert" interpretiert.


Vergiss als erstes das Code aus Artikeln funktioniert. 

Sie sind teilweise einfach nur durch den Übersetzer gejagt ...der natürlich auch den Code mitübersetzt. 

Geht schief ...

So zum Artikel ...im Artikel wurde das Symbol EURUSD genommen.

Du hast bei AMP wahrscheinlich ein Future ausgewählt. 


Habe es eben mir EURUSD und einem Hedge Konto getestet. Ermacht was :-) siehe Bild.


 

Das bekommst du auch hin. 

Dann fängst du an und spielst damit ein wenig.

Vergiss AMP für den Anfang , zumindest die Futures.

Forex , damit funktionieren die meisten EAs auf MQL5


Gruß