обращение к несуществующим барам , так будет правильно
//+------------------------------------------------------------------+
//| #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
#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 extern 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() { //------------ Вычисляем ROC от EMA pos = Bars; while(pos>=0) { 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; pos--; } return(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);
//+------------------------------------------------------------------+ //| #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 extern 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() { //------------ Вычисляем ROC от EMA pos = Bars; 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); } //+------------------------------------------------------------------+Почему?