Проблема с заявками
Atom
18.08.2014
vsnoopy83


esper
Выложили 4.2.16.0

Фичи:
  • Transaq. Версия библиотек обновлена до v2.10.
  • Connector. Добавлен метод GetFilteredMarketDepth для получения стакана без своих заявок.
  • Connector. При выключенных UpdateSecurityLastQuotes и UpdateSecurityByLevel1 значения полей инструментов не изменяются.
  • Emulator. Изменены примеры тестирования (передача level1 данных для инструмента).
  • OrderGrid. Добавлена ссылка для копирования текста ошибки.
  • OrderWindow. Добавлены предопределенные значения цен и объема.
  • SciChart. Контекстное меню для добавления элементов показывается только в интерактивном режиме.
  • Security. Изменены значения по умолчанию для MinPrice и MaxPrice.
  • Security. Добавлено поле BinaryOptionType.

Баги:
  • Connector. Ошибка обработки OrderFail.
  • Emulator. Ошибка с неверным временем при тестировании на тиках.
  • QuotingStrategy. Ошибка перестановки заявок.
  • MarketDepthControl. Не показывается дробная часть для цены.


Добрый день, у меня перестали отправляться заявки по LUA, в логе:

t["ACCOUNT"] = "SPBFUT00866"
t["CLASSCODE"] = "FORTS"
t["SECCODE"] = "SPU4"
t["QUANTITY"] = "3"
t["EXPIRY_DATE"] = "GTC"
t["OPERATION"] = "B"
t["TYPE"] = "L"
t["ACTION"] = "NEW_ORDER"
t["PRICE"] = "5762"
t["EXECUTION_CONDITION"] = "PUT_IN_QUEUE"
t["TRANS_ID"] = "45414414"
sendTransaction(t)

2014/08/18 12:37:59.377| |FixServer |From client quik: TestRequest
2014/08/18 12:38:00.969| |FixServer |From client quik: TestRequest

более ничего не происходит, ордер висит в статусе Pending, подскажите где копать? В DDE режиме все работает. Ордера отправляются только в версии 4.2.8.0, в версиях 4.2.14.0 и 4.2.16.0 наблюдается вышеуказанная ошибка. Робот полностью один и тот же.

Также в версии 4.2.8.0 в файле StockSharp.QuikLua.FatalError.log выдается постоянно ошибка:

[18.08.2014 12:51:45] StockSharp.Fix.resources, Version=4.2.8.0, Culture=ru, PublicKeyToken=null: System.IO.FileNotFoundException: Не удается найти указанный файл. (Исключение из HRESULT: 0x80070002)
в System.Reflection.RuntimeAssembly.nLoadFile(String path, Evidence evidence)
в System.Reflection.Assembly.LoadFile(String path)
в CurrentDomain_AssemblyResolve(Object sender, ResolveEventArgs args)

Теги:


Спасибо:


<< < 2 3 4 
esper

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


На FORTS что с заявками? В новой версии добавил доп. дебаг логи, проверьте на ней.
Спасибо:

VirKato

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


esper
На FORTS что с заявками? В новой версии добавил доп. дебаг логи, проверьте на ней.

Проверить заявки на Фортсе не смогу.
Полный лог Lua (4.2.19):
Код

2014/08/22 13:15:14.039|Warning|FixServer |Пользователь quik принудительно разлогинен из-за ошибок отправки данных.
2014/08/22 13:16:33.110|       |FixServer |Клиент quik (127.0.0.1:52178) авторизован.
2014/08/22 13:16:33.470|       |FixServer |Отправка Logon клиенту.
2014/08/22 13:16:33.471|       |FixServer |Сессия запущена.
2014/08/22 13:16:33.484|       |FixServer |From client quik: OrderMassStatusRequest
2014/08/22 13:16:33.484|       |FixServer |From client quik: RequestForPositions
2014/08/22 13:16:33.485|       |None      |Lookup (OrderStatus, 47790394, , )
2014/08/22 13:16:33.485|       |None      |GetOrders
2014/08/22 13:16:33.486|       |None      |GetOrders done
2014/08/22 13:16:33.486|       |None      |GetTrades
2014/08/22 13:16:33.486|       |None      |GetTrades done
2014/08/22 13:16:33.486|       |None      |Lookup (PortfolioLookup, 47790395, , )
2014/08/22 13:16:33.486|       |None      |GetPortfolios
2014/08/22 13:16:33.486|       |None      |GetPortfolios done
2014/08/22 13:16:33.486|       |None      |GetPositions
2014/08/22 13:16:33.495|       |None      |GetPositions done
2014/08/22 13:16:33.986|       |FixServer |Клиент quik (127.0.0.1:52179) авторизован.
2014/08/22 13:16:34.345|       |FixServer |Отправка Logon клиенту.
2014/08/22 13:16:34.345|       |FixServer |Сессия запущена.
2014/08/22 13:16:34.348|       |FixServer |From client quik: SecurityListRequest
2014/08/22 13:16:34.349|       |None      |Lookup (SecurityLookup, 47790396, , )
2014/08/22 13:16:34.349|       |None      |GetSecurities
2014/08/22 13:16:34.376|Error  |None      |Пустой код инструмента для класса PSEQ.
2014/08/22 13:16:34.703|Error  |None      |Пустой код инструмента для класса TQBR.
2014/08/22 13:16:34.706|Error  |None      |Пустой код инструмента для класса TQOB.
//пропущено много строк
2014/08/22 13:16:35.466|Error  |None      |Пустой код инструмента для класса PSIF.
2014/08/22 13:16:35.466|Error  |None      |Пустой код класса для getClassesList.
2014/08/22 13:16:35.561|       |None      |GetSecurities done
2014/08/22 13:16:53.036|       |FixServer |From client quik: MarketDataRequest
2014/08/22 13:16:53.037|       |FixServer |From client quik: MarketDataRequest
2014/08/22 13:16:56.873|       |None      |Lookup (QuoteChange, 0, SBER, TQBR)
2014/08/22 13:16:56.873|       |None      |Lookup (Level1Change, 0, SBER, TQBR)
2014/08/22 13:17:06.717|       |FixServer |From client quik: NewOrderSingle
2014/08/22 13:17:06.717|       |None      |SendTransaction: t = {}
t["ACCOUNT"] = "account"
t["CLASSCODE"] = "TQBR"
t["SECCODE"] = "SBER"
t["QUANTITY"] = "5"
t["CLIENT_CODE"] = "client"
t["EXPIRY_DATE"] = "GTC"
t["OPERATION"] = "B"
t["TYPE"] = "L"
t["ACTION"] = "NEW_ORDER"
t["PRICE"] = "76.36"
t["EXECUTION_CONDITION"] = "PUT_IN_QUEUE"
t["TRANS_ID"] = "47790403"
sendTransaction(t)

2014/08/22 13:17:16.829|       |FixServer |From client quik: OrderCancelRequest
2014/08/22 13:17:16.846|       |None      |SendTransaction: t = {}
t["CLASSCODE"] = "TQBR"
t["SECCODE"] = "SBER"
t["ORDER_KEY"] = "0"
t["ACTION"] = "KILL_ORDER"
t["TRANS_ID"] = "47790404"
sendTransaction(t)


В итоге: заявка выставлена и активна в квике. При попытке снятия - ошибка Квика "нельзя снять данную заявку". Построчно сверил с логами на работающем тестовом квике - отличаются только в строке << t["ORDER_KEY"] = "0" >>. В тестовом квике статус заявки обновляется и id присваевается.
Спасибо:

VirKato

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


Похоже, что без Id заявки снять ее не получится. Почему могут не подкачиваться ордера (Не обновляется статус, не приходит id)?
В Sample заявки тоже не подгружаются, хотя подгружаются: Портфели, Инструменты.
Спасибо:

esper

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


esper
В новой версии добавил доп. дебаг логи


Спасибо:

VirKato

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


esper
В новой версии добавил доп. дебаг логи

Куда смотреть? В MonitorWindow - все хорошо. Ошибку возвращает QUIK, т.к. Lua пытается снять заявку без биржевого id. При этом quik может снять заявку только при указании id биржы, а не trans id (поправьте меня, если я ошибаюсь).
Где в логах посмотреть - почему не обновляется статус заявки?
Спасибо:

GrandTucan

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


Сейчас разбираюсь с коннектором QuikLua, заметил, что такую особенность: после постановки заявки событие QuikTrader.NewOrders приходит сразу же: при этом Id=0 (биржевой номер заявки). А событие QuikTrader.OrdersChanged, в котором передается присвоенный биржей Id приходит очень долго: где-то через 20-30 секунд после NewOrders (Order.LatencyRegistration 20-30 секунд). Хотя в терминале вижу зарегистрированную биржей заявку почти мгновенно. QUIK 6.14.02.12, StockSharp 4.2.20.0 (но то же самое было и в 4.2.18.0).

Такого раньше не было. Соответственно если попытаться передвинуть заявку в течение этих 20-30 секунд, Quik не поймет какую заявку двигать и напишет ошибку "нельзя снять данную заявку". Если выждать время, то приходит событие QuikTrader.OrdersChanged с присвоенным биржей Id и тогда заявку можно нормально двигать.

Однако в примере Sample из той же версии StockSharp 4.2.20.0 заявка появляется в окне "Заявки..." практически мгновенно после постановки. С обоими заполненными полями TransactionId и Id.

Вероятно в библиотеке происходит какой-то затык при вызове QuikTrader.OrdersChanged.

Прошу обратить внимание на эту проблему. Или же поправить, если неправ :)
Спасибо:

esper

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


Заявка из Connector.NewOrder приходит с состоянием Pending и у нее должен быть заполнен номер транзакции. Далее, когда заявка будет зарегистрирована, она придет через Connector.OrdersChanged, у нее должен быть биржевой номер и состояние или Active или Done, это исключая ошибки регистрации. Именно когда она стала Active ее можно снять.

Если в Sample данные по номеру и состоянию приходят быстро, значит API работает, "затык", скорее всего, в вашем коде. Проверяйте время работы ваших обработчиков, все события приходят в одном потоке и ожидание в одном обработчике может тормозить другие.
Спасибо:

esper

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


VirKato
esper
В новой версии добавил доп. дебаг логи
Куда смотреть?

Смотреть надо дебаг логи для Lua.
Спасибо:
<< < 2 3 4 

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

loading
clippy