Hey Trader-Kollegen! Heute möchte ich euch meinen einfachsten Expert Advisor (EA) vorstellen, den ich je entwickelt habe. Ich habe lange darüber nachgedacht, einen EA für mein Trading zu nutzen, und jetzt ist es endlich soweit! Ich freue mich auf euer Feedback, nachdem ihr alles gelesen habt.
Dieser EA funktioniert für ein einzelnes Währungspaar. Alle Einstellungen wie Zeitrahmen, Lot-Größe, Stop-Loss und Take-Profit könnt ihr ganz einfach im Menü konfigurieren.

externENUM_TIMEFRAMES TF = PERIOD_CURRENT;// Wählt den Zeitrahmenexternint period = 8;// DeMarker-Periodeexterndouble lt = 0.01;// Lotsexternint sl = 100;// Stop-Lossexternint tp = 100;// Take-Profitexterndouble OB = 0.7;// Überverkauftexterndouble OS = 0.3;// Überkauftexternbool OPENBAR = false;// Trading beim Öffnen der neuen Kerze
Hier ist der Clou: Ich teile die Variablen in drei Teile auf:
1. Daten | Zeitrahmen
2. Order
3. Paar
//+------------------------------------------------------------------+//-- Zeitrahmen | Indikatordouble dmrk[5]; int signal =-1;//-- 0.kaufen 1.verkaufenint hold = 0; //-- Orderint ticket =0; double lot =0.0; int typ =-1; //-- Paardatetime t1=0; bool newbar=false; bool entry =false; //+------------------------------------------------------------------+
In der Funktion OnInit() initialisiere ich das DeMarker-Indikator-Array und überprüfe die minimale Lot-Größe, die je nach Broker-Anforderungen erforderlich ist.
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+voidOnInit() { ArrayInitialize(dmrk,0.0); //--- constdouble test_lot = SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN); if(lt<test_lot) lt = test_lot; }
In der Funktion OnTick() berechne ich den Indikator und bestimme die Kauf- und Verkaufssignale.
//--------------------------------------------------------------------------- signal = -1; //---------------------------------------------------------------------------//--- Berechnung for(int i=0; i<ArraySize(dmrk); i++) { dmrk[i] = iDeMarker(Symbol(),TF,period,i); } //--- if(dmrk[1] > OB) { hold = 1;//set } else if(dmrk[1] < OS) { hold = -1;//set } else { hold = 0;//reset } if(hold == 1) { if(dmrk[0]<OB && dmrk[1]>OB) { signal = OP_SELL; } } if(hold == -1) { if(dmrk[0]>OS && dmrk[1]<OS) { signal = OP_BUY; } }
Um ein Kauf- oder Verkaufssignal zu eröffnen...
//--------------------------------------------------------------------------- if(signal != -1) if(newbar==true) if(entry==false)//Tür offen { //--- entry =true;//set //--- if(signal == OP_BUY) { ticket = OrderSend(Symbol(),OP_BUY,lt,Ask,(int)((Ask-Bid)/Point, sl>0?Bid-sl*Point:0.0, tp>0?Bid+tp*Point:0.0, EAName+":signal= "+IntegerToString(signal)+":hold= "+IntegerToString(hold), EANumber, 0, clrBlue); signal=-1; //hold =0; }//reset }//reset signal }
Und für das Schließen...
if(entry == true) // Schließen { if(OrderSelect(ticket,SELECT_BY_TICKET)) { if(OrderCloseTime() == 0)//-- Order aktiv { /* todo Bedingung zum Schließen */ //entry = false; } //else if(OrderCloseTime() != 0)//-- geschlossen durch 1. manuell 2. sl/tp 3. ea { entry = false;//reset entry } } }



Kommentar 0