|
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Handelssignal zu einer bestimmten Uhrzeit
Hallo!
Bräuchte mal Hilfe von einem/einer "Fachmann/Fachfrau"... Ich habe mir über das Internet mal die Grundkenntnisse für eine einfache MQL4 angeeignet. Leider bin ich nicht dahinter gekommen wie ich ein Signal zu einer (mehreren) bestimmten Uhrzeit(en) programmieren kann. Es soll z.B. um 05:13 und/oder 9:22 und/oder 14:47 usw. eine Long und eine Short Position eröffnet werden. Ich poste hier mal meine bisherige Arbeit. Würde mich sehr über kompetente Hilfe freuen. |
|
|||
Code:
string Time1 = "18:00"; if(NeuePeriodeBegonnen == true) { LongSignal = false; if(TimeCurrent() >= StrToTime(TimeToStr(TimeCurrent(),TIME_DATE) + Time1)) //TimeCurrent() für die Serverzeit des Brokers oder TimeLocal(), wenn die PC-Zeit benutzt werden soll // Zeitpunkt ist erfüllt (alle Zeitpunkte sollen oben als Variable stehen... // beliebig viele Zeitpunkte sollen möglich sein...) // Bsp.: 07:24 und 10:13 und 14:47 und und und { LongSignal = true; } } traderdoc Geändert von traderdoc (09.07.14 um 19:09 Uhr) |
|
|||
Hallo traderdoc!
Danke für die schnelle Antwort. Ich habe das jetzt mal soweit eingebaut. Bei dem Code den du mir gepostet hast verstehe ich das " LongSignal = false; " in der 5ten Zeile nicht. Ich habe das weggelassen. Brauche ich das da? Wenn ich mehrere Zeiten eintrage (Time1 und Time2 habe ich oben mal als Variable drin), wie muss ich das Time2 dann unten einbauen? Den ganzen Block für Time2, Time3, ... dann reinkopieren? 2 Fehlermeldungen bekomme ich noch beim Kompilieren (Zeile 78 und 92). Kannst du mir da auch noch Tipps geben? Danke im Voraus! |
|
|||
Code:
//+------------------------------------------------------------------+ //| Test001.mq4 | //| abc | //| http:// | //+------------------------------------------------------------------+ #property copyright "abc" #property link "http://" #property version "1.00" #property strict //--- Externe Variablen (vom Nutzer einstellbar) extern double Lots = 0.01; extern double SL_in_Pips_bzw_Punkten = 100; extern double TP_in_Pips_bzw_Punkten = 100; extern int MagicNumber = 12345; //--- Interne Variablen (nicht vom Nutzer einstellbar) datetime PeriodenStartZeit; bool NeuePeriodeBegonnen; bool LongSignal; bool ShortSignal; bool Time1Flag, Time2Flag; int LongOrder; int ShortOrder; string Time1 = "18:53", Time2 = "19:27"; //+------------------------------------------------------------------+ //| Expert Initialisierungsfunktion | //+------------------------------------------------------------------+ int OnInit() { //--- PeriodenStartZeit = Time[0]; //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert Deinitialisierungsfunktion | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert Tick-Funktion | //+------------------------------------------------------------------+ void OnTick() { //--- Überprüfung, ob neuer Periodenbeginn vorliegt if(PeriodenStartZeit != Time[0]) { NeuePeriodeBegonnen = true; PeriodenStartZeit = Time[0]; } else NeuePeriodeBegonnen = false; //--- Handelssignale ermitteln //--- Long Signal ermitteln if(NeuePeriodeBegonnen == true) { LongSignal = false; if(!Time1Flag && TimeCurrent() >= StrToTime(TimeToStr(TimeCurrent(),TIME_DATE) + Time1)) { LongSignal = true; Time1Flag = true; } if(!Time2Flag && TimeCurrent() >= StrToTime(TimeToStr(TimeCurrent(),TIME_DATE) + Time2)) { LongSignal = true; Time2Flag = true; } } //--- Short Signal ermitteln if(NeuePeriodeBegonnen == true) { ShortSignal = false; if(TimeCurrent() >= StrToTime(TimeToStr(TimeCurrent(),TIME_DATE) + Time1)) { ShortSignal = true; } } //--- Handelssignale umsetzen //--- Long Signal umsetzen if(LongSignal == true) { while(LongOrder<=0) { LongOrder = OrderSend(Symbol(),OP_BUY,Lots,Ask,50,SL_in_Pips_bzw_Punkten,TP_in_Pips_bzw_Punkten,"Test001",MagicNumber,0,Green); } } //--- Short Signal umsetzen if(ShortSignal == true) { while(ShortOrder<=0) { ShortOrder = OrderSend(Symbol(),OP_SELL,Lots,Bid,50,SL_in_Pips_bzw_Punkten,TP_in_Pips_bzw_Punkten,"Test001",MagicNumber,0,Red); } } } //+------------------------------------------------------------------+ Das LongSignal = false; braucht nur einmal gesetzt werden. Entweder die Zeit wurde erreicht, dann wird LongSignal = true; gesetzt, ansonsten bleibt die Variable false! (Verkürzung des Codes!) Entsprechend für Sell noch coden. traderdoc |
|
|||
Fertig! Keine Fehlermeldung mehr, danke!
Leider klappt es beim Strategietester irgendwie nicht. Die erste Kerze, egal ob M1, M5, M15, usw. schafft der Tester, dann bleibt er hängen... Es wird auch bei H1 kein Trade ausgeführt... Siehst du vielleicht auf den ersten Blick warum der EA nicht funktioniert? |
|
|||
LongOrder = OrderSend(Symbol(),OP_BUY,Lots,Ask,50,SL_in_Pips_bzw_Punkten,TP_in_Pips_bzw_Punkten,"Test001",MagicNumber,0,Green);
Da müssen die Kurse der realen SL- und TP-Werte stehen. traderdoc |
|
|||
Ich habe nun Variablen für SL und TP eingefügt.
Fehlermeldung gibt es keine. Beim Strategietester läuft immer noch nur die erste Kerze durch, bevor der EA hängen bleibt. Order wird um 8:23 auch keine platziert im H1-Durchlauf. Als mql4-Anfänger habe ich leider keine Ahnung wo ich da Fehler mache. Würdest du mir vielleicht noch weiter helfen, bis das Ding läuft? Der EA soll ja immer zur Uhrzeit "x" eine Long- und eine Short-Order aufgeben. Es sollen beliebig viele Uhrzeiten vorgegeben werden können. Die Anzahl der offenen Trades soll nicht beschränkt sein, aber z.B. am Dienstag um 13:47 soll nur 1 Long- und 1 Short-Trade geöffnet werden. |
|
|||
Nein, in die Funktion
LongOrder = OrderSend(Symbol(),OP_BUY,Lots,Ask,50,SL_Long,TP_L ong,"Test001",MagicNumber,0,Green); muß nach Ask, der Kurswert des StopLoss rein, also wenn die Order bei 1,2345 geöffnet werden soll, dann liegt der StopLoss bei 1,2295 und der TP z.B. bei 1,2395, d.h. in diese Funktion gehören keine Pipwerte von SL und TP rein, sondern, die Kurswerte! Ansonsten meine Empfehlung, das Handbuch bitte nehmen, auch gern die Online-Hilfe des MT4 und unter den Funktionen nachschauen. traderdoc |
|
|||
Zitat:
|
Lesezeichen |
Stichworte |
bestimmte uhrzeit, handelssignal, handelssignal uhrueit, mql4, programmierung, programmierung metatrader, uhrzeit, zeit |
|
|