Скачать MetaTrader 5

Нулевой и ненулевой бары. Глюк программы?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Forex Trader
114280
Forex Trader  
Проблема заключается в следующем, есть некоторый индикатор, который не обсчитывается на нулевом баре, а только на следующем. Привожу кусок кода, как это реализовано:

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 White
#property indicator_color2 Yellow
//---- Входной параметр
extern int W_Period=7;
//---- Буферы для расчёта индикатора
double Stop_Level[];
double Pivot_Level[];
//---- Переменные на глобальном уровне
double Pivot;
double Level;
double last_Stop;
string Trend;
//----
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0,DRAW_ARROW);
SetIndexArrow(0,159);
SetIndexBuffer(0,Stop_Level);
SetIndexStyle(1,DRAW_ARROW);
SetIndexArrow(1,159);
SetIndexBuffer(1,Pivot_Level);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int limit,pos;
//---- Пересчёт последнего бара
int counted_bars=IndicatorCounted();
//---- Проверка возможной ошибки
if (counted_bars<0) return(-1);
//---- Последний посчитанный бар будет пересчитан
if (counted_bars>0) counted_bars--;
//----
limit=Bars-counted_bars;
//---- Идентифицируем уровень Виднера
for (int i=limit-1; i>0; i--)
{
//---- Здесь некоторые расчёты ----//
Stop_Level[i]=last_Stop;
Pivot_Level[i]=Pivot;
}
//----
return(0);
}
//+------------------------------------------------------------------+

теперь сама проблема. Когда переходишь на другой таймфрейм, появляется отображение этого индикатора на нулевом баре со значением, не соответствующим логике и расчётам тела программы, при этом такое происходит преимущественно при переходе с младшего таймфрейма на старший и справедливо не для каждого таймфрейма. Например, при переходе с М15 на Н1 имеем отображение индикатора на нулевом баре, затем переходим на Н4 и снова на Н1, тогда индикатор показывает всё правильно, отображает все бары, кроме нулевого.
Кто мне сможет объяснить в чём проблема?
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий