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 ордера успішно модифікована."); > > > >