Fehler, Irrtümer, Fragen - Seite 74

 

Beim Testen des Expert Advisors bin ich zufällig auf die Funktion Sleep() im Tester gestoßen, die meiner Meinung nach nicht korrekt funktioniert. Der Punkt ist der folgende:

schließt der Expert Advisor alle Positionen um 23:00 Uhr, wenn der Gesamtgewinn höher ist als der angegebene Wert (Funktion CloseAll()). Nach dem Schließen der nächsten Position wird durch Sleep(10000) eine Verzögerung von 10 Sekunden eingeleitet.

Dies ist der Inhalt des Protokolls:

FP 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 CloseAll Profit: 3030.66
JD 0 Trade 04:31:04 Sofortiger Verkauf von 0,80 EURAUD zu 1,56474 (1,56474 / 1,56558 / 1,56474)
JH 0 Trades 04:31:04 deal #85 sell 0.80 EURAUD at 1.56474 done (based on order #85)
HL 0 Trade 04:31:04 Geschäft durchgeführt [#85 sell 0.80 EURAUD at 1.56474]
HI 0 Trade 04:31:04 order executed sell 0.80 EURAUD at 1.56474 [#85 sell 0.80 EURAUD at 1.56474]
QE 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 Position von EURAUD soll geschlossen werden
PN 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 23:0:0
FG 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 Sleep 10 cek.
RO 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 23:0:0
QD 0 Trade 04:31:04 buy 1.00 USDJPY at 90.444 (90.417 / 90.444 / 90.417)
NS 0 Trades 04:31:04 deal #86 buy 1.00 USDJPY at 90.444 done (based on order #86)
MJ 0 Trade 04:31:04 Geschäft durchgeführt [#86 buy 1.00 USDJPY at 90.444]
JS 0 Trade 04:31:04 order executed buy 1.00 at 90.444 [#86 buy 1.00 USDJPY at 90.444]
JL 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 Position von USDJPY soll geschlossen werden
JI 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 23:0:0
PN 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 Sleep 10 cek.
DF 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 23:0:0
QN 0 Trade 04:31:04 buy 0.80 AUDUSD at 0.90001 (0.89967 / 0.90001 / 0.89967)
IH 0 Trades 04:31:04 deal #87 buy 0.80 AUDUSD at 0.90001 done (based on order #87)
KQ 0 Trade 04:31:04 Geschäft durchgeführt [#87 buy 0.80 AUDUSD at 0.90001]
RL 0 Trade 04:31:04 Auftrag ausgeführt buy 0.80 at 0.90001 [#87 buy 0.80 AUDUSD at 0.90001]
EG 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 Position von AUDUSD soll geschlossen werden
LP 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 23:0:0
JI 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 Sleep 10 cek.

NQ 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 23:0:0

Wie wir sehen können, ist die Zeit vor und nach der Verzögerung gleich lang. Dies geschieht jedoch nur, wenn TimeCurrent() == 0 ist.

Wenn nicht, funktioniert der Slip einwandfrei. Zum Beispiel:

MD 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:39 CloseAll Profit: 3382.28
KQ 0 Handel 04:30:39 ET ET 0,70 EURUSD bei 1,44090 (1,44090 / 1,44108 / 1,44090)
IE 0 Trades 04:30:39 deal #27 sell 0.70 EURUSD at 1.44090 done (based on order #27)
CI 0 Trade 04:30:39 deal performed [#27 sell 0.70 EURUSD at 1.44090]
EL 0 Trade 04:30:39 order executed sell 0.70 at 1.44090 [#27 sell 0.70 EURUSD at 1.44090]
DH 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:39
JR 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:3923:0:7
MK 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:39 Sleep 10 cek.
EP 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:3923:0:15
DE 0 Handel 04:30:39 ET 0,80 AUDUSD bei 0,91951 (0,91951 / 0,91993 / 0,91951)
CJ 0 Trades 04:30:39 deal #28 sell 0.80 AUDUSD at 0.91951 done (based on order #28)
HR 0 Trade 04:30:39 durchgeführt [#28 sell 0.80 AUDUSD at 0.91951]
HH 0 Trade 04:30:39 order executed sell 0.80 AUDUSD at 0.91951 [#28 sell 0.80 AUDUSD at 0.91951]
LS 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:39 AUDUSD soll geschlossen werden
QL 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:3923:0:15
ED 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:39 10 cek Sleep.
LO 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:3923:0:25
DD 0 Trade 04:30:39 kaufen 0,60 EURAUD bei 1,56727 (1,56632 / 1,56727 / 1,56632)
LN 0 Trades 04:30:39 deal #29 buy 0.60 EURAUD at 1.56727 done (based on order #29)
FK 0 Trade 04:30:39 Geschäft durchgeführt [#29 buy 0.60 EURAUD at 1.56727]
IR 0 Trade 04:30:39 Auftrag ausgeführt buy 0.60 at 1.56727 [#29 buy 0.60 EURAUD at 1.56727]
RM 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:39 Position von EURAUD soll geschlossen werden
FE 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:3923:0:25
GN 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:39 Sleep 10 cek.

QE 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:3923:0:35

Code zum Schließen einer Position:

if(m_trade[j].PositionClose(m_symbol[j].Name()))
           {
            PosCloseCount--;
            printf("Position by %s to be closed",m_symbol[j].Name());
            MqlDateTime  dt_struct;
            TimeCurrent(dt_struct);
            printf("%u:%u:%u",dt_struct.hour,dt_struct.min,dt_struct.sec);
            Sleep(10000);
            Print("Sleep 10 cek.");
            TimeCurrent(dt_struct);
            printf("%u:%u:%u",dt_struct.hour,dt_struct.min,dt_struct.sec);
           }

Aufruf der Funktion CloseAll:

   MqlDateTime  dt_struct;
   TimeCurrent(dt_struct);
   if(dt_struct.hour==2 3 && m_account.Profit()>InpProfitToClose)
     {
      Trade=false;Print("CloseAll Profit: ",m_account.Profit());
      while(PositionsTotal()>0)
         CloseAll();

Wenn wir die Bedingung ändern in

if(dt_struct.hour==23 && dt_struct.min>0 && m_account.Profit()>InpProfitToClose)
es liegt kein Fehler vor.
Документация по MQL5: Общие функции / Sleep
Документация по MQL5: Общие функции / Sleep
  • www.mql5.com
Общие функции / Sleep - Документация по MQL5
 
joo:
Meine Botschaft ist also nicht umsonst, wie ich schon dachte?

Ja, wir haben das StringToTime-Verhalten korrigiert, vielen Dank.

 
Valmars:

Beim Testen des Expert Advisors bin ich zufällig auf die Funktion Sleep() im Tester gestoßen, die meiner Meinung nach nicht korrekt funktioniert. Der Punkt ist der folgende:

Sehr interessant. Schauen wir mal.
 
Ich öffne die Registerkarte "Nachrichten" und da ist... - es ist die falsche Nachricht. Habe ich etwas verpasst?
 
x100intraday:
Ich öffne die Registerkarte "Nachrichten" und dort... - es ist die falsche Nachricht. Habe ich etwas verpasst?

Stellen Sie die Sprachen ein, in denen Sie die Nachrichten erhalten möchten.


 
Rosh:

Stellen Sie die Sprachen ein, in denen Sie die Nachrichten erhalten möchten.


Das ist es nicht. Es ist irgendwie mit mt5 Forum "Nachrichten" gesprenkelt, es hat nichts zu tun mit Forex Nachrichten. Nicht nur pro-auto Updates in letzter Zeit, aber ich habe die mt5 Distribution neu heruntergeladen und installiert, es ist jetzt fast eine Woche her. Ich weiß nicht, wie es unter der Woche war, weil ich nicht auf die Registerkarte "Nachrichten" gegangen bin, aber ich habe es jetzt entdeckt:

Seltsame Finanznachrichten

 
x100intraday:

Das ist es nicht. Es ist irgendwie mit mt5 Forum "Nachrichten" gesprenkelt, es hat nichts mit Forex Nachrichten zu tun. Ich habe nicht nur pro-auto-uploaded es vor kurzem, ich habe die mt5-Distribution wieder heruntergeladen und installiert, es ist fast eine Woche her jetzt. Ich weiß nicht, wie es unter der Woche war, denn ich bin nicht auf die Registerkarte "Nachrichten" gekommen, aber jetzt habe ich sie entdeckt:

Dies ist unser Demoserver, der MQL5.com-Nachrichten anstelle von fehlenden Forex-Nachrichten sendet (wir haben nicht das Recht, kostenlose Nachrichten von anderen zu verbreiten).

Wenn Sie diese nicht sehen möchten, deaktivieren Sie einfach das entsprechende Kontrollkästchen im Abschnitt Nachrichtenkategorien des Rechtsklick-Menüs.

 

Nach dem automatischen Update meldete der zuvor funktionierende EA, dass er die Zeitreihen nicht kopieren konnte. Das Problem wurde gelöst , indem der EA entladen und erneut geladen wurde. Frage: Sollte dieses Ergebnis der automatischen Aktualisierung immer erwartet werden oder handelt es sich um einen Terminalfehler, der behoben wird?

Документация по MQL5: Программы MQL5 / Выполнение программ
Документация по MQL5: Программы MQL5 / Выполнение программ
  • www.mql5.com
Программы MQL5 / Выполнение программ - Документация по MQL5
 
Yedelkin:

Nach dem automatischen Update meldete der zuvor funktionierende EA, dass er die Zeitreihen nicht kopieren konnte. Das Problem wurde gelöst , indem der EA entladen und erneut geladen wurde. Frage: Sollte dieses Ergebnis der automatischen Aktualisierung immer erwartet werden oder handelt es sich um einen Terminalfehler, der behoben wird?

Bitte geben Sie weitere Einzelheiten an (Protokolle, Screenshots usw.).

Ohne diese Angaben ist es nicht möglich, eine fundierte Antwort zu geben.

 
Renat:

Bitte geben Sie weitere Einzelheiten an (Protokolle, Screenshots usw.).

Ohne dies ist es unmöglich, eine vernünftige Antwort zu geben.

GUT. Demokonto auf MQ-Server, Logdatei ist angehängt (2010729.log), Startzeitpunkt des automatischen Updates ist 20:54, um 22:36 habe ich Expert Advisor selbst gelöscht und nach einer Minute wieder hochgeladen.

In EA gibt es eine einfache Typenprüfung:

if(CopyHigh(Symbol(),0,0,bars,high)<bars || CopyClose(Symbol(),0,0,bars,close)<bars || CopyLow(Symbol(),0,0,bars,low)<bars || CopyTime(Symbol(),0,0,bars,time)<bars)
  {
   Print("Can't copy timeseries!");
   return;
  }

Dementsprechend gingen nach der automatischen Aktualisierung Meldungen (Datei 20100729copy.log). Im Allgemeinen ist dies schon einmal vorgekommen, aber irgendwie nicht darauf geachtet.

Nach dem Neuladen des Expert Advisors sind auch die Linien der Eröffnungs- und Stop-Loss-Kurse im Chart verschwunden.

Darf ich dem Gesagten noch etwas hinzufügen?