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.

extern ENUM_TIMEFRAMES TF = PERIOD_CURRENT;// Wählt den Zeitrahmen extern int period = 8;// DeMarker-Periode extern double lt = 0.01;// Lots extern int sl = 100;// Stop-Loss extern int tp = 100;// Take-Profit extern double OB = 0.7;// Überverkauft extern double OS = 0.3;// Überkauft extern bool 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 | Indikator double dmrk[5]; int signal =-1;//-- 0.kaufen 1.verkaufen int hold = 0; //-- Order int ticket =0; double lot =0.0; int typ =-1; //-- Paar datetime 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.
//+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnInit() { ArrayInitialize(dmrk,0.0); //--- const double 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 } } }

