Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   EA schließt ungewollt Positionen (http://www.expert-advisor.com/forum/showthread.php?t=6048)

AVT 20.03.18 11:05

EA schließt ungewollt Positionen
 
Ja, ich weiß ein Programm tut nur das was man ihm sagt. Heute habe ihn angeschrien "wo zum Teufel hab ich Dir gesagt, Du sollst zumachen? Muß ich wieder Deine Sch.. manuell korrigieren!" Vielleicht ist der aber unschuldig, folgendes war sein Auftrag:
Code:

//====================== trading allowed
DayOK=(DayOfWeek()>=DayStart && DayOfWeek()<=DayEnd); // 1-5
HourOK=(Hour()>=HStart && Hour()<=HEnd);              // 10-18 servertime
//======================= check allowed trading time
if(DayOK && HourOK)


//======================= exit conditions
  ExitL=( TimeHour(TimeCurrent())>HEnd ); // trade time over, 18 server
  ExitS=( TimeHour(TimeCurrent())>HEnd );
//======================= monitoring account balance
  if(EABalance>=DayProfit || EABalance<=-(DayLoss)) DayStop=true;
  else                                              DayStop=false;

//====================== no open orders by this EA
  if( FuncCheckRunning()==-1  // nothing running
      && !DayStop              // money still ok
      && EnterL )              // long signal
  { long order instructions }
}  // == end if(DayOK && HourOK)

//====================== trading time over
// == close all orders if there is still one running
else
{ closing order instructions }

und das hat er daraus gemacht:
Code:

1.) 10:00:00-10:12:15 EP 12.242,31 SL 12.286,30 TP 12.221,38 EX 12.253,82
2.) 10:00:01-10:14:51 EP 12.242,56 SL 12.286,30 TP 12.199,74 EX 12.255,94

Die einzige Anweisung zum Schließen im ganzen Code sind die ExitL und ExitS, sonst nix. DayStop erlaubt/verbietet nur neue Positionen zu eröffnen. Und die Exit Bedingungen selbst sind doch korrekt formuliert.
Ich bin ratlos. Habt Ihr eine Idee?
Danke. AVT

traderdoc 20.03.18 12:15

Hier werden aufgrund von
===================== exit conditions
ExitL=( TimeHour(TimeCurrent())>HEnd ); // trade time over, 18 server
ExitS=( TimeHour(TimeCurrent())>HEnd

ExitL und ExitS immer! 0 sein, weil
hier
if(DayOK && HourOK)
nur reingesprungen wird , wenn HourOK auch true ist. Und das ist nur true, nachdem
HourOK=(Hour()>=HStart && Hour()<=HEnd);
true ist.

D.h., wenn oben eingesprungen wird, dann muss die Stunde <= HEnd sein.
Und damit muss z.B. ExitL immer 0 sein, weil
TimeHour(TimeCurrent()>HEnd nie erfüllt sein kann.

traderdoc

AVT 20.03.18 13:12

Zitat:

Zitat von traderdoc (Beitrag 40607)
... wenn oben eingesprungen wird, dann muss die Stunde <= HEnd sein.
Und damit muss z.B. ExitL immer 0 sein, weil
TimeHour(TimeCurrent()>HEnd nie erfüllt sein kann.

traderdoc da hast Du vollkommen recht, überflüssig (kommt davon wenn man einen EA auf was anderes umstricken will), kann auskommentiert werden, das else !DayOK und !HourOK macht das ja schon.

Dennoch erklärt es nicht, warum der plötzlich aussteigt, denn egal ob's nun drin steht (und niemals eintrifft) oder gar nicht erwähnt wird, beides heißt doch: zur Tradingzeit kein Exit!
Und genau das war hier ja die Absicht: laß' laufen bis HEnd, entweder man wird ausgestoppt (durch TP oder SL) oder der Tag ist zuende, dann nehmen wir den Rest.

Das mit dem Lachen wird wohl momentan nix. AVT

traderdoc 20.03.18 14:30

Plötzlich aussteigen? Ja dann würde ich mal einige Print-Funktionen einbauen, um das zu überwachen, mit Ausgabe der Zeit, wann er in die Close-Funktion springt usw. Das muss doch eruierbar sein.

traderdoc

AVT 20.03.18 15:54

gelöst, DeInit mit Zeitfensterwechsel
 
Zitat:

Zitat von traderdoc (Beitrag 40612)
Plötzlich aussteigen? Das muss doch eruierbar sein.

traderdoc, danke für Deine Hilfe. Ich weiß jetzt woran es liegt:

Ich habe im DeInit ein CloseAllRunnings, sicherheitshalber falls ich mal vergesse beim Zumachen nachzusehen, ob noch irgendwas an Positionen offen ist. Und dann habe ich in dem Chart kurz die Zeiteinheit geändert, um was nachzusehen - und bumms war ich draußen.

Und was lerne ich daraus?
1. DeInit mit Reason Code-Auswertung versehen, damit es leichter zu sehen ist.
2. EA in Fenster ziehen und das NICHT mehr anrühren!
:D Klappt doch


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:11 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum