Тип ордера FillOrCancel
Atom Ответить
30.08.2011


Иногда случается ошибка:
Код
AC$ 30.08.2011 18:00:09.579 [alpha] System.ArgumentException: Транзакции 'ACCOUNT=SPBFUT00czw; CLIENT_CODE=SPBFUT00czw; TRANS_ID=57550479; CLASSCODE=SPBFUT; SECCODE=RIU1; QUANTITY=1; OPERATION=S; TYPE=L; ACTION=NEW_ORDER; PRICE=165065; EXECUTION_CONDITION=FILL_OR_KILL;' не была зарегистрирована. Причина 'Ошибка создания заявки. [FORTS] "Неполное сведение FOK заявки.".'.
Parameter name: transactionTxt
   at #=qWVb3hlEq_bsi0PlbyLoPNGtmi$sN1GAXJmEglIOuywk=.#=qe2XG1WRxcPRM7kYqWweGZ$USUGIpyehjN9FXfaVbRqk=(String #=qoaJFz4elMnSbwxESEkocqA==, OrderStatus& #=qF9fiowcCBpgiw2vJwkeiPQ==, UInt32& #=qVABNTzTaO$dkfjwyZVXGRQ==, Int64& #=qufGPkJZSaS$_1AhJXi0Q_Q==, String& #=qZYLywgaI4aboC1fy22p5YQ==)
   at StockSharp.Quik.QuikTrader.#=qIiEPgk1OxvfO3bGPdOk80whIsPAOOUvmEP23HUwhR00=(Order #=qE1hxwYv7mjShNv3VqnQ$4Q==, TransactionBuilder #=qMayz96ds6ngzqy1uCpM0Mw==)
   at StockSharp.Quik.QuikTrader.OnRegisterOrder(Order order)
   at StockSharp.Algo.BaseTrader.RegisterOrder(Order order)
   at StockSharp.Algo.Strategies.Strategy.RegisterOrder(Order order)
   at Church.Strategies.Alpha.Alpha.GoShort()
   at Church.Strategies.Alpha.Alpha.Process()
   at StockSharp.Algo.Strategies.StrategyRule.#=qFRqbpWkXa_e5qv6Y_c3Cjqa84vmqnWUiNQozd3UzbCQ=.#=qE64_FjSgaXcFnXD55NNbNw==(Object #=qXmNYxa6wjOyOlL9yFxtNvA==)
   at StockSharp.Algo.Strategies.Strategy.#=qiaS4JJP6dIvcV4PykmPE_w==(StrategyRule #=qE1G0wojhtVI3LgG2ikwMjQ==, Object #=qN7sJLpCukdtyplL46bCrEQ==)


Код заполнения ордера:
Код
                    var order = CreateOrder(OrderDirections.Sell, this.Security.BestBid.Price - EntrySlip, this.Volume);
                    order.ExecutionCondition = OrderExecutionConditions.FillOrCancel;


Это бага? Что такое transactionTxt и нужно ли его передавать?

Теги:


Спасибо:



Скидка 15% на все продукты до 5 апреля (осталось 2 дней).

20 Ответов
Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 30.08.2011
Ответить


Church Перейти
Иногда случается ошибка:
[code=plain]AC$ 30.08.2011 18:00:09.579 [alpha] System.ArgumentException: Транзакции 'ACCOUNT=SPBFUT00czw; CLIENT_CODE=SPBFUT00czw; TRANS_ID=57550479; CLASSCODE=SPBFUT; SECCODE=RIU1; QUANTITY=1; OPERATION=S; TYPE=L; ACTION=NEW_ORDER; PRICE=165065; EXECUTION_CONDITION=FILL_OR_KILL;' не была зарегистрирована. Причина 'Ошибка создания заявки. [FORTS] "Неполное сведение FOK заявки.".'.


Это к квиковцам нужно, понять, что не так в транзакции.
Спасибо:

Alexander

Фотография
Дата: 30.08.2011
Ответить


Это тестовый сервер Квик или боевой?

Как часто не срабатывает заявка FILL_OR_KILL - каждый раз или иногда?

P.S. Переместил в наш форум Квика.
Спасибо:

Church

Фотография
Дата: 31.08.2011
Ответить


Это боевой сервер Финама, заявка не срабатывает от раза к разу, пока что не получилось замерять частоты.
Автор топика
Спасибо:

Alexander

Фотография
Дата: 31.08.2011
Ответить


Church Перейти
Это боевой сервер Финама, заявка не срабатывает от раза к разу, пока что не получилось замерять частоты.


Задал квику вопрос - получил ответ.
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 31.08.2011
Ответить


Alexander Перейти
Church Перейти
Это боевой сервер Финама, заявка не срабатывает от раза к разу, пока что не получилось замерять частоты.


Задал квику вопрос - получил ответ.


Напомнило анекдот про админа.
Спасибо:

Church

Фотография
Дата: 31.08.2011
Ответить


Попробовал руками послать через квик FOK ордер, sell по цене выше рынка - получил эту же ошибку.
Т.е. 2 варианта:
- либо это Финам так FOK-и обрабатывает, либо
- это стандартная реакция квика на событие Cancel.

Чтобы выяснить это, предлагаю кому-нибудь попробовать это у другого брокера. Если подтвердится второй вариант, то, наверное, надо эту ошибку обернуть внутри S#?
Автор топика
Спасибо:

Alexander

Фотография
Дата: 31.08.2011
Ответить


Church Перейти
Попробовал руками послать через квик FOK ордер, sell по цене выше рынка - получил эту же ошибку.
Т.е. 2 варианта:
- либо это Финам так FOK-и обрабатывает, либо
- это стандартная реакция квика на событие Cancel.

Чтобы выяснить это, предлагаю кому-нибудь попробовать это у другого брокера. Если подтвердится второй вариант, то, наверное, надо эту ошибку обернуть внутри S#?


Проверял - тоже самое и в открытии.
Как раз минут 15 назад начал оборачивать внутри S#
Спасибо:

Alexander

Фотография
Дата: 31.08.2011
Ответить


Какой order.Status у непроходящий заявки?
OrderStatus.NotDone?
Спасибо:

Church

Фотография
Дата: 31.08.2011
Ответить


Alexander Перейти
Какой order.Status у непроходящий заявки?
OrderStatus.NotDone?

Сегодня уже не успею написать тест (стратегия больше не использует FOK), но завтра выясню.
Автор топика
Спасибо:

Alexander

Фотография
Дата: 31.08.2011
Ответить


Church Перейти
Alexander Перейти
Какой order.Status у непроходящий заявки?
OrderStatus.NotDone?

Сегодня уже не успею написать тест (стратегия больше не использует FOK), но завтра выясню.


Эх, я на 5 секунд опаздал с тестом, не уложился в торговую сессию.
Тогда жду от вас завтра сообщения о статусе для фикса.
Спасибо:

Church

Фотография
Дата: 01.09.2011
Ответить


State = Failed, Status = null.
Автор топика
Спасибо:

Alexander

Фотография
Дата: 03.09.2011
Ответить


В общем это так просто не исправить.
Используйте IsAsyncMode.
Начиная с версии 3.2.11 он будет использован по умолчанию.

подробнее - читайте в доке уже сейчас
Спасибо:

Den

Фотография
Дата: 17.11.2011
Ответить


Alexander Mukhanchikov Перейти
В общем это так просто не исправить.
Используйте IsAsyncMode.
Начиная с версии 3.2.11 он будет использован по умолчанию.

подробнее - читайте в доке уже сейчас


Коллеги,

у кого-нибудь в итоге заработали Fill_or_cancel? :)

Здесь написано про некий параметр @CotirContr.
Может быть его не хватает при создании заявки и отправки через Quik?
Спасибо:

Alexander

Фотография
Дата: 17.11.2011
Ответить


Den Перейти
Alexander Mukhanchikov Перейти
В общем это так просто не исправить.
Используйте IsAsyncMode.
Начиная с версии 3.2.11 он будет использован по умолчанию.

подробнее - читайте в доке уже сейчас


Коллеги,

у кого-нибудь в итоге заработали Fill_or_cancel? :)

Здесь написано про некий параметр @CotirContr.
Может быть его не хватает при создании заявки и отправки через Quik?


А через квик сейчас не работает? Даже если послать по той цене, которая гарантированно присутствует в стакане?
Спасибо:

Den

Фотография
Дата: 18.11.2011
Ответить


Alexander Mukhanchikov Перейти


А через квик сейчас не работает? Даже если послать по той цене, которая гарантированно присутствует в стакане?


Проверил в боевом Квике:

1. Если заявка может быть удовлетворена и по цене, и по объему - она сразу удовлетворяется. Ошибок нет.

2. Если цена в стакане есть, но не хватает объема - ошибка.
3. Если выставить цену в середину спреда - ошибка.
4. Если цена есть, но в глубине стакана - ошибка.

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

Den

Фотография
Дата: 18.11.2011
Ответить


Den Перейти
Alexander Mukhanchikov Перейти


А через квик сейчас не работает? Даже если послать по той цене, которая гарантированно присутствует в стакане?


Проверил в боевом Квике:

1. Если заявка может быть удовлетворена и по цене, и по объему - она сразу удовлетворяется. Ошибок нет.

2. Если цена в стакане есть, но не хватает объема - ошибка.
3. Если выставить цену в середину спреда - ошибка.
4. Если цена есть, но в глубине стакана - ошибка.

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


Уважаемые разработчики!

Я еще раз прочитал ответ с форума Квик и ТОЧНО понял, что требуется
сделать в S# и почему:

Если заявка не может быть удовлетворена, то с ФОРТСа летит сообщение "Неполное сведение FOK заявки", причем
ударение на второй слог: "сведЕние" (см. тут), что означает она не может быть удовлетворена. Квиковцы это сообщение тупо
транслируют.

Посему логично было бы на стороне S# это фильтровать и обрабатывать для всех заявок c EXECUTION_CONDITION == FILL_OR_KILL, выставляя заявке статус Cancelled, а не выбрасывать исключение.

Что думаете на этот счет?
Спасибо:

Alexander

Фотография
Дата: 19.11.2011
Ответить


Den Перейти
Den Перейти
Alexander Mukhanchikov Перейти


А через квик сейчас не работает? Даже если послать по той цене, которая гарантированно присутствует в стакане?


Проверил в боевом Квике:

1. Если заявка может быть удовлетворена и по цене, и по объему - она сразу удовлетворяется. Ошибок нет.

2. Если цена в стакане есть, но не хватает объема - ошибка.
3. Если выставить цену в середину спреда - ошибка.
4. Если цена есть, но в глубине стакана - ошибка.

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


Уважаемые разработчики!

Я еще раз прочитал ответ с форума Квик и ТОЧНО понял, что требуется
сделать в S# и почему:

Если заявка не может быть удовлетворена, то с ФОРТСа летит сообщение "Неполное сведение FOK заявки", причем
ударение на второй слог: "сведЕние" (см. тут), что означает она не может быть удовлетворена. Квиковцы это сообщение тупо
транслируют.

Посему логично было бы на стороне S# это фильтровать и обрабатывать для всех заявок c EXECUTION_CONDITION == FILL_OR_KILL, выставляя заявке статус Cancelled, а не выбрасывать исключение.

Что думаете на этот счет?


В 4.0.6 будет фикс, спасибо
Спасибо:

Den

Фотография
Дата: 07.12.2011
Ответить


Alexander Mukhanchikov Перейти


В 4.0.6 будет фикс, спасибо


Проверил на 4.0.6. Получил эсепшен:
Код
Транзакция 'ACCOUNT=SPBFUTXXXXX; TRANS_ID=67142778; CLASSCODE=SPBFUT; SECCODE=RTS-12.11; QUANTITY=1; OPERATION=B; TYPE=L; ACTION=NEW_ORDER; PRICE=140000; EXECUTION_CONDITION=FILL_OR_KILL;' не была зарегистрирована. Причина 'Ошибка создания заявки. [FORTS] "Неполное сведение FOK заявки.".'.


У самой заявки я наблюдаю следующие поля:
Код
Canceled: <False> Empty: <True> Partially: <False> Matched: <False> Balance: <1> State: <Failed> Status: <>



Похоже что поведение не изменилось, в чем заключался фикс?
Спасибо:

Alexander

Фотография
Дата: 07.12.2011
Ответить


Точку забыл во время фикса в сообщении "Неполное сведение FOK заявки."
Сделал фикс#2, будет в 4.0.8
Спасибо: Den

Den

Фотография
Дата: 12.12.2011
Ответить


Alexander Mukhanchikov Перейти
Точку забыл во время фикса в сообщении "Неполное сведение FOK заявки."
Сделал фикс#2, будет в 4.0.8


Проверил, эксепшена нет.
Код
State: <Failed> Status: <NotDone>

Спасибо!
Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy