OrderModify(t,norm_cena,norm_SL,norm_TP,0, CLR_NONE); //<--- IMHO это лишнее... if (OrderModify(t,norm_cena,norm_SL,norm_TP,0, CLR_NONE) <= 0) {Print("Error Modify: ", GetLastError(), ", norm_cena = ", norm_cena, ", norm_SL = ", norm_SL, ", norm_TP = ", norm_TP); Sleep(1000*3);} //Если нет необходимости в спячке всякий раз, а только при ошибке, лучше в скобки заключить обе операции за IF...
В чём смысл данной строки: double asd = MathAbs(price-price_tp); ??? Цена открытия не меняется со временем Может лучше всё же double asd = MathAbs(Bid-price_tp);?
И как данный код будет с покупками обходиться?
Два раза нормализовать одно и то же значение, по-моему, тоже нету необходимости.
И как данный код будет с покупками обходиться?
Смысл строки в том что сравнивает шаг с расстоянием на который выставлен тейк профит. То есть берется цена открытого ордера из нее вычитается тейк профит и сравнивается с шагом. Если меньше то ордер модифицируется изменяя стоп лосс и тейкпрофит. Поэтому данный метод вычитания из Бида не имеет смысла.
Меня волнует всего лишь один вопрос. Почему он не модифицирует ордер?
Все решил проблему. Оказалось все дело в Тикете. Тикет был не от того ордера.
Выше по коду от функции был перебор ордеров и от него осталось последнее значение OrderTicket()
if (open_tip == 1) { if (функция) == 0){бла бла бла} if (asd < shag){ Print(OrderTicket(), " Цена ордера: ", price, " Stoploss сменить с ", price_sl, " на ", price+shag, " TakeProfit сменить с ", price_tp, " на ", price-shag); mod_take (ticket, price, price+shag, price-shag); } }
Пришлось ввести новую переменную ticket и вставить ее вместо OrderTicket() и проблема решилась.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Не могу решить проблему с изменением стоп лоса и тейк профита у открытого ордера.
Стоп лосс и тейк профит разные значение и советник не пытается изменить уже существующие значения. И кстати говоря в руную ордер модифицируется нормально.
Синей полоской обозначил какой ордер пытается изменить. Оранжевыми существующие стоп лосс и тейк профит. Стрелкой обозначил текущую цену.
Сам код: