Лимитный ордер вместо рыночного в MQL5

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
twin2012
482
twin2012  

Всем привет!

При открытии позиции Бай по рынку, можно получить очень большое проскальзывание. Например, на новостях. Хочется этого избежать.

Подобная тема уже поднималась: https://www.mql5.com/ru/forum/11920

Предлагается вместо открытия Бай по рынку, выставить БайЛимит, по цене, например, на 100 пипсов выше текущей Аск. Утверждается, что в этом случае сразу откроется рыночный Бай. Т.к. текущая Аск на 100 пипсов лучше, чем цена установки БайЛимит (Аск+100).

У меня открыть рыночную позицию не получилось.

Возвращается ошибка [Invalid price]. Т.е. выставить БайЛимит выше рынка нельзя? Вот мой код:

   double ask=SymbolInfoDouble(Symbol(), SYMBOL_ASK);
   
   MqlTradeRequest request;
   MqlTradeResult   result;
   
   request.action       = TRADE_ACTION_PENDING;
   request.magic        = 123456;
   request.order        = 0;
   request.symbol       = Symbol();
   request.volume       = 0.01;
   request.price        = ask+100*_Point;
   request.sl           = 0;
   request.tp           = 0;
   request.deviation    = 200;
   request.type         = ORDER_TYPE_BUY_LIMIT;
   request.type_filling = ORDER_FILLING_FOK;
   request.type_time    = ORDER_TIME_GTC;
   request.expiration   = 0;
   request.comment      = "";     
     
   if(!OrderSend(request, result))
   {
      PrintFormat("OrderSend error %d",GetLastError());
      PrintFormat("retcode=%u  deal=%I64u  order=%I64u",result.retcode,result.deal,result.order);
   }
Лимитный ордер при биржевом исполнении
Лимитный ордер при биржевом исполнении
  • 2013.04.30
  • www.mql5.com
Какие цены я должен указать в структуре MqlTradeRequest (double price; double stoplimit;).
Andrey Dik
13671
Andrey Dik  
twin2012:

Всем привет!

При открытии позиции Бай по рынку, можно получить очень большое проскальзывание. Например, на новостях. Хочется этого избежать.

Подобная тема уже поднималась: https://www.mql5.com/ru/forum/11920

Предлагается вместо открытия Бай по рынку, выставить БайЛимит, по цене, например, на 100 пипсов выше текущей Аск. Утверждается, что в этом случае сразу откроется рыночный Бай. Т.к. текущая Аск на 100 пипсов лучше, чем цена установки БайЛимит (Аск+100).

У меня открыть рыночную позицию не получилось.

Возвращается ошибка [Invalid price]. Т.е. выставить БайЛимит выше рынка нельзя? Вот мой код:

Скорее всего, исполнение по рынку вместо лимитки зависит от брокера (помниться я пробовал - работает).

В любом случае, либо гарантируется цена но не гарантируется исполнение при лимитных ордерах, либо гарантируется исполнение но не гарантируется цена при рыночных ордерах.

В случае, если лимитный ордер указан по цене хуже рынка, то (если поддерживается брокером) ордер будет исполнен как рыночный, со всеми вытекающими последствиями.

Как то обмануть (обойти) это положение вещей не получится. Единственное что можно пытаться делать для обеспечения максимальной вероятности исполнения без проскальзывания - указывать цену лимитного ордера аналогично рыночному в данный момент времени.

twin2012
482
twin2012  
ICMarkets MT5 ECN. Спасибо, я это понимаю. Странно, что это раньше работало, а теперь нет. И почему это зависит от брокера? Принципы торговли же одинаковые. Пробовал и на Alpari, тоже не работает. Хотелось бы узнать мнение разработчиков
Andrey Dik
13671
Andrey Dik  
TheXpert:
по-моему так никогда не работало на МТ. ни разу не видел чтобы в МТ можно было поставить бай лимит выше аска.
поставить то не получится в любом случае, имеется ввиду что при попытке выставления лимитки должен исполнится маркет, верно, стартер?
twin2012
482
twin2012  
Да, меня интересует открытие рыночного ордера с возможностью контролировать его проскальзывание. Лимитный ордер - это лишь инструмент открытия такого рыночного ордера 
TheXpert
18270
TheXpert  
twin2012:
а пробовали с режимом исполнения ORDER_FILLING_RETURN?
jdjahfkahjf
128
jdjahfkahjf  
Может выше рынка надо бай стоп, а не бай лимит.
twin2012
482
twin2012  
TheXpert:
а пробовали с режимом исполнения ORDER_FILLING_RETURN?

Да, пробовал разные варианты. Не работает. Ошибка именно [Invalid price]

twin2012
482
twin2012  
jdjahfkahjf:
Может выше рынка надо бай стоп, а не бай лимит.

Стоповый ордер не станет сразу рыночным

prostotrader
8039
prostotrader  
TheXpert:
а пробовали с режимом исполнения ORDER_FILLING_RETURN?

Так и надо делать

TheXpert
18270
TheXpert  
prostotrader:

Так и надо делать

FOK по идее тоже должен работать, если реализован. смущает что ошибка invalid price. может не везде можно или что-то поправили и вообще нельзя

123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий