|
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 |
|
|||
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 } 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 Ich bin ratlos. Habt Ihr eine Idee? Danke. AVT |
|
|||
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
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Zitat:
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 |
|
|||
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
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
gelöst, DeInit mit Zeitfensterwechsel
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! Klappt doch |
Lesezeichen |
Stichworte |
ea, expert advisor, mql4, order schließen, posiitonen schließen, programmierung, programmierung metatrader, programmierung mql4 |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
|
|