обращение к несуществующим барам , так будет правильно
//+------------------------------------------------------------------+ //| #S-ROC 13-21.mq4 | //| Alexey Baranov | //| 06 августа 2005 г. 18:27 | //+------------------------------------------------------------------+ #property indicator_separate_window // Индикатор расположен в отдельном окне #property indicator_buffers 1 // Для построения используется 1 буфер #property indicator_color1 DodgerBlue // Цвет белый #property indicator_level1 0 double buff[]; // Объявляю буфер для индикатора EMA extern int ma_period=13; // Период EMA extern int MomPeriod=21; // Период ROC int pos; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { string short_name; SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,buff); short_name="S-ROC ("+ma_period+"/"+MomPeriod+")"; IndicatorShortName(short_name); SetIndexLabel(0,short_name); SetIndexDrawBegin(0,0); return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int limit; int counted_bars=IndicatorCounted(); //------------ Вычисляем ROC от EMA if(Bars<=MomPeriod) { Alert("Недостаточно данных!"); return(0); } else { if(counted_bars<1) { limit=Bars-1-MomPeriod; } else { if(counted_bars!=Bars) { limit=Bars-1-counted_bars; } else { limit=0; } } } pos=limit; while(pos>=0) { buff[pos]=iMA(Symbol(),0,ma_period,0,MODE_EMA,PRICE_CLOSE,pos)*100/ iMA(Symbol(),0,ma_period,0,MODE_EMA,PRICE_CLOSE,pos+MomPeriod); pos--; } return(0); } //+------------------------------------------------------------------+
бара с индексом Bars не существует , а ты еще дальше лезешь Bars+MomPeriod
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
buff[pos]=(iMA(Symbol(),0,ma_period,0,MODE_EMA,PRICE_CLOSE,pos)-iMA(Symbol(),0,ma_period,0,MODE_EMA,PRICE_CLOSE,pos+MomPeriod))/MomPeriod
А так не работает
buff[pos]=iMA(Symbol(),0,ma_period,0,MODE_EMA,PRICE_CLOSE,pos)*100/iMA(Symbol(),0,ma_period,0,MODE_EMA,PRICE_CLOSE,pos+MomPeriod);
Почему?