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().