Всё в коде выполнено в соответствии с рекомендацией:
//для поиска и модификации позиций покупки используетя Bid
//для поиска и модификации позиций продаж используется Ask
Но всё равно выдаётся "USDCHF,M30: OrderModify() FAILED 130; message: invalid stops" :(
Есть ещё такой фактор, в MT4 написано при изменении ордера ручками: "Вы можете установить Стоп лосс и Тейк профит не ближе 3 пунктов от рыночной цены", т.е. это зависит от спрэда.
Я пробовал и так для BUY:
if (OrderType() == OP_BUY) // открыта длинная позиция { // проверим - может можно/нужно уже трейлинг стоп ставить? if((Bid - OrderOpenPrice() - 4) > (Point * TrailingStop)) { if(OrderStopLoss() < (Bid - Point * TrailingStop)) { Print("OrderModify: OP_BUY #", OrderTicket()); //Print("Swap #", OrderTicket(), " ", OrderS); int spread=MarketInfo(Symbol(), MODE_SPREAD); Print("spread: ", spread); OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop - 4, OrderTakeProfit() //+ Point * TrailingStop // CHV , 0); PrintErrMessage("OrderModify() FAILED "); } } }
Результат тот же :(.
Хочу попросить разработчиков с MetaQuotes Software дать расширенные комментарии по OrderModify с рабочими примерами, информации не хватает.
Может стандартный трелинг поможет
if(TrailingStop>0) { if(Bid-OrderOpenPrice()>Point*TrailingStop) { if(OrderStopLoss()<Bid-Point*TrailingStop) { OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green); return(0); } } } if(TrailingStop>0) { if((OrderOpenPrice()-Ask)>(Point*TrailingStop)) { if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0)) { OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red); return(0); } } }
ну вы даёте.
посту 3 года, и вы решили его поднять?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Код такой:
В какой-то конфигурации он даже чего-то модифицировал, но практически в большинстве случаев вызов OrderModify() даёт ошибку 130, т.е. неверные стопы.
Пример-то слизан из статьи "Пример создания эксперта" на 'Пример создания эксперта', но не работает :(
Какие стопы нужно верно поставить?