Guter Indikator für volumendivergenz
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
Kann mir jemand einen guten Indikator für volumendivergenz en empfehlen? (Am besten auch mit Erklärung (vorher noch nie einen verwendet)
Thank you