У меня есть ситуация, когда я получаю 4 заказа от моего клиента (см. ниже). Один ордер является OTO (ордер запускает ордер), и он активирует три других ордера, если он будет исполнен. Эти три ордера OCO (заказ отменяет ордер) друг друга. Таким образом, если один заполняется, два других аннулируются.
CME-ES.Enter ~ B 2 @ESM15 @ 2048.25 Limit Day [OTO CME-ES.ExitL, CME-ES.ExitS, CME-ES.ExitT]
CME-ES.ExitL ~ S 2 @ESM15 @ 2040.25 Limit Day [OCO CME-ES.ExitS, CME-ES.ExitT]
CME-ES.ExitS ~ S 2 @ESM15 @ 2058.25 Stop Day [OCO CME-ES.ExitL, CME-ES.ExitT]
CME-ES.ExitT ~ S 2 @ESM15 @ 1/24/2015 3:50pm Time Day [OCO CME-ES.ExitL, CME-ES.ExitS]
Note: "CME-ES.Enter" is the ClOrdID
В этой системе есть обычные стоп- и лимитный ордера на выход, но также есть и третий ордер на выход в определенное время.
Этот тип трехстороннего OTO/OCO не существует (я думаю) в спецификациях исправлений. Разве что есть тег, где бы все эти ордера отменялись (или уходили в рынок) в определенное время.
Если нет нормального способа сделать это... несколько вариантов кажутся обычным способом справиться с этим. Я мог бы отправить ордера в виде списка и предоставить инструкции OTO/OCO в поле Text(58) каждого ордера... или, возможно, в ListExecInst(69)... и, по сути, поместить текст, который находится в скобках, в поле клиента. заказы.
1) Есть ли официальный способ справиться с этим?
2) Есть ли какой-то другой неофициальный, но распространенный способ сделать это?
3) Если бы не 1 или 2, мой способ показался бы хорошим подходом.
4) Разумно ли мое предложение выше... или это ужасный извращенный способ использования исправления?
Спасибо! - Брайан
Примечание. Я программирую приемник и буду получать эти сообщения... но буду определять, что должно быть отправлено.