Ve üstel için ne var? Zaten başlangıçta "kesirli" bir periyoda sahip, aslında sahip olmadığı - sadece bir katsayı var. geri bildirim. Bu, EMA'nın kesirli olmaması için MT'de yapılır. Ve böylece her zaman bir kesirli parametresi vardı. Bu katsayıyı kesirli dönemden yeniden hesaplayın ve hepsi bu. k=2.0/(1+dönem); Eh, standart olanların geri kalanı zaten basit bir şekilde yapılıyor.
Cahilliğim için özür dilerim.
Aleksey görevi bu şekilde belirledi. ;)
Ve cevabı zaten aldık - önceki ortalamalara benzer şekilde ...
Pekala, kesirli noktalı bir anahtar EMA ekledim. İsteyen devam edebilir. Geriye iki yöntem kaldı.))) Ardından yerleşik iMA'yı fiyat türü, vardiya vb. ile tamamen değiştirebilirsiniz.
#property indicator_chart_window // в окне инструмента#property indicator_buffers 1#property indicator_color1 Blue // входные параметрыexterndouble MAperiod= 3 ; // externint Method= 0 ;
int History= 0 ; // 0- все барыdouble MA[]; // массив буфераdouble k; // коэфф. EMAdouble rt; // дробная часть периодаint per; // целая часть периодаvoid init() { // инициализация
per= MathFloor (MAperiod);
rt=MAperiod-per;
k= 2.0 /( 1 +MAperiod);
SetIndexBuffer ( 0 ,MA); // индикатор
SetIndexLabel( 0 , "MA(" +DoubleToStr(MAperiod, 2 )+ ")" );
}
void start() {
int limit= Bars -IndicatorCounted()- 1 ;
if (History!= 0 && limit>History) limit=History- 1 ; // кол-во пересчетов по историиfor ( int i=limit; i>= 0 ; i--) { // цикл пересчета по ВСЕМ барамswitch (Method) {
case0 : // SMAint j=i+per;
double ma=rt*Close[j];
j--;
for (; j>=i; j--) ma+=Close[j];
ma/=MAperiod;
MA[i]=ma;
break ;
case1 : // EMA
MA[i]=k*Close[i]+( 1 -k)*MA[i+ 1 ];
}
}
}
EMA ile ilgili soru kışkırtıcıydı ve onu listenin sonuna kendi başıma koydum :)
Ne de olsa beni kışkırtmadın.))) Evet, göstergemi yüksek çubukta kesirli bir ağırlıkla denediniz mi? Bence mantıklı. Özellikle bir dizi olarak temsil ediliyorsa ve periyodun en eski üyeye nasıl kesirli olarak süründüğü.)))
Ve üstel için ne var? Zaten başlangıçta "kesirli" bir periyoda sahip, aslında sahip olmadığı - sadece bir katsayı var. geri bildirim. Bu, EMA'nın kesirli olmaması için MT'de yapılır. Ve böylece her zaman bir kesirli parametresi vardı. Bu katsayıyı kesirli dönemden yeniden hesaplayın ve hepsi bu. k=2.0/(1+dönem);
Eh, standart olanların geri kalanı zaten basit bir şekilde yapılıyor.
Cahilliğim için özür dilerim.
Aleksey görevi bu şekilde belirledi. ;)
Ve cevabı zaten aldık - önceki ortalamalara benzer şekilde ...
Aleksey görevi bu şekilde belirledi. ;)
EMA ile ilgili soru kışkırtıcıydı ve onu listenin sonuna kendi başıma koydum :)
Ve sadece temel.
EMA ile ilgili soru kışkırtıcıydı ve onu listenin sonuna kendi başıma koydum :)
Ne de olsa beni kışkırtmadın.)))
Evet, göstergemi yüksek çubukta kesirli bir ağırlıkla denediniz mi? Bence mantıklı. Özellikle bir dizi olarak temsil ediliyorsa ve periyodun en eski üyeye nasıl kesirli olarak süründüğü.)))