Jump to content
Tom Next - Daytrading Community

breakout time range


yannik0802

Recommended Posts

Hallihallo :)

ich beschäftige mich seit kurzem mit der Programmierung in MQL4 und plane nun zur Übung einige Strategien zu programmieren.

 

Beginnen wollte ich mit der breakout open range strategie, bei der jeweils das Hoch und Tief der Periode zwischen 08:00 und 09:15 eingezeichnet wird. Es soll gehandelt werden sobald nach 09:15 der Kurs außerhalb der range schließt.

 

Die Frage ist wie bestimme ich diese Werte jetzt? Ich hab schon rausgefunden wie man ein Tageshoch bestimmen kann. Wie ich rausgefunden habe, funktioniert das so:

 

 

double Res240 = iHigh(Symbol(),0,(iHighest(Symbol(),0,MODE_HIGH,Hour(),1)));// Tageshoch

 

 

Ich verstehe allerdings nicht ganz wie ich das Hoch einer bestimmten Zeitperiode, z.b. eben von 8 bis 09:15 rausfinden kann, kann mir da zufällig jemand hier helfen?

Vielen Dank schonmal im Vorraus :)

Link to comment
Share on other sites

Du könntest das bspw. in der M15 Historie abfragen. Ganz ohne Quelltext getreu dem Motto: wenn die aktuelle Kerze als Open Time 9:15h hat, suche das Hoch/Tief der letzten 5 abgeschlossenen Kerzen. Das widerum geht mit iHighest in Kombination mit iHigh. Sicherlich gibt es elegantere Lösungen - nur eben nicht am Freitag abend crazy.gif .

  • Upvote 1
Link to comment
Share on other sites

Hm okay danke schonmal.

Aber wie genau setze ich das dann um? Könntest du mir eventuell einen Ansatz verraten? Ich bin echt am Verzweifeln mit den Uhrzeiten im MT4 :D Theoretisch muss ich ja irgendwie folgendes sagen:

 

If (TimeLocal()==9.15)
 {find?! iHigh(Symbol(),PERIOD_M15,(iHighest(Symbol(),PERIOD_M15,MODE_HIGH,5,1}

 

Das stimmt aber von vorne und hinten nicht und ich finde leider nicht raus wie es richtig funktioniert gossip.gif

 

Ich möchte das Hoch der Periode zwischen 8 und 9:15 dann als Wert rausbekommen, sodass ich halt wie folgt weitermachen kann.

 

 

If (Close[1]>Hochpunkt_der_Range)
 { signal = "long";}

 

 

Nur weiss ich eben leider nicht wie ich auf den Wert des Hochpunkts komme. Desweiteren müsste ich noch irgendwie einfügen, dass zwischen 8 und 09:15 kein trading erlaubt ist, evtl über einen bool-Befehl, der auf true geht wenn wir uns zwischen 8 und 9:15 befinden?

Also evtl so:

 

bool openingtime;

If (08.00<TimeLocal()<09.15)
   {bool openingtime=true;}
else {bool opening time=false;}
 

 

 

Dann hätte ich die beiden Bedingungen die ich möchte, allerdings macht der Code so wie erwähnt keinen Sinn und ich komme nicht weiter. Ich hoffe mir kann irgendjemand hier helfen.

Edited by whipsaw
Link to comment
Share on other sites

Du bist auf jeden Fall auf dem richtigen Weg pelo1.gif.

 

https://docs.mql4.com/series/ihighest
-> sucht die Kerze mit dem höchsten Wert

 

https://docs.mql4.com/series/ihigh
-> gibt das Hoch einer bestimmten Kerze aus

 

https://forum.mql4.com/38196
-> zeigt Beispiele zur Kombination

 

https://docs.mql4.com/dateandtime
-> zeigt die Funktionen zur Abfrage von Uhrzeiten. Für Dich sind da sicherlich TimeHour und TimeMinute interessant wink.gif.

  • Upvote 3
Link to comment
Share on other sites

Hm ich bin noch nicht wirklich weitergekommen, ich habs zwar geschafft irgendwie die Zeit zu bestimmen, aber im backtest macht er dann nicht das was er soll.

 

Ich hatte das jetzt so versucht:

 

 

 

extern int range_start_time_hour=8;
extern int range_start_time_minute=0;
extern int range_end_time_hour=9;
extern int range_end_time_minute=15;

datetime fromDT = TimeDay(TimeCurrent()) && TimeHour(range_start_time_hour) && TimeMinute(range_start_time_minute);
datetime toDT = TimeDay (TimeCurrent()) && TimeHour(range_end_time_hour) && TimeMinute(range_end_time_minute);

int fromBar = iBarShift(NULL, 0, fromDT,0),
toBar = iBarShift(NULL, 0, toDT,0),
length = fromBar - toBar + 1,
HHbar = iHighest(NULL,0, MODE_HIGH, length, toBar),
LLbar = iLowest(NULL,0, MODE_LOW, length, toBar);
double HH = High[HHbar], // iHigh(NULL,0, HHbar)
LL = Low[LLbar]; // iLow(NULL,0, LLbar)
 

 

 

 

aber irgendwas stimmt daran nicht, ich weiss einfach nicht wie ich es schaffe eine konkrete Uhrzeit(z.B. heute 8 Uhr) auszudrücken.

 

Versucht hatte ich das wie erwähnt so:

 

 

TimeDay(TimeCurrent() && TimeHour(8) && TimeMinute(15))
 

 

 

 

aber das funzt nicht. Hat jemand evtl eine andere Idee für mich? Google bringt mich nämlich auch nicht wirklich weiter. gossip.gif

Edited by whipsaw
Link to comment
Share on other sites

Ein logisches UND (=&&) macht da auch keinen Sinn. Ich würde so vorgehen: Wenn die Startuhrzeit der aktuellen M15 Kerze 9:15h entspricht, dann suche das Hoch/Tief der letzten fünf M15 Kerzen.

if (TimeHour(iTime(NULL,PERIOD_M15,0))==9 && TimeMinute(iTime(NULL,PERIOD_M15,0))==15) {
   double MyHigh = iHigh(Symbol(),Period_M15,iHighest(Symbol(),Period_M15,MODE_HIGH,5,1));
   double MyLow = iLow(Symbol(),Period_M15,iLowest(Symbol(),Period_M15,MODE_LOW,5,1));
}

Ich habe es nun nicht überprüft und ist auch sicherlich nicht die eleganteste Variante, aber eventuell hilft es Dir schon mal weiter.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...