Может так надо
//+------------------------------------------------------------------+ //| Бла-бла-бла.mq4 | //+------------------------------------------------------------------+ #property indicator_separate_window // Индикатор рисуется в отдельном окне #property indicator_buffers 1 // Количество буферов линий #property indicator_color1 Gold // Цвет линии //-------------------------------------------------------------------- extern int IndPeriod=5; // Количество баров для расчёта //-------------------------------------------------------------------- double Volatility[]; // Индикаторный буфер //-------------------------------------------------------------------- int init() { //-------------------------------------------------------------------- SetIndexBuffer(0,Volatility); // Назначение буфера массиву линии SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,1); // Стиль линии //-------------------------------------------------------------------- return; } //-------------------------------------------------------------------- int start() { int Counted_bars, // Количество неизменённых баров i; // Индекс бара для расчёта линии double AverageHigh, AverageLow; //-------------------------------------------------------------------- Counted_bars=IndicatorCounted(); i=Bars-Counted_bars-1; // Индекс первого непосчитанного while (i>=0) // Цикл по непосчитанным барам при запуске { AverageHigh=iMA(NULL,0,IndPeriod,0,MODE_LWMA,PRICE_HIGH,i); AverageLow=iMA(NULL,0,IndPeriod,0,MODE_LWMA,PRICE_LOW,i); Volatility[i]=(AverageHigh-AverageLow)/Point; i--; // Расчёт индекса следующего бара } //-------------------------------------------------------------------- return; } //--------------------------------------------------------------------
Или Вы хотите делить именно?
Делить на 0 низзя.
if(AverageLow!=0.0) Result[i]=AverageHigh/AverageLow; else Result[i]=0.0;
как-то так)
Да, действительно просто. Как это сам не додумался.
Большое спасибо.

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Почему такое считается при любом периоде:
Volatility[i]=(iMA(NULL,0,VolatilityPeriod,0,MODE_LWMA,PRICE_HIGH,i)-iMA(NULL,0,VolatilityPeriod,0,MODE_LWMA,PRICE_LOW,i))/Point; // Волатильность
Если разделить её на 3 составляющие, тоже всё нормально:
AverageHigh=iMA(NULL,0,VolatilityPeriod,0,MODE_LWMA,PRICE_HIGH,i);
AverageLow=iMA(NULL,0,VolatilityPeriod,0,MODE_LWMA,PRICE_LOW,i);
Volatility[i]=(AverageHigh-AverageLow)*Point;
Но если я захочу поделить:
AverageHigh=iMA(NULL,0,ResultPeriod,0,MODE_LWMA,PRICE_HIGH,i);
AverageLow=iMA(NULL,0,ResultPeriod,0,MODE_LWMA,PRICE_LOW,i);
Result[i]=AverageHigh/AverageLow; - то при ResultPeriod больше 1 происходит полная х... Непонятно.