Реализован алгоритм такого условия следующим образом, вот сам фильтр:
//================фильтр - начало схождения ===================if (FILTER_ ) { //если выключатель фильтра включен//------------------------------------------------ //задаем вычисление ценовых линий на втором бареdouble MA_11= (iMA(Symbol_1,Period(),per2,0,ma_method,Price,2)-
iMA(Symbol_1,Period(),per1,0,ma_method,Price,2)) ;
double MA_21= (iMA(Symbol_2,Period(),per2,0,ma_method,Price,2)-
iMA(Symbol_2,Period(),per1,0,ma_method,Price,2)) ;
double ДЕЛЬТА_MA_2 = MathAbs(MA_11 - MA_21);//разность между ценовыми линиями на 2 баре//if (ДЕЛЬТА_MA_2 >= ДЕЛЬТА_MA) // если линии начинают сходится, разрешаем вход
Trade_Filter2=true; else Trade_Filter2=false;
//-------------------------------------------------
} // выключатель фильтра включен//================== конец блока 2-го фильтра ======================
А вот само условие для входа:
if ( TradeDOWN==true && .... ) { //если условия соответствуют заданным if (Trade_Filter2==true || ! FILTER_ ) { // фильтр включен/выключен
..... открвываем позиции: продаем первый инструмент и покупаем второй
Но советник, словно не видит условия фильтра! Он как и прежде открывает позиции, не обращая внимания на
if (Trade_Filter2==true || ! FILTER_ ) { .....
Не пойму, почему. Неоднократно отслеживала в онлайне открытие позиций. Но фильтр не работает! Советник его не видит... Подскажите, пож., где здесь неточность ?
И еще вопрос. Как правильнее задавать в глобальных переменных (сейчас стоит первый вариант), -
bool Trade_Filter2=0; либо просто bool Trade_Filter2;
Я визуально наблюдаю, что линии еще расходятся и комментраий отображает "Фильтр запрещает вход"! Но вход все равно реализуется, - советник не обращает внимания на фильтр.
Размерность инструментов одинаковая, либо (при разной размерности) - программно приведена к одинаковой с помощью коэф-тов (в коде выше это не показано, чтобы не загромождать)). С этим - порядок!
На время отключите свой комментарий и пробуйте выводить его из разных мест. От места проверки условий фильтра до места его использования. Так найдете строчку в которой происходит искажение.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
продолжение вопроса:
Реализован алгоритм такого условия следующим образом, вот сам фильтр:
А вот само условие для входа:
Но советник, словно не видит условия фильтра! Он как и прежде открывает позиции, не обращая внимания на
if (Trade_Filter2==true || ! FILTER_ ) { .....
Не пойму, почему. Неоднократно отслеживала в онлайне открытие позиций. Но фильтр не работает! Советник его не видит... Подскажите, пож., где здесь неточность ?
И еще вопрос. Как правильнее задавать в глобальных переменных (сейчас стоит первый вариант), -
bool Trade_Filter2=0; либо просто bool Trade_Filter2;
продолжение вопроса:
...
Выведите MA_11, MA_21, ДЕЛЬТА_MA_2 в в Coment() и посмотрите что там. Comment() вставлять после double ДЕЛЬТА_MA_2...
Выполняется сравнение MACD с двух разных символов, у них может быть очень разная размерность.
Комментарий есть. В комменте заданы надписи "Фильтр разрешает (либо запрещает) вход"), вот так:
Сделано это так:
Я визуально наблюдаю, что линии еще расходятся и комментраий отображает "Фильтр запрещает вход"! Но вход все равно реализуется, - советник не обращает внимания на фильтр.Размерность инструментов одинаковая, либо (при разной размерности) - программно приведена к одинаковой с помощью коэф-тов (в коде выше это не показано, чтобы не загромождать)). С этим - порядок!
А вот double ДЕЛЬТА_MA_2, MA_11, MA_21- заявлены ниже ф-и Сomment()
Но Trade_Filter2 - заявлен в глобальных переменных! Так что, думаю, - что здесь в коментарии все сделано корректно!
Добрый день. После сегодняшнего обновления мт4 не компиллируется код советника. Непонятные 30 ошибок выдает компилятор.
Подскажите, пож. почему ошибки вдруг обозначились в таких строках
'on_off' - undeclared identifier Exp_ARBITR_2Line_Spread_002Mod.mq4 125 35кода:
'on_off4' - undeclared identifier Exp_ARBITR_2Line_Spread_002Mod.mq4 140 47
'on_off41' - undeclared identifier Exp_ARBITR_2Line_Spread_002Mod.mq4 142 47
И как их исправить?
Так компилируется?
Но лучше так:
Если я правильно зателепатил, так должно работать