//--- if (SlowMA <= BigMA)//Пропуск на продажи { if(PriceMA<=SlowMA&&SS==false&&SlowMA<=BigMA) //Sell Order { Ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Spread,Bid+(Spread+StopLoss)*Point,Bid-(TakeProfit+Spread)*Point); if(Ticket>0) {SS=true;//Блокировка входов Alert("Открыт ордер Sell",Ticket); Alert("Блокировщик входов Sell работает успешно,наслаждайтесь!"); } } }//Выход из продаж if(SlowMA >= BigMA)//Пропуск на покупки { if(PriceMA>=SlowMA&&SB==false&&SlowMA>=BigMA) //Buy Order { Ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Spread,Bid-(Spread+StopLoss)*Point,Bid+(TakeProfit-Spread)*Point); if (Ticket > 0) { Alert("Открыт ордер Buy",Ticket); SB=true;//Блокировка входов if(SB==true) { Alert("Блокировка лишних входов Buy работает успешно,наслаждайтесь!"); } } }
Программный код на данное время,работает не так,как хотелось бы
Кто наткнется на такую же проблему
Вроде это решение проблемы(как я понял)
Код: int Crossed (double line1 , double line2) { static int last_direction = 0; static int current_dirction = 0; if(line1>line2)current_dirction = 1; //up if(line1<line2)current_dirction = 2; //down if(current_dirction != last_direction) //changed { last_direction = current_dirction; return (last_direction); } else { return (0); } } Как я уже говорил, идея эксперта заключается в слежении за двумя средними и их пересечениями. Для достижения этой цели мы создаем функцию Crossed. Функция Crossed принимает на вход две переменные типа double и возвращает переменную типа integer. Первый параметр - это тек. значение первой линии (в нашем случае - быстрой EMA). Второй параметр - это тек. значение второй линии (в нашем случае - медленной EMA). При каждом вызове функция сохраняет информацию о взаиморасположении этих линий в статических переменных (cтатические переменные хранятся в постоянной области памяти программы, их значения не теряются при выходе из функции). При этом функция сравнивает тек. взаиморасположение линий с их взаиморасположением при предыдущем вызове. - Функция возвращает 0, если взаиморасположение линий не изменилось. - Функция возвращает 1, если взаиморасположение линий изменилось, и первая линия оказалась над второй. - Функция возвращает 2, если взаиморасположение линий изменилось, и первая линия оказалась под второй.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Всем привет,уважаемые программисты и форумчане.
Нужна ваша помощь с советником.
Дело в том ,что я не нашел программного кода на пересечение МА ,а нашел только SLowMA>FastMA(как то так).
Мне надо ,чтобы при пересечении FastMA и SlowМА открывался ордер именно в точке пересечения.
Заранее спасибо ,жду ответов