ФОРТС. Вопросы по исполнению - страница 88

 
fxsaber:

Разве лимитник может быть FOK?

 

Хороший вопрос.

Т.е (выделено красным) лимитеый ордер не может быть FOK, т.к исполняется по фиксированной цене,

но с другой стороны объёма может и хватить.... 


ORDER_FILLING_FOK

Данная политика исполнения означает, что ордер может быть исполнен исключительно в указанном объеме.
Если на рынке в данный момент не присутствует достаточного объема финансового инструмента, то ордер не будет исполнен.
Необходимый объем может быть составлен из нескольких предложений, доступных в данный момент на рынке.
Думаю (никогда не использовал FOK), что может быть FOK, но нужно проверять объём.
 
prostotrader:

Хороший вопрос.

Т.е (выделено красным) лимитеый ордер не может быть FOK, т.к исполняется по фиксированной цене,

но с другой стороны объёма может и хватить.... 


ORDER_FILLING_FOK

Данная политика исполнения означает, что ордер может быть исполнен исключительно в указанном объеме.
Если на рынке в данный момент не присутствует достаточного объема финансового инструмента, то ордер не будет исполнен.
Необходимый объем может быть составлен из нескольких предложений, доступных в данный момент на рынке.

Да это просто Справка кривая. Лимитник - это всегда только RETURN-тип филлинга. FOK, IOC - маркеты only.

Но это касается только биржи и ECN. Поскольку есть и STP, где лимитники - виртуальные заявки, которые являются просто инициаторами создания соответствующих маркет-ордеров, то для них FOK/IOC возможен. Но это только на экране они лимитники, а не по сути. 

 
fxsaber:
Да это просто Справка кривая. Лимитник - это всегда только RETURN-тип филлинга. FOK, IOC - маркеты only.

Не правда Ваша, я всегда использую лимитники, но только с IOC

уже более 3 -х лет 

Проверьте сами :) 

Добавлено

Лимитный ордер - такой же как рыночный, но мсеет цену исполнения и только!

Есть цена - исполнился, нет снимается. 

 

Политика исполнения

Помимо общих правил исполнения ордеров, задаваемых брокером, трейдер может указывать дополнительные условия в поле "Заполнение" окна установки ордера:

  • Все/Ничего (Fill or Kill)
    Данная политика исполнения означает, что ордер может быть исполнен исключительно в указанном объеме. Если на рынке в данный момент не присутствует достаточного объема финансового инструмента, то ордер не будет исполнен. Необходимый объем может быть составлен из нескольких предложений, доступных в данный момент на рынке.
  • Все/Частично (Immediate or Cancel)
    В данном случае трейдер соглашается совершить сделку по максимально доступному на рынке объему в пределах указанного в ордере. В случае невозможности полного исполнения ордер будет исполнен на доступный объем, а неисполненный объем ордера будет отменен. Возможность использования IOC ордеров определяется на торговом сервере.
  • Вернуть (Return)
    Данный режим используется для рыночных (Buy и Sell), лимитных и стоп-лимитных ордеров и только в режимах "Исполнение по рынку" и "Биржевое исполнение". В случае частичного исполнения рыночный или лимитный ордер с остаточным объемом не снимается, а продолжает действовать.

Применение политик исполнения в зависимости от режима исполнения можно представить в виде таблицы:

Режим исполнения\Политика исполнения

Все/Ничего (FOK)

Все/Частично (IOC)

Вернуть (Return)

Немедленное исполнение

+

Исполнения по запросу

+

Исполнение по рынку

+

+

+

Биржевое исполнение

+

+

+

 
prostotrader:

Не правда Ваша, я всегда использую лимитники, но только с IOC

уже более 3 -х лет 

Проверьте сами :) 

  1. Выставляем IOC-BuyLimit на 10 лотов внутрь спреда и далее сразу делаем SELL 1 лотом. Ожидаемая реакция - две противоположные сделки по одной и той же цене  (профит ноль, но двойная комиссия) на 1 лот, и 9 лотов canceled.
  2. Выставляем FOK-BuyLimit на 10 лотов внутрь спреда и далее сразу делаем SELL 1 лотом. Ожидаемая реакция - SELL на 1 лот, и 10 лотов canceled.

Такого Вы не встретите. А то, что в Request для лимитников прокатывает выставление FOK/IOC-типов, совсем не говорит о том, что они этого типа.

 
fxsaber:

  1. Выставляем IOC-BuyLimit на 10 лотов внутрь спреда и далее сразу делаем SELL 1 лотом. Ожидаемая реакция - две противоположные сделки по одной и той же цене  (профит ноль, но двойная комиссия) на 1 лот, и 9 лотов canceled.
  2. Выставляем FOK-BuyLimit на 10 лотов внутрь спреда и далее сразу делаем SELL 1 лотом. Ожидаемая реакция - SELL на 1 лот, и 10 лотов canceled.

Такого Вы не встретите. А то, что в Request для лимитников прокатывает выставление FOK/IOC-типов, совсем не говорит о том, что они этого типа.

Посмотрите на таблицу выше.

FOK есть во всех режимах.

Просто при FOK нужно проверять объём, но это не ГАРАНТИЯ того, что ордер исполнится, потому что когда

ордер "придёт" на Биржу нужного объёма может и не быть (разъели уже), отсюда

 Неполное сведение FOK заявки

 
prostotrader:

когда ордер "придёт" на Биржу нужного объёма может и не быть (разъели уже), отсюда

 Неполное сведение FOK заявки

Кривая Справка. Лимитников это не касается. Выше привел два случая, которые легко проверить. Их не получится воспроизвести, потому что FOK/IOC-лимитников нет, если они выставляются по цене, не хуже текущей.
 
fxsaber:
Кривая Справка. Лимитников это не касается. Выше привел два случая, которые легко проверить. Их не получится воспроизвести, потому что FOK/IOC-лимитников нет, если они выставляются по цене, не хуже текущей.

Я не фантазирую, а рассказываю о своих ордерах, которые выставляются советником на реальном счёте.

Если Вам хочется дкмать так, как Вы сейчас думаете, то вольному - воля! 

 
prostotrader:

Я не фантазирую, а рассказываю о своих ордерах, которые выставляются советником на реальном счёте.

Если Вам хочется дкмать так, как Вы сейчас думаете, то вольному - воля! 

Железная логика

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

ФОРТС. Вопросы по исполнению

fxsaber, 2017.02.22 22:50

  1. Выставляем IOC-BuyLimit на 10 лотов внутрь спреда и далее сразу делаем SELL 1 лотом. Ожидаемая реакция - две противоположные сделки по одной и той же цене  (профит ноль, но двойная комиссия) на 1 лот, и 9 лотов canceled.
  2. Выставляем FOK-BuyLimit на 10 лотов внутрь спреда и далее сразу делаем SELL 1 лотом. Ожидаемая реакция - SELL на 1 лот, и 10 лотов canceled.

Такого Вы не встретите.

Зачем спорить, если есть четкий критерий проверки, есть FOK/IOC для лимитников или нет.
 
fxsaber:
Железная логика
Зачем спорить, если есть четкий критерий проверки, есть FOK/IOC для лимитников или нет.

Простите, Вы верояно не обратили внимания, что я написал, что использую ЛИМИТНЫЕ ордера с заливкой IOC

//+------------------------------------------------------------------+
//| Expert set order function                                        |
//+------------------------------------------------------------------+
void SetOrder(const string aSymbol, uint &order_id, const double price, const double volume, const bool buy_sell)
{
  MqlTradeRequest request = {0};
  MqlTradeResult  result  = {0};
  main_order_ticket = 0;
  main_mem_magic = magic_storage + 1;
  main_order_symbol = aSymbol;
//---  
  if(main_mem_magic >= (magic_number + 65530)) main_mem_magic = magic_number;
  
//--- Fill structure
  request.magic = main_mem_magic;
  request.symbol = aSymbol;
  request.volume = volume;
  request.type_filling = ORDER_FILLING_IOC;
  request.type_time = ORDER_TIME_DAY;
    
  if(price == 0)
  {
    request.action = TRADE_ACTION_DEAL;
    request.comment = "Рыночный ордер...";
//---    
    if(buy_sell)
    {
      request.type = ORDER_TYPE_BUY;
    }
    else
    {
      request.type = ORDER_TYPE_SELL;
    }
  }
  else
  {
    request.action = TRADE_ACTION_PENDING;
    request.price = price;
    request.comment = "Лимитный ордер...";
//---    
    if (buy_sell)
    {
      request.type = ORDER_TYPE_BUY_LIMIT;
    }
    else
    {
      request.type = ORDER_TYPE_SELL_LIMIT;
    }  
  }  
//--- Send order
  if(OrderSendAsync(request, result))
  {
    if((result.retcode == TRADE_RETCODE_PLACED) || (result.retcode == TRADE_RETCODE_DONE))
    {
      order_id = result.request_id;
      magic_storage = main_mem_magic;
      main_state = ORD_MAIN_DO_SET;
      main_mem_time = GetMicrosecondCount();
      main_start_time = TimeCurrent();
      SetTransCount();
    }
    else
    {
      order_id = 0;
      main_mem_magic = 0;
      main_order_symbol = "";
      main_state = ORD_NO_STATE;
      main_mem_time = 0;
      main_start_time = 0;
      CheckError(result.retcode, "SetOrder: Ордер не установлен! Причина: ", MAIN_ORDER, main_order_ticket);
    }
  }
  else
  {
    order_id = 0;
    main_mem_magic = 0;
    main_order_symbol = "";
    main_state = ORD_NO_STATE;
    main_mem_time = 0;
    main_start_time = 0;
    CheckError(result.retcode, "SetOrder: Ордер не отправлен! Причина: ", MAIN_ORDER, main_order_ticket);
  }
}

Этот код у меня работает более 3-х лет

 
prostotrader:

Простите, Вы верояно не обратили внимания, что я написал, что использую ЛИМИТНЫЕ ордера с заливкой IOC

Этот код у меня работает более 3-х лет

Именно по этой причине написал

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

ФОРТС. Вопросы по исполнению

fxsaber, 2017.02.22 22:50

  1. Выставляем IOC-BuyLimit на 10 лотов внутрь спреда и далее сразу делаем SELL 1 лотом. Ожидаемая реакция - две противоположные сделки по одной и той же цене  (профит ноль, но двойная комиссия) на 1 лот, и 9 лотов canceled.
  2. Выставляем FOK-BuyLimit на 10 лотов внутрь спреда и далее сразу делаем SELL 1 лотом. Ожидаемая реакция - SELL на 1 лот, и 10 лотов canceled.

Такого Вы не встретите. А то, что в Request для лимитников прокатывает выставление FOK/IOC-типов, совсем не говорит о том, что они этого типа.

Плевать, что там MT5 якобы допускает для лимитных заявок. Важно лишь то, что доходит до биржи. Так вот, если бы на бирже стоял IOC-лимитник, то он вел себя так, как в п.1. FOK - п.2. Этого на бирже Вы не встретите, поэтому надо говорить о сути FOK/IOC, а не о том, что MT5 что-то там допускает в Request-запросах. Сделайте OrderGetInteger своих "IOC"-лимитников хотя бы.
Причина обращения: