Na so schwer ist das nicht, das Problem sind fehlende EINFACHE Beispiele wo das wesentliche herausgearbeitet wird.
Hier der Rumpf(die Struktur) eines EAs der 2 MAs definiert und die Kerzendaten zur Verfügung stellt.
//+------------------------------------------------------------------+ //| abbreviations | //+------------------------------------------------------------------+ #define SPACER "—————————————————————" #define METHOD ENUM_MA_METHOD #define APRICE ENUM_APPLIED_PRICE #define TIMEFR ENUM_TIMEFRAMES #define POSTYPE ENUM_POSITION_TYPE //+------------------------------------------------------------------+ //| input parameters | //+------------------------------------------------------------------+ input string txt_MA1 = SPACER; // MA1 Settings input int inp_MA1Period = 10; // Period input METHOD inp_MA1Method = MODE_EMA; // Method input int inp_MA1Shift = 0; // Shift input APRICE inp_MA1Price = PRICE_CLOSE; // Price input string txt_MA2 = SPACER; // MA2 Settings input int inp_MA2Period = 13; // Period input METHOD inp_MA2Method = MODE_EMA; // Method input int inp_MA2Shift = 0; // Shift input APRICE inp_MA2Price = PRICE_CLOSE; // Price //+------------------------------------------------------------------+ //| variables | //+------------------------------------------------------------------+ int haMA1, // handles für die MAs haMA2; double buMA1[], // buffer für die MAs buMA2[]; MqlRates rates[]; // pricedata int toCopy = 3; // copy rates to buffer //+------------------------------------------------------------------+ int OnInit() { haMA1=iMA(_Symbol, _Period, inp_MA1Period, inp_MA1Shift, inp_MA1Method, inp_MA1Price); if(haMA1==INVALID_HANDLE) return(INIT_FAILED); haMA2=iMA(_Symbol, _Period, inp_MA2Period, inp_MA2Shift, inp_MA2Method, inp_MA2Price); if(haMA2==INVALID_HANDLE) return(INIT_FAILED); ArraySetAsSeries(buMA1, true); // auf diese buffer wird mittels Index zugegriffen ArraySetAsSeries(buMA2, true); // 0 ... aktuelle Kerze ArraySetAsSeries(rates, true); // 1 ... eine Kerze davor usw. return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ void OnTick() { if(CopyBuffer(haMA1,0,0,toCopy,buMA1)!=toCopy) return; if(CopyBuffer(haMA2,0,0,toCopy,buMA2)!=toCopy) return; if(CopyRates(_Symbol,_Period,0,toCopy,rates)!=toCopy) return; if(PositionSelect(_Symbol)) // check ob offene position vorhanden { // position existiert switch((POSTYPE)PositionGetInteger(POSITION_TYPE)) { case POSITION_TYPE_BUY: // prüfen auf buy schließen // und schließen falls erforderlich return; // break kann durch return ersetzt werden case POSITION_TYPE_SELL: // prüfen auf sell schließen // und schließen falls erforderlich return; // break kann durch return ersetzt werden } } else { // keine position offen if(Condition_Buy()) // prüfen auf buy return; if(Condition_Sell()) // prüfen auf sell return; } } bool Condition_Buy() { // hier prüfen auf buy und return(true) falls bedingung zutrifft return(false); // kaufbedingung war nicht zutreffend } bool Condition_Sell() { // hier prüfen uaf sell und return(true) falls bedingung zutrifft return(false); // verkaufsbedingung war nicht zutreffend }
Du hast deinen Post aber sehr abgeändert während ich das geschrieben hab ;)
Jmd nh Idee
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Kann mir jemand einen guten Indikator für volumendivergenz en empfehlen? (Am besten auch mit Erklärung (vorher noch nie einen verwendet)
Thank you