Торговля фьючерсами. Установка отложенного ордера

 

Добрый день!

Кто-нибудь знает, как установить отложенный ордер( как в QUIK),

что бы он был установлен по МОЕЙ цене в режиме исполнения request.type_filling = ORDER_FILLING_IOC; ? 

Такой вариант отклоняется брокером:

(причём, result.retcode = TRADE_RETCODE_PLACED и ressult.order > 0 ) 

void SetOrder( const string aSymbol, const double price, const double volume, const bool buy_sell )
{
  MqlTradeRequest   request = {0};
  MqlTradeResult    result  = {0};

//--- Fill structure
    request.action       = TRADE_ACTION_PENDING;
    request.magic        = MagicNumber;
    request.symbol       = aSymbol;
    request.volume       = volume;
    request.price        = price;
    
    if ( buy_sell )
    {
      request.type       = ORDER_TYPE_BUY_LIMIT;
      request.comment    = "Buy...";
    }
    else
    {
      request.type       = ORDER_TYPE_SELL_LIMIT;
      request.comment    = "Sell...";
    }       
    request.type_filling = ORDER_FILLING_IOC;
    request.type_time    = ORDER_TIME_DAY;

//--- Send order
  if ( OrderSend( request, result ) )
  {
    if ( result.retcode == TRADE_RETCODE_PLACED ) 
    {
      order_ticket = result.order;

      exp_state = STATE_ORDER_SET;
    }
  }
}
 
Допустимые типы заливки можно узнать, посмотрите на SYMBOL_TRADE_EXEMODE и SYMBOL_FILLING_MODE.
 

Уважаемый komposter!

Я спрашивал не про допустимые виды заливки,

а как выставить ордер (отложеный) по моей ЦЕНЕ и ОБЪЁМУ, которые берутся из стакана

цен. 

result.retcode == TRADE_RETCODE_PLACED, то это означает, что ОРДЕР принят брокером и выставлен на биржу.

 

МТ5 брокера "Отррытие" работает в режиме заключения сделок (SYMBOL_TRADE_EXEMODЕ == SYMBOL_TRADE_EXECUTION_EXCHANGE),

который принимает на исполнения рыночные ордера, выставленные БЕЗ ЦЕНЫ, а мне необходимо что бы мой ордер

исполнился по цене и объёму взятые из стакана цен (объём может измениться, поэтому  request.type_filling = ORDER_FILLING_IOC),

но если изменится ЦЕНА, то сделка не должна совершится.   

 

Mikalas:

мне необходимо что бы мой ордер исполнился по цене и объёму взятые из стакана цен

но если изменится ЦЕНА, то сделка не должна совершится.   


1. ордер должен отмениться, если цена тикнула в какуюто сторону но ордер еще не стал на заливку? или речь про цену итоговой позиции, что окажется не такая как в лимитном ордере?

2. узнайте у вашего брокера по поводу FOK исполнения.  Они ордер исполняют по указанной цене одним целым объемом или возможно заливка ордера несколькими сделками по разной цене.

 

Добрый день, sergeev!

1. Ордер не должен исполниться, если цена изменилась к моменту прихода ордера на биржу.

2. У брокера отложенные FOK ордера(ПОКА) не работают, поэтому я использую request.type_filling = ORDER_FILLING_IOC;

Ордер может заливаться несколькими сделками, НО по цене не хуже, чем указана в ордере.

Из справки МТ5:

ORDER_FILLING_IOC 

Означает согласие совершить сделку по максимально доступному на рынке объему в пределах указанного в ордере.

В случае невозможности полного исполнения ордер будет исполнен на доступный объем, а неисполненный объем ордера будет отменен.

Конец цитаты. 

Установка ОТЛОЖЕННОГО ордера подразумевает, что ордер будет исполнен по цене, не хуже, указанной в ордере.

Мне нужно, чтобы ордер исполнился с некоторым объёмом по цене не хуже чем указана в ордере.

Цена хуже - ордер отменяется.

Объем меньше - ордер исполняется с текущим (доступным) объёмом но по цене не хуже, чем в ордере.
 

 
Mikalas:

Добрый день, sergeev!

у кого день, а у кого еще ночь...

1. Ордер не должен исполниться, если цена изменилась к моменту прихода ордера на биржу.

тогда отмените ордер, если вы увидели изменение цены.

Ибо в МТ5 нет такой автоматизации отмены ордеров при изменении цены...

вам самому не смешно?  ;)

как можно поставить лимитку и ждать её исполнения, но при этом удалить её сразу после выставления при любом изменении цены :))))


2. У брокера отложенные FOK ордера(ПОКА) не работают, поэтому я использую request.type_filling = ORDER_FILLING_IOC;

IOС так IOC.  Разруливайте с ним.

 

Доброй ночи, sergeev!

Ничего смешного не вижу.

Ответьте, пожалуйста, как совершить сделку, по указанной цене

Я ВИЖУ цену и объём в стакане цен, и хочу купить/продать этот объём по этой цене, которая есть в стакане, НО

если цена изменилась - НЕ покупаем/продаём. 

 

Из справочника ТЕРМИНАЛА МТ5 " Общие принципы -->Типы ордеров":

В режиме биржевого исполнения цена, указываемая при выставлении лимитных ордеров, не проверяется.

Ее можно указать выше текущей цены Ask (для ордеров на покупку) и ниже цены Sell (для ордеров на продажу).

При выставлении ордера с такой ценой он практически сразу срабатывает и превращается в рыночный.

Однако в отличие от рыночных ордеров, где трейдер фактически соглашается на сделку по неуказанной текущей рыночной цене,

лимитный ордер будет исполнен по цене не худшей, чем указанная. 

 

А разве можно выставить на РТС лимитный ордер "всё или ничего"?. Сужу по нашей УБ, которая на тех же технологиях. Исполнение может быть (очень часто) частичным. Возможно, вы имеете ввиду маркет-ордер (который тоже то лимитный) и который вы хотите полностью заполнить? 

Ставьте себе лимитник по цене, которая нужна - зальют - хорошо, не зальют - переставите. И лимитник может быть по цене выше аска (для покупок)

 
notused:

А разве можно выставить на РТС лимитный ордер "всё или ничего"?. Сужу по нашей УБ, которая на тех же технологиях. Исполнение может быть (очень часто) частичным. Возможно, вы имеете ввиду маркет-ордер (который тоже то лимитный) и который вы хотите полностью заполнить? 

Ставьте себе лимитник по цене, которая нужна - зальют - хорошо, не зальют - переставите. И лимитник может быть по цене выше аска (для покупок)

на РТС есть "немедленно или отклонить" и "снять остаток"
 

На РТС есть:

1. ORDER_FILLING_FOK - Всё или ничего

2. ORDER_FILLING_IOC - Всё или частично(остаток удаляется)

3. ORDER_FILLING_RETURN - Всё или частично(остаток не удаляется) 

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 

Все зависит от ситуации куда вы выставляете ордер.

BuyLimit - выставляется ниже текущей цены по указанной вами цене, срабатывает при достижении цены. Если же выставить его выше текущей цены, то он сработает как рыночный и возьмет текущую цену.

SellLimit - Выставляется выше текущей цены по указанной вами цене, срабатывает при достижении цены. Если же выставить его ниже текущей цены, то он сработает как рыночный и возьмет текущую цену.

BuyStop - Выставляется выше текущей цены по указанной вами цене, срабатывает при достижении цены.

SellStop - Выставляется ниже текущей цены по указанной вами цене, срабатывает при достижении цены.

В общем если вы торгуете на отбой, используйте Limit ордера, если же вы выставляете ордера по тренду и хотите набрать позицию, то используйте Stop ордера.

Если у вас ордера открываются по тренду то используйте вместо 

ORDER_TYPE_BUY_LIMIT и ORDER_TYPE_SELL_LIMITORDER_TYPE_BUY_STOP и ORDER_TYPE_SELL_STOP

Или же комбинируйте, в зависимости что вам требуется. 

Причина обращения: