если rates_total-prev_calculated>1 то это значит что произошло обновление истории, добавилось много новых баров, это значит что нужно пересчитать всё заново (все бары).
И эти новые бары могут появится где угодно, не обязательно в конце истории и последовательно.
давно собирался свой шаблон для индикаторов онлайн проверить, написал такой код:
intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
//---int limit;
if(prev_calculated == 0) {
limit = rates_total - 1; //--- Первый вызов индикатора или смена таймфрейма или подгрузка данных из историиPrint("limit = ",limit);
}
else limit = rates_total - prev_calculated + 1;
//--- return value of prev_calculated for next callreturn(rates_total);
}
то, что мой шаблон корректно работает при переключении ТФ, при смене счета, при смене торгового инструмента я давно знаю
попробовал отключить сетевую карту в Виндовс, индикатор предварительно бросил на график ТФ М1, включил сетевую карту через минут 5, в логе получил как и при первом вызове индикатора rates_total - 1 , т.е. терминал сбрасывает prev_calculated в ноль и при обрыве связи
давно собирался свой шаблон для индикаторов онлайн проверить, написал такой код:
то, что мой шаблон корректно работает при переключении ТФ, при смене счета, при смене торгового инструмента я давно знаю
попробовал отключить сетевую карту в Виндовс, индикатор предварительно бросил на график ТФ М1, включил сетевую карту через минут 5, в логе получил как и при первом вызове индикатора rates_total - 1 , т.е. терминал сбрасывает prev_calculated в ноль и при обрыве связи
а при прокрутке чарта назад, когда подгружаются новые бары? или только идет подгрузка баров (построение истории) а если есть "дыры" в истории, и они подгружаются
вариантов может быть много, я не надеюсь что бары появляются только в конце и только последовательно
а при прокрутке чарта назад, когда подгружаются новые бары? или только идет подгрузка баров (построение истории) а если есть "дыры" в истории, и они подгружаются
вариантов может быть много, я не надеюсь что бары появляются только в конце и только последовательно
в MQL4 нет такой подгрузки - я проверял на евро на М1 пишет limit = 7331680 , что и есть максимально доступная история по евро если установлено большое число в окне настроек, в МТ5 там есть подгрузка
ЗЫ: возможно нужно тесты сделать если ТФ не синхронизирован и дыры в истории и будет подгрузка при прокрутке колесиком - позже проверю, не охота сейчас историю удалять в терминале
вот такой шаблон индикатора будет корректно работать и при переключении ТФ и при подгрузке истории и...:
intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
//---int i,limit=rates_total-prev_calculated+1; //--- или int limit=rates_total-prev_calculated; - чтобы не пересчитывать бар №1if(prev_calculated==0 || limit>1) limit=rates_total-1; //--- Первый вызов индикатора или смена таймфрейма или подгрузка данных из историиfor(i=limit; i>=0; i--)
{ //--- В этом цикле основные вычисления. Таким образом обрабатываться будет только "свежая" информация
}
//--- return value of prev_calculated for next callreturn(rates_total);
}
//+------------------------------------------------------------------+
В OnCalculate история подгружается за несколько подходов. Первый вопрос, можно ли как то узнать что вся история наконец-то загрузилось? Второй вопрос, видно что иногда prev_calculated становится 0, это означает что история будет продолжать подгружаться?
если rates_total-prev_calculated>1 то это значит что произошло обновление истории, добавилось много новых баров, это значит что нужно пересчитать всё заново (все бары).
И эти новые бары могут появится где угодно, не обязательно в конце истории и последовательно.
давно собирался свой шаблон для индикаторов онлайн проверить, написал такой код:
то, что мой шаблон корректно работает при переключении ТФ, при смене счета, при смене торгового инструмента я давно знаю
попробовал отключить сетевую карту в Виндовс, индикатор предварительно бросил на график ТФ М1, включил сетевую карту через минут 5, в логе получил как и при первом вызове индикатора rates_total - 1 , т.е. терминал сбрасывает prev_calculated в ноль и при обрыве связи
давно собирался свой шаблон для индикаторов онлайн проверить, написал такой код:
то, что мой шаблон корректно работает при переключении ТФ, при смене счета, при смене торгового инструмента я давно знаю
попробовал отключить сетевую карту в Виндовс, индикатор предварительно бросил на график ТФ М1, включил сетевую карту через минут 5, в логе получил как и при первом вызове индикатора rates_total - 1 , т.е. терминал сбрасывает prev_calculated в ноль и при обрыве связи
а при прокрутке чарта назад, когда подгружаются новые бары?
или только идет подгрузка баров (построение истории)
а если есть "дыры" в истории, и они подгружаются
вариантов может быть много, я не надеюсь что бары появляются только в конце и только последовательно
а при прокрутке чарта назад, когда подгружаются новые бары?
или только идет подгрузка баров (построение истории)
а если есть "дыры" в истории, и они подгружаются
вариантов может быть много, я не надеюсь что бары появляются только в конце и только последовательно
в MQL4 нет такой подгрузки - я проверял на евро на М1 пишет limit = 7331680 , что и есть максимально доступная история по евро если установлено большое число в окне настроек, в МТ5 там есть подгрузка
ЗЫ: возможно нужно тесты сделать если ТФ не синхронизирован и дыры в истории и будет подгрузка при прокрутке колесиком - позже проверю, не охота сейчас историю удалять в терминале
в MQL4 нет такой подгрузки - я проверял на евро на М1 пишет limit = 7331680
как это нет?
и дырки явно видны если не запускать терминал 1-2 месяцаоткрываем М1 на неиспользуемом символе и нажимаем "Home"
вот, кстати, клиент жаловался, что индикатор неправильно рисует - какие-то прямоугольники
(это уже я написал коммент)
Д1 загрузился, а Н1 - нет.
как это нет?
и дырки явно видны если не запускать терминал 1-2 месяцаоткрываем М1 на неиспользуемом символе и нажимаем "Home"
проверю сегодня на ноуте, он как раз неделю не включался, но в принципе как говорят береженого....
нужно добавить в мой шаблон примерно так:
if(limit>1) limit = rates_total - 1;
подумаю еще над этим
вот такой шаблон индикатора будет корректно работать и при переключении ТФ и при подгрузке истории и...:
вот такой шаблон индикатора будет корректно работать и при переключении ТФ и при подгрузке истории и...:
Спасибо, протестирую!
В OnCalculate история подгружается за несколько подходов. Первый вопрос, можно ли как то узнать что вся история наконец-то загрузилось?
Второй вопрос, видно что иногда prev_calculated становится 0, это означает что история будет продолжать подгружаться?