[MQL5] OnCalculate от новых свечей к старым?

 

Все здравствуйте!

Пытаюсь написать свой первый индикатор ;) и понимаю, что OnCalculate обрабатывает свечи от самой старой к самой новой.

А как можно извернуться и сделать наоборот: от самой новой к старым?

Чтоб последняя закрытая свеча сравнивалась с предпоследней закрытой и так далее? И с учётом глубины, например не далее 20 свечей в историю.

 
kofesutra:

Все здравствуйте!

...

А как можно извернуться и сделать наоборот: от самой новой к старым?

...


ArraySetAsSeries применяйте к нужному массиву (open, high, low, close или time).

 
Vladimir Karputov:

ArraySetAsSeries применяйте к нужному массиву (open, high, low, close или time).


Владимир, приветствую Вас!

Я явно не понимаю нюансов: вот так сделал:

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
//---
ArraySetAsSeries(open,true);

int i;
for(i=1;i<rates_total;i++)
{
double z=open[i];
    FlatBuffer[i]=z;
}

на выходе получаются данные о-о-очень далёкой свечи, но на текущем баре :(

 
kofesutra:

Владимир, приветствую Вас!

Я явно не понимаю нюансов: вот так сделал:

на выходе получаются данные о-о-очень далёкой свечи, но на текущем баре :(


Для лучшего понимания примените ArraySetAsSeries к массиву time и сохраните два значения: time[0] and time[rates_total-1] - сразу станет понятно какой индекс у бара, которые стоит на графике правее всех.

 
Vladimir Karputov:

Для лучшего понимания примените ArraySetAsSeries к массиву time и сохраните два значения: time[0] and time[rates_total-1] - сразу станет понятно какой индекс у бара, которые стоит на графике правее всех.


Владимир, спасибо! Вроде, я чуточку продвинулся ;) в написании.

Надо было ещё сделать

ArraySetAsSeries(FlatBuffer,true);

и цикл такой

for(i=rates_total-1;i>=0;i--)
 
kofesutra:

Владимир, спасибо! Вроде, я чуточку продвинулся ;) в написании.

Надо было ещё сделать

и цикл такой


Пожалуйста :).