|
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Kurs-Verhältnisse glätten mit Prozent
Hallo.
Hoffe mal, der Titel ist einigermaßen gut gewählt. Bin ein bisschen am Experimentieren. Ein Ergebnis davon ist der PRdMA_OPZ_SEP_v1.mq4 Indi ( Anhang ). Kurz gesagt berechnet er das Verhältnis von PR und MA und multipliziert das dann mit dem jeweils anderen Wert. Er zeigt Trend-Beginn und -Ende an, aber anders als übliche MA-Cross-Systeme meistens mit nur 1 oder 2 Kerzen Verzögerung. Da er in Seitwärtsphasen aber buchstäblich wie im Zick-Zack ausschlägt, würde ich gerne die Anzeigen sozusagen etwas abdämpfen. Ein Weg wär vielleicht, man rechnet die Verhältnisse in eine Art 100%-Skala um. Dann sollen die Verhältnisse aber z.B. mit 95% oder 65% oder so multipliziert werden. Oder mit 133% oder 166% oder was auch immer. Im MT4 gibts soweit ich weiß eine Art Oscillator-of-Moving-Average oder sowas in der Art. Aber ich glaube, der reagiert auch erst spät wie übliche MA-Systeme. Bekanntlich bin ich Alles andere als nen Mathe-Experte. Also wie könnte man sowas berechnen / proggen ? Hier der bisherige Versuch ( Anhang ). Scheint zwar im Grunde keine Fehler zu haben, aber die Werte im MT4 sind viel zu hoch oder zu klein. Code:
//============================================================================================================= // D E K L A R A T I O N P R I C E //============================================================================================================= Pr_Hi=iHigh (NULL,NULL,i); Pr_Op=iOpen (NULL,NULL,i); Pr_Cl=iClose(NULL,NULL,i); Pr_Lo=iLow (NULL,NULL,i); Pr_ME = ( Pr_Hi + Pr_Lo ) / 2.0; Pr_TY = ( Pr_Hi + Pr_Cl + Pr_Lo ) / 3.0; Pr_WE = ( Pr_Hi + Pr_Cl + Pr_Cl + Pr_Lo ) / 4.0; // Zuweisung Price if(Price==PRICE_HIGH )PR=Pr_Hi; if(Price==PRICE_CLOSE )PR=Pr_Cl; if(Price==PRICE_OPEN )PR=Pr_Op; if(Price==PRICE_LOW )PR=Pr_Lo; if(Price==PRICE_MEDIAN )PR=Pr_ME; if(Price==PRICE_TYPICAL )PR=Pr_TY; if(Price==PRICE_WEIGHTED)PR=Pr_WE; //============================================================================================================= // D E K L A R A T I O N M A //============================================================================================================= MA=iMA(Symbol(),Period(),MA_Period,MA_ChartShift,MA_Method,MA_Price,i); //============================================================================================================= // H P D I V //============================================================================================================= HPdPR = ODIV(100.0// Soll dividiert werden , PR// Wert, durch den dividiert werden soll ); HPdMA = ODIV(100.0// Soll dividiert werden , MA// Wert, durch den dividiert werden soll ); //============================================================================================================= // ? //============================================================================================================= HPPRdHPMA = ODIV(HPdPR// Soll dividiert werden , HPdMA// Wert, durch den dividiert werden soll ); HPMAdHPPR = ODIV(HPdMA// Soll dividiert werden , HPdPR// Wert, durch den dividiert werden soll ); //============================================================================================================= // ? //============================================================================================================= //============================================================================================================= // B U F F E R //============================================================================================================= BUF_HPdPdM_fa[i] = OMUL(HPPRdHPMA// Soll multipliziert werden , Perc_Fast// Wert, der kleiner als 1.0 ist ); //------------------------------------------------------------------------------------------------------------- BUF_HPdPdM_sl[i] = OMUL(HPMAdHPPR// Soll multipliziert werden , Perc_Slow// ); |
|
|||
Hallo.
Sieht aus, als wenns nicht wirklich brauchbare Anzeigen gibt, wenn man einfach nur ( Price / MA ) * das-jeweils-nicht-Geteilte rechnet. Im OPZ-Indi wird erst 1.0 / Price und 1.0 / MA geteilt. Das wird dann * das-jeweils-nicht-Geteilte gerechnet. Aber wenn man z.B. 100% durch die Beiden teilt, sollte das doch eigentlich reichen. Oder muss vorher doch erst 1.0 / Price und MA geteilt werden? |
Lesezeichen |
|
|