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. Получил эсепшен: CodeТранзакция '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 заявки.".'.
У самой заявки я наблюдаю следующие поля: CodeCanceled: <False> Empty: <True> Partially: <False> Matched: <False> Balance: <1> State: <Failed> Status: <>
Похоже что поведение не изменилось, в чем заключался фикс?
|
|
|
|
Alexander
|
Дата: 07.12.2011
Точку забыл во время фикса в сообщении "Неполное сведение FOK заявки." Сделал фикс#2, будет в 4.0.8
|
|
|
|
Den
|
Дата: 12.12.2011
Alexander Mukhanchikov  Точку забыл во время фикса в сообщении "Неполное сведение FOK заявки." Сделал фикс#2, будет в 4.0.8 Проверил, эксепшена нет. CodeState: <Failed> Status: <NotDone> Спасибо!
|
|
|