Дело не в стоплоссах, а в том, что бы позиция закрывалась как только цена касалась MA
Пусть так, про стоплосы это Вы писали...) Всеодно, без кода понять почему не работает не представляется возможным, выложеный кусок не информативен напрочь.
Пусть так, про стоплосы это Вы писали...) Всеодно, без кода понять почему не работает не представляется возможным, выложеный кусок не информативен напрочь.
Должно быть я очень не точно выразился, извиняюсь, я имел ввиду, что сами MA должны служить стоплоссом, то бишь
... позиция закрывалась как только цена касалась MA
А код крайне примитивен:
Ticket=OrderTicket();
Tip =OrderType();
Lot =OrderLots();
MA2C=iMA(NULL,0,Period_MA2,0,MODE_SMA,PRICE_CLOSE,0);//Есть две MA с разным периодом.
MA3C=iMA(NULL,0,Period_MA3,0,MODE_SMA,PRICE_CLOSE,0);//И вот с такими параметрами.//Так же есть условия, при которых по идее должны срабатывать // функции закрытия ордеров.RefreshRates();if(Tip==0&&Bid==MA2C)//Обозначение типа ордера и условия закрытия{
CloseBuy=true;// Закрыть Buy}RefreshRates();if(Tip==0&&Bid==MA3C){
CloseBuy=true;// Закрыть Buy}RefreshRates();if(Tip==1&&Ask==MA2C){
CloseSell=true;// Закрыть Sell}RefreshRates();if(Tip==1&&Ask==MA3C){
CloseSell=true;// Закрыть Sell}// Закрытие ордеровwhile(true)// Цикл закрытия орд.{if(Tip==0&& CloseBuy==true)// Открыт ордер Buy..{//и есть критерий закрAlert("Попытка закрыть Buy ",Ticket,". Ожидание ответа..");RefreshRates();// Обновление данных
ALERT=OrderClose(Ticket,Lot,Bid,3,Blue);// Закрытие Buyif(ALERT==true)// Получилось :){Alert("Закрыт ордер Buy ",Ticket);break;// Выход из цикла закр}if(Fun_Error(GetLastError())==1)// Обработка ошибокcontinue;// Повторная попыткаreturn;// Выход из start()}if(Tip==1&& CloseSell==true)// Открыт ордер Sell..{// и есть критерий закрAlert("Попытка закрыть Sell ",Ticket,". Ожидание ответа..");RefreshRates();// Обновление данных
ALERT=OrderClose(Ticket,Lot,Ask,3,Red);// Закрытие Sellif(ALERT==true)// Получилось :){Alert("Закрыт ордер Sell ",Ticket);break;// Выход из цикла закр}if(Fun_Error(GetLastError())==1)// Обработка ошибокcontinue;// Повторная попыткаreturn;// Выход из start()}break;// Выход из while}
Уже сейчас думаю, что 4 условия можно сменить на 2
Symb=Symbol();// Название фин.инстр.
Total=0;// Количество ордеровfor(int i=1; i<=OrdersTotal(); i++)// Цикл перебора ордер{if(OrderSelect(i-1,SELECT_BY_POS)==true)// Если есть следующий{// Анализ ордеров:if(OrderSymbol()!=Symb)continue;// Не наш фин. инструмif(OrderType()>1)// Попался отложенный{Alert("Обнаружен отложенный ордер. Эксперт не работает.");return;// Выход из start()}
Total++;// Счётчик рыночн. ордif(Total>1)// Не более одного орд{Alert("Несколько рыночных ордеров. Эксперт не работает.");return;// Выход из start()}
Ticket=OrderTicket();// Номер выбранн. орд.
Tip =OrderType();// Тип выбранного орд.
Lot =OrderLots();// Количество лотов}//И далее как выше...
Мне важно понять, возможно ли такое сделать в принципе, потому как при тестировании в режиме визуализации ордера не закрываются на MA
Novice писал(а)>> Мне важно понять, возможно ли такое сделать в принципе, потому как при тестировании в режиме визуализации ордера не закрываются на MA
В принципе возможно. У Вас в системе возможен только ордер единовременно?
Попробуйте нормализовать цены Bid/Ask и значения MA при сравнении на равенство, это надо полюбому...
Каждый кусок кода надо клещями вытыскивать, у Вас там грааль?) Отчего просто сразу эксперт не приципить. Давно бы уж поправил.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Выложите весь код, стоплосами тут пока вообще не пахнет...
Дело не в стоплоссах, а в том, что бы позиция закрывалась как только цена касалась MA
Дело не в стоплоссах, а в том, что бы позиция закрывалась как только цена касалась MA
Пусть так, про стоплосы это Вы писали...) Всеодно, без кода понять почему не работает не представляется возможным, выложеный кусок не информативен напрочь.
Пусть так, про стоплосы это Вы писали...) Всеодно, без кода понять почему не работает не представляется возможным, выложеный кусок не информативен напрочь.
Должно быть я очень не точно выразился, извиняюсь, я имел ввиду, что сами MA должны служить стоплоссом, то бишь
... позиция закрывалась как только цена касалась MA
А код крайне примитивен:
Уже сейчас думаю, что 4 условия можно сменить на 2
Тогда уж так) Хотя по-любому бредовый кусок, машки строятся по ценам Bid, и сранивать их так... Ну не знаю.
Что-то я у Вас в коде, OrderSelect не вижу?
Он стандартный, из учебника:
Мне важно понять, возможно ли такое сделать в принципе, потому как при тестировании в режиме визуализации ордера не закрываются на MAМне важно понять, возможно ли такое сделать в принципе, потому как при тестировании в режиме визуализации ордера не закрываются на MA
В принципе возможно. У Вас в системе возможен только ордер единовременно?
Попробуйте нормализовать цены Bid/Ask и значения MA при сравнении на равенство, это надо полюбому...
Каждый кусок кода надо клещями вытыскивать, у Вас там грааль?) Отчего просто сразу эксперт не приципить. Давно бы уж поправил.
В принципе возможно. У Вас в системе возможен только ордер единовременно?
Попробуйте нормализовать цены Bid/Ask и значения MA при сравнении на равенство, это надо полюбому...
Каждый кусок кода надо клещями вытыскивать, у Вас там грааль?) Отчего просто сразу эксперт не приципить. Давно бы уж поправил.
После этого голова пошла кругом...
Нет) До Грааля как до другой галактики, лишь попытки реализовать и улучшить ТС.
Не получилось выложить в посте весь код, прикрепляю
После этого голова пошла кругом...
Нет) До Грааля как до другой галактики, лишь попытки реализовать и улучшить ТС.
Не получилось выложить в посте весь код, прикрепляю
Ну там конечно бредово) Но в принцмпе как-то работает:
Единственно, что убрал увеличение лота. А Вы вроде говорили, что ордера не закрываются?
Так как...?
...нормализовать цены Bid/Ask и значения MA при сравнении на равенство...
Я просто не совсем понимаю, как именно нормализовать... NormalizeDouble(Ask, Digits) ?
Проблема актуальна, до сих пор думаю как заставить ордера закрываться сразу же при достижении цены MA.
После нормализации при компиляции почему то вышла ошибка, причём в той части кода, где вообще не затрагивался.