Иногда случается ошибка:
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 и нужно ли его передавать?
Comments (20)
Login or Create account, Log in or register to leave a comment
Это к квиковцам нужно, понять, что не так в транзакции.
Это тестовый сервер Квик или боевой?
Как часто не срабатывает заявка FILL_OR_KILL - каждый раз или иногда?
P.S. Переместил в наш форум Квика.
Это боевой сервер Финама, заявка не срабатывает от раза к разу, пока что не получилось замерять частоты.
Задал квику вопрос - получил ответ.
Напомнило анекдот про админа.
Попробовал руками послать через квик FOK ордер, sell по цене выше рынка - получил эту же ошибку. Т.е. 2 варианта:
Чтобы выяснить это, предлагаю кому-нибудь попробовать это у другого брокера. Если подтвердится второй вариант, то, наверное, надо эту ошибку обернуть внутри S#?
Проверял - тоже самое и в открытии. Как раз минут 15 назад начал оборачивать внутри S#
Какой order.Status у непроходящий заявки? OrderStatus.NotDone?
Эх, я на 5 секунд опаздал с тестом, не уложился в торговую сессию. Тогда жду от вас завтра сообщения о статусе для фикса.
State = Failed, Status = null.
В общем это так просто не исправить. Используйте IsAsyncMode. Начиная с версии 3.2.11 он будет использован по умолчанию.
подробнее - читайте в доке уже сейчас
Коллеги,
у кого-нибудь в итоге заработали Fill_or_cancel? :)
Здесь написано про некий параметр @CotirContr. Может быть его не хватает при создании заявки и отправки через Quik?
А через квик сейчас не работает? Даже если послать по той цене, которая гарантированно присутствует в стакане?
Проверил в боевом Квике:
Если заявка может быть удовлетворена и по цене, и по объему - она сразу удовлетворяется. Ошибок нет.
Если цена в стакане есть, но не хватает объема - ошибка.
Если выставить цену в середину спреда - ошибка.
Если цена есть, но в глубине стакана - ошибка.
Вывод: в любом случае когда заявка не может быть немедленно удовлетворена мы имеем ошибку. Если заявка немедленно удовлетворяется - ошибки нет.
Уважаемые разработчики!
Я еще раз прочитал ответ с форума Квик и ТОЧНО понял, что требуется сделать в S# и почему:
Если заявка не может быть удовлетворена, то с ФОРТСа летит сообщение "Неполное сведение FOK заявки", причем ударение на второй слог: "сведЕние" (см. тут), что означает она не может быть удовлетворена. Квиковцы это сообщение тупо транслируют.
Посему логично было бы на стороне S# это фильтровать и обрабатывать для всех заявок c EXECUTION_CONDITION == FILL_OR_KILL, выставляя заявке статус Cancelled, а не выбрасывать исключение.
Что думаете на этот счет?
В 4.0.6 будет фикс, спасибо
Проверил на 4.0.6. Получил эсепшен:
У самой заявки я наблюдаю следующие поля:
Похоже что поведение не изменилось, в чем заключался фикс?
Точку забыл во время фикса в сообщении "Неполное сведение FOK заявки." Сделал фикс#2, будет в 4.0.8
Проверил, эксепшена нет.
Спасибо!