Автор этого индикатора Profi_R. Он часто бывает на этом форуме. Также его (автора) можно найти на Пауке.
а ещё вопросы такие лучше задавать на mql4.com..
там ответят.. программисты отсюда туда ушли...
там ответят.. программисты отсюда туда ушли...
попробуй это, выискал в архивах, а старый тоже должен по идее работать, никогда у него не было таких проблем если по ходу он не менялся кем - либо
//+------------------------------------------------------------------+ //| fAMA.mq4 | //| Copyright © 2005, Profi_R | //+------------------------------------------------------------------+ #property copyright "Copyright © 2005, Profi_R" #property link "rvm_fam@fromru.com" #property indicator_chart_window #property indicator_buffers 1 #property indicator_color1 Black //---- input parameters extern int Range=10; extern int FastMA=2; extern int SlowMA=20; extern int filter=60; extern int n=6; extern int h=30; //---- buffers double fAMA[]; double mAMA[]; int d_b;//объявление переменной short_name целочисленного типа double k1,k2; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { int cb; string short_name; //объявление переменной short_name типа "строковый" //---- indicators IndicatorBuffers(2); SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,fAMA); SetIndexBuffer(1,mAMA); //---- name for DataWindow and indicator subwindow label //переменной short_name присваиваем строковое значение равное выражению short_name="fAMA("+Range+","+FastMA+","+SlowMA+","+filter+","+n+","+h+")"; //для отображения на графике присвоим индикатору краткое наименование IndicatorShortName(short_name); SetIndexLabel(0,short_name);//Установим метку для буфера //---- if(filter>0) d_b=SlowMA; else d_b=Range; SetIndexDrawBegin(0,d_b); //установка начальной точки прорисовки для 0 буфера //---- k1=2.0/(SlowMA+1); k2=2.0/(FastMA+1)-k1; //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(); //---- TODO: add your code here int cb,i; double sdAMA,dAMA; if(Bars<=d_b) { Alert("Недостаточно данных!!! Всего баров - ",Bars,", минимально требуется - ",d_b); return(0); } for(cb=Bars-counted_bars-1;cb>=0;cb--) { if(cb>=Bars-Range) { mAMA[Bars-Range]=Close[Bars-Range]; } else { CycleAMA(cb); } if(filter<1) { fAMA[cb]=mAMA[cb]; } else { for(i=cb;i<=cb+SlowMA-1;i++) { sdAMA=sdAMA+MathAbs(mAMA[i]-mAMA[i+1]); } dAMA=mAMA[cb]-mAMA[cb+1]; if(dAMA>=0) { if(dAMA<NormalizeDouble(filter*sdAMA/(100*SlowMA),4)&&High[cb]<=High[Highest(NULL,0,MODE_HIGH,n,cb)]+h*Point) { fAMA[cb]=fAMA[cb+1]; } else { fAMA[cb]=mAMA[cb]; } } else { if(MathAbs(dAMA)<NormalizeDouble(filter*sdAMA/(100*SlowMA),4)&&Low[Lowest(NULL,0,MODE_LOW,n,cb)]-h*Point<Low[cb]) { fAMA[cb]=fAMA[cb+1]; } else { fAMA[cb]=mAMA[cb]; } } sdAMA=0.0; } } //---- return(0); } //+------------------------------------------------------------------+ //*****************************************************************************************// // Функция возвращает сумму приращений на n предыдущих интервалах начиная с cb (включая) // //*****************************************************************************************// double SumIncrements(int cb,int n) { int i; double Result; for(i=cb;i<cb+n;i++) { Result=Result+MathAbs(Close[i]-Close[i+1]); } //---------- return(Result); } //+------------------------------------------------------------------+ //******************************************************************// // Функция вычисляющая АМА на одном интевале // //******************************************************************// void CycleAMA(int cb) { double Noise,ER,SSC; int i; Noise=SumIncrements(cb,Range); if(Noise!=0) { ER=MathAbs(Close[cb]-Close[cb+Range])/Noise; } else { ER=0; } SSC=(ER*k2+k1); mAMA[cb]=mAMA[cb+1]+SSC*SSC*(Close[cb]-mAMA[cb+1]); //---------- return(0); } //+------------------------------------------------------------------+
а ещё вопросы такие лучше задавать на mql4.com..
там ответят.. программисты отсюда туда ушли...
Ну не знаю, не знаю... Не стоит так уж говорить за всех.там ответят.. программисты отсюда туда ушли...
Тот форум какой-то флудливый стал в последнее время :(
попробуй это, выискал в архивах, а старый тоже должен по идее работать, никогда у него не было таких проблем если по ходу он не менялся кем - либо ...
Спасибо, этот работает нормально. Буду смотреть чего там другие программеры напихали, что его нужно на каждом баре обновлять.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
но остался без ответа. Пожалуйста подскажите, что в этом индикаторе нужно исправить, чтобы он работал нормально.
Вот код индикатора.
upd: подправил сообщение, чтобы код нормально отображался