Использую в индикаторах на MQL4 включаемый файл <MovingAverages.mqh> для расчета. Индикаторы на нем работают быстро.
При вызове в советнике индикатор работает корректно, но если его поместить в тело условного оператора "if", то советник не открывает сделок, хотя логика советника остается та же.
Его это кого? Индикаторы надо вызывать на каждом баре, хотя бы раз. Хотя, по идее, он должен заново пересчитываться и все.
Лимит надо как-то так высчитывать:
limit=rates_total-prev_calculated;Дело в том, что при пропуске нескольких баров, индикатор не рассчитывается заново (prev_calculated!=0, как было когда-то). Получается, что несколько баров пропущено, а limit всегда равен 1.
Его это кого? Индикаторы надо вызывать на каждом баре, хотя бы раз. Хотя, по идее, он должен заново пересчитываться и все.
К примеру, как раньше делал, когда индикатор сглаживал с помощью "iMAOnArray":
if (tsi1 > tsi2) { line1=iCustom(NULL,0,"tsiErgodic",Period_MA_1,p2,p3,p4,p5,0,1); signal_line1=iCustom(NULL,0,"tsiErgodic",Period_MA_1,p2,p3,p4,p5,1,1); if (line1 > signal_line1)OpnB=true; }
а теперь только так работает
line1=iCustom(NULL,0,"tsiErgodic",Period_MA_1,p2,p3,p4,p5,0,1); signal_line1=iCustom(NULL,0,"tsiErgodic",Period_MA_1,p2,p3,p4,p5,1,1); if (line1 > signal_line1 && tsi1 > tsi2)OpnB=true;
Лимит надо как-то так высчитывать:
Дело в том, что при пропуске нескольких баров, индикатор не рассчитывается заново (prev_calculated!=0, как было когда-то). Получается, что несколько баров пропущено, а limit всегда равен 1.Попробовал. Сделки есть, но все равно где-то видимо получаются пропуски не сходится со старым вариантом и где нет вложений индикатора в if.
Да, вообщем пойдет и так. Просто думал, что кто-то уже сталкивался с этой проблемой.
Попробовал. Сделки есть, но все равно где-то видимо получаются пропуски не сходится со старым вариантом и где нет вложений индикатора в if.
Да, вообщем пойдет и так. Просто думал, что кто-то уже сталкивался с этой проблемой.
Специально сейчас проверил - все нормально. Оригинал (который здесь) вызывается на каждом баре, с моей коррекцией вызывается на каждом баре и раз в пять баров, значения совпадают абсолютно точно.
Спасибо Гуру!
Не получалось потому что пробовал так:
if(prev_calculated==0) limit=rates_total-1-p2-p3-p4-Period_MA_1; else limit=rates_total-prev_calculated;
заработало вот так без "if(prev_calculated==0) limit=rates_total-1-p2-p3-p4-Period_MA_1;":
limit=rates_total-prev_calculated;
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Использую в индикаторах на MQL4 включаемый файл <MovingAverages.mqh> для расчета. Индикаторы на нем работают быстро.
При вызове в советнике индикатор работает корректно, но если его поместить в тело условного оператора "if", то советник не открывает сделок, хотя логика советника остается та же.