OrderModify() - промяна на параметрите на чакащи поръчки и отворени позиции

В минали броеве разгледах много полезна функция - OrderSend(). И в тази статия ще говорим за функцията OrderModify().

Тази функция ви позволява да променяте параметрите на чакащи поръчки и отворени позиции. Връща true при успех и false при неуспех. Кодът на грешката може да бъде получен с помощта на функцията GetLastError().

  • Тикет - тикер на отложена поръчка или отворена позиция;
  • Цена - ново ниво на отложена поръчка (не може да се променя за отворени позиции);
  • Stoploss - ново ниво Stop Loss;
  • Takeprofit - ново ниво Take Profit;
  • Изтичане - нова дата и час на изтичане на чакаща поръчка (ако чакащата поръчка не работи до тази дата и час, тя ще бъде изтрита - вижте "OrderExpiration() - дата на изтичане на чакаща поръчка");
  • Arrow_color - цвят на отварящата стрелка на графиката. Ако параметърът липсва или стойността му е равна на CLR_NONE, тогава стрелката за отваряне не се показва на графиката.

В случай на неправилни параметри, функцията връща следните кодове за грешка:

  • 1 (ERR_NO_RESULT) - ако нито един от параметрите не е променен;
  • 147 (ERR_TRADE_EXPIRATION_DENIED) - ако е забранено да се задава дата на изтичане на поръчката в настройките на търговския сървър. В този случай параметърът за изтичане винаги трябва да бъде нула).

Като практически пример за използване на тази функция, нека разгледаме настройката и управлението на плаващ стоп.

Позволете ми да ви напомня, че Trailing Stop (trailing stop) е алгоритъм за контролиране на Stop Loss ниво на поръчка. След поставяне на плаващ стоп (например X пипса), се случва следното:

  • MetaTrader не предприема никакви действия до момента, в който отворената позиция генерира печалба от Xсемки. След това MetaTrader поставя поръчка Stop Loss на разстояние X пипса от текущата цена (в този случай на нивото на рентабилност).
  • След първата стъпка MetaTrader изпраща команда за промяна на Stop Loss нивото на поръчката с X пипса разстояние от текущата котировка всеки път, когато разстоянието между нея и старото ниво на поръчка надвиши X пипса. В резултат на това поръчката Stop Loss се "изтегля" до текущата цена.

Нека приложим този принцип в MetaQuotes Language 4. Да приемем, че вече е избрана отворена позиция и знаем със сигурност, че тази позиция е отворена на инструмента, към който е прикрепен експертният съветник. Нека приемем също, че стойността на плаващия стоп в пипсове се съдържа в променливата TrailingStop.

В този код може да не разберете няколко функции:

  • Bid - Bid на последната котировка за инструмента, към който е прикрепен експертът;
  • Ask - Ask на последната котировка за инструмента, към който е прикрепен експертният съветник;
  • Point - размер на точката на текущия инструмент във валутата на котировката (0,0001 за EURUSD, 0,01 за USDJPY и т.н.).

Следващата статия ще ви покаже как да изтриете чакаща поръчка с помощта на функцията OrderDelete().