Индикатор функция OnCalculate()

 

Добрый день!

Не могу добиться что бы OnCalculate возвращал мне не последний нужный мне бар

int OnCalculate(const int rates_total,

const int prev_calculated,

const datetime &time[],

const double &open[],

const double &high[],

const double &low[],

const double &close[],

const long &tick_volume[],

const long &volume[],

const int &spread[])

{

BuyIndex = GetFindChart(BuyBrassy, MODE_UPPER, rates_total, prev_calculated, open, high, low, close);

SellIndex = GetFindChart(SellBrassy, MODE_LOWER, rates_total, prev_calculated, open, high, low, close);

if (BuyIndex > SellIndex)

return(rates_total-BuyIndex-1);

else

return(rates_total-SellIndex-1);

// if (BuyIndex > SellIndex)

// return(BuyIndex+1);

// else

// return(SellIndex+1);

}

Пример:

BuyIndex = 54;

SellIndex = 16;

return(BuyIndex +1); // 54+1=55

Но следующий тик и prev_calculated равен не 55, а rates_total

Возможно ли сделать что бы prev_calculated именно мое значение а не что решил MT4

 

Ну заведите глобальную переменную и в ней сохраняйте ваш BuyIndex +1...

 
byteman:
А у меня в индикаторе в OnCalculate() вообще повторного входа нет. Я первым оператором поставил Alert и он выводится только один раз при загрузке индикатора или при трансляции, а мне надо обрабатывать каждый тик. Все остальные написанные индикаторы работают без проблем. Из-за чего это может быть?
Вам сюда
Причина обращения: