GAP-Close: Teil 2
Kommen wir zum 2. Teil: Der Auswertung der GAP-Close-Strategie im EURUSD. Der EURJPY und GBPUSD folgen in Kürze.
Ich hatte doch heute morgen tatsächlich angefangen, den Kurs der Vergangenheit von Hand nach GAPs an Montagen abzusuchen . Nach 30 min flimmerte es mir vor den Augen und ich hatte noch keinen GAP über 50 PIPs Abstand zum Wochenendkurs im EURUSD gefunden.
Also mal kurz gegoogelt und ich habe doch tatsächlich auf MQL4Code Base einen EA gefunden, den ich sehr gut zum Backtesten verwenden kann.
Hier der Code:
//+------------------------------------------------------------------+ //| gaps.mq4 | //| SFK Corp. | //+------------------------------------------------------------------+ #property copyright "SFK Corp." #property link "" //---- input parameters extern int min_gapsize = 1; extern double lotsize_gap = 0.1; //---- datetime order_time = 0; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { /* Thing to be done in future in this program to make it more efficient and more powerful: 1. Make the dicission of the quantity of lots used according to the scillators; 2. This program will catch the gaps. Things to ware of: 1. the spread; 2. excuting the order not on the gap ends a little bit less. */ // Defining the variables to decide. Print("order time", order_time); double current_openprice = iOpen(Symbol(), PERIOD_M15, 0); double previous_highprice = iHigh(Symbol(), PERIOD_M15, 1); double previous_lowprice = iLow(Symbol(), PERIOD_M15, 1); double point_gap = MarketInfo(Symbol(), MODE_POINT); int spread_gap = MarketInfo(Symbol(), MODE_SPREAD); datetime current_time = iTime(Symbol(), PERIOD_M15, 0); // catching the gap on sell upper gap if(current_openprice > previous_highprice + (min_gapsize + spread_gap)*point_gap && current_time != order_time) { int ticket = OrderSend(Symbol(), OP_SELL, lotsize_gap, Bid, 0, 0, previous_highprice + spread_gap*point_gap, "", 4, 0, Red); order_time = iTime(Symbol(), PERIOD_M15, 0); Print("I am inside (sell) :-)", order_time); //---- if(ticket < 0) { Print("OrderSend failed with error #", GetLastError()); } } //catching the gap on buy down gap if(current_openprice < previous_lowprice - (min_gapsize + spread_gap)*point_gap && current_time != order_time) { ticket = OrderSend(Symbol(), OP_BUY, lotsize_gap, Ask, 0, 0, previous_lowprice - spread_gap*point_gap, "", 5, 0, Green); order_time = iTime(Symbol(), PERIOD_M15, 0); Print("I am inside (buy) :-)", order_time); if(ticket < 0) { Print("OrderSend failed with error #", GetLastError()); } } //---- return(0); } //+------------------------------------------------------------------+
Man stellt den Mindestgap (50 PIPs) und die Lotsize sowie Long oder Short oder beide Richtungen ein und los gehts mit dem Test. Ernüchterndes Ergebnis: Im letzten Jahr gab es nur einen GAP größer 50 PIPs im EURUSD und der war vom 9.-11.Mai 2010.
Hm, ein bisschen mager, um darauf eine Strategie aufbauen zu können.
Also habe ich die letzten 6 Jahre mit den gleichen Parametern gescannt und bin auf gerade mal 33 Trades gekommen. Alle wurden im Gewinn geschlossen, wobei der längste Trade vom 29.09.2008 bis zum 18.12.2008 lief, wobei die Equitykurve schon arg in den Keller ging. Ich habe ein 500-Euro Konto mit 1 Microlot simuliert, also mit 0,5% vom Kontostand. Ein Stop ist in diesem EA natürlich nicht vorgesehen. Aber darum ging es ja hier auch gar nicht.
Die Tabelle des Backtests habe ich um die Spalten MinusPIPs, Bemerkungen und Tradedauer ergänzt, dafür die Positionsgröße, Gewinn und Kontostand entfernt.
MinusPIPs ist die Spanne, die der Trade ins Minus gelaufen ist.
Mal schauen, ob ich die beiden anderen Pairs auch noch heute checke, ansonsten reiche ich die nächste Woche nach.
Erstes Fazit: Nur mit dem EURUSD lässt sich wegen der seltenen GAPs sicher keine vernünftige Strategie aufbauen, hier muss ich abwarten, ob das bei den anderen Pairs ähnlich ist (vor allem vom Zeitpunkt). Meist ist es ja so, wenn zum Wochenstarts GAPs auftreten, dann in allen EuroPairs z.B..
Zusätzlich und mit geringsten Positionsgrößen finde ich es okay, die Schließung der GAPs zu handeln.
Nur würde ich das Ganze noch ein wenig modifizieren:
Tradebeginn erst 30 min nach Markteröffnung und einstoppen lassen. So entgehen einem vielleicht ein paar Gewinntrades (die sofort wieder schließen) aber man verringert auch das Risiko, den Trade über Tage, Wochen, Monate halten zu müssen und das Kapital zu binden. Tja, und dann wäre da noch die Möglichkeit des Notstopps. Z.B. bei 10% des Kontostandes oder nach 1 Monat....
Nachtrag: Die Verlässlichkeit des Backtests darf angezweifelt werden! Ich habe eben den gleichen Test noch mal im MT4 von FXPro durchlaufen lassen und hatte einen Trade dabei, der nicht geschlossen wurde. Als ich daraufhin im Chart nachgeschaut habe bemerkte ich, dass die Kurse vom 12.03.2010 bis 25.03.2010 komplett fehlen!
In dieser Zeit hat sich der Kurs 400 PIPs nach unten bewegt, was im Chart wie ein Riesengap aussieht, der natürlich seitdem nicht mehr geschlossen wurde.
So, und die Tests im EUR/JPY und GBPUSD habe ich auch versucht, aber da werden im Zeitraum 2004-2010 weniger als 10 GAPs gehandelt . Da stimmt ja mit der Quali der History irgendwas nicht...
8 Comments
Recommended Comments