Для мультивалютников есть один способ, для других другой
int start() { int counted_bars=IndicatorCounted(); int limit=Bars-counted_bars; if (limit>1) // если больше 1, то произошло изменение истории limit=Bars-PeriodK*K-1; // цикл обработки for (int i=limit;i>=0;i--) {} //---- return(0); }
Мой стандартный индикатор
отлично, спасибо!
то есть, если limit = 1 то появился новый бар, a когда подкачена история limit>1
Обычно limit равно 0 или 1, если больше 1 - то полный перерасчет
функция IndicatorCounted() возвращает реально посчитанное количество баров минус один.
limit будет равен 1 при новом тике,
2 при появлении нового бара.
При больше двух - полный перерасчет.
функция IndicatorCounted() возвращает реально посчитанное количество баров минус один.
limit будет равен 1 при новом тике,
2 при появлении нового бара.
При больше двух - полный перерасчет.
Извините, пройденный этап. Если есть желание до всего доходить своим умом - то никто не и мешает. Только 0 и 1
Только 0 и 1
Таки уверенны?
Хорошо, не буду Вам мешать)
как можно программно опрделить подкачку истории в индикаторе
при потере/начале связи ситуация с подкачкой неопределена. связано с недокументированными условиями обнуления функции IndicatorCounted().
тут немного обсуждалось: https://www.mql5.com/ru/forum/132490/page33
Я делаю так, если нужны особенные виды просчета, когда IndicatorCounted() не подходит.
barsLastTime = 0; ///В начале кода start() { ............ int iStart = 0; int iEnd = 0; if (barsLastTime == 0) { iStart = maxRaschet + MAPeriod - 2; } else { iStart = iBarShift(NULL, 0, barsLastTime, true); if (iStart < 0) { //// Что то не то. Можно и обнулить буфера и сделать просчет заново .......... } } if (iStart < iEnd) return(0); ////Просчет индикатора for(i = iStart; i >= iEnd; i--) { .......... barsLastTime = Time[i]; } .......... }
Обычно limit равно 0 или 1, если больше 1 - то полный перерасчет
сразу не внимателно просмотрел и действително 1 и 2 выходит, логично конечно
спасибо за заметку Swan
спасибо Vinin, Swan, Andrey01 и rlx,
все так просто
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования