OrderModify, мова MQL4
Змінює параметри раніше відкритих або відкладених ордерів.
bool OrderModify ( int ticket , // номер ордера double price , // ціна відкриття double stoploss , // stop loss double takeprofit , // take profit datetime expiration , / / час закінчення ордера color arrow_color // колір );
[in] Унікальний порядковий номер ордера для модифікації.
[in] Нова ціна відкриття відкладеного ордера.
[in] Нове значення StopLoss.
[in] Нове значення TakeProfit.
[in] Час закінчення відкладеного ордера.
[in] Колір стрілок модифікації StopLoss та/або TakeProfit на графіку. Якщо параметр відсутній, або його значення дорівнює CLR_NONE, стрілка на графіку не відображається.
Повертає true при успішному завершенні функції або false у разі помилки. Щоб отримати інформацію про помилку, потрібно викликати функцію GetLastError().
Ціну відкриття та час закінчення можна змінювати лише у відкладених ордерів. Якщо як параметри функції передати незмінені значення, то в цьому випадку буде згенеровано помилку 1 (ERR_NO_RESULT).
На деяких торгових серверах може бути встановлена заборона застосування терміну закінчення відкладених ордерів. У цьому випадку при спробі задати ненульове значення у параметрі expiration буде згенеровано помилку 147 (ERR_TRADE_EXPIRATION_DENIED).
void OnStart () < int TrailingStop=50; //--- модифікує ціну Stop Loss ордера на покупку №12345 if (TrailingStop>0) < OrderSelect (12345, SELECT_BY_TICKET); if ( Bid - OrderOpenPrice ()> Point *TrailingStop) < if (OrderStopLoss () Bid - Point *TrailingStop) < bool res = OrderModify ( OrderTicket (), OrderOpenPrice (), NormalizeDouble ( Bid -Point *TrailingStop, Digits), OrderTakeProfit (),0,Blue); if (!res) Print ( "Помилка модифікації ордера. Код помилки=" , GetLastError ()); else Print ("Ціна Stop Loss ордера успішно модифікована."); > > > >