При переходе с демки на реальный счет возникла большая проблема - статусы ордеров не отслеживаются и трейды по ним в события не приходят. В итоге невозможно управлять торговлей, все ордера висят со статусом Pending хотя сами давно исполнены.
Порывшись в логах BWOrders_***.log и сравнив данные с реала и демки обнаружил вот такое:
01-26 20:44:45.7797113: CLDX: assigned clientOrderID 709003001
01-26 20:44:45.7899932: <--- ORDER|UserID=***|Account=***|Sym=CLDX|Size=100|ShowSize=100|Price=22|Side=Buy|Status=|Venue=ARCAARCA|OrdID=|SmartID=|OrdRef=74673304|Time=|FIXDest=|FIXDestEx=|FIXTif=|FIXOrdType=|FIXPassThru=|PegDiff=|TarStrat=|PartRate=|TrailStopType=|TrailStopDelta=|OCOGroupID=|TrigGroupID=|ClOrdID=|OrigClOrdID=|OptOC=|Origin=|ExcLine=|ComplianceID=
01-26 20:44:45.9096152: CLDX: ORDER: smartID: 1244007345, clientOID: 709003001, executedSize:
01-26 20:44:45.9099055: CLDX: client id 709003001--> smart id 1244007345
01-26 20:44:45.9135822: CLDX: order ON_SERVER: SmartID 1244007345
01-26 20:44:45.9136358: ---> ORDER|UserID=***|Account=***|Sym=CLDX|Size=100|ShowSize=100|Price=22|Side=Buy|Status=Server|Venue=ARCAARCA|OrdID=1244007345|SmartID=1244007345|OrdRef=74673304|Time=26.01.2015 20:44:45|FIXDest=|FIXDestEx=|FIXTif=|FIXOrdType=|FIXPassThru=|PegDiff=|TarStrat=|PartRate=|TrailStopType=|TrailStopDelta=|OCOGroupID=|TrigGroupID=|ClOrdID=|OrigClOrdID=|OptOC=|Origin=|ExcLine=|ComplianceID=
01-26 20:44:45.9147199: CLDX: ORDER: smartID: 1244007345, clientOID: 709003001, executedSize:
01-26 20:44:46.2153285: CLDX: ORDER: smartID: 1244007345, clientOID: 709003001, executedSize: 0
01-26 20:44:46.2156051: CLDX: order ACCEPTED: SmartID 1244007345
01-26 20:44:46.2156416: ---> ORDER|UserID=***|Account=***|Sym=CLDX|Size=100|ShowSize=100|Price=22|Side=Buy|Status=Market|Venue=ARCAARCA|OrdID=1244007345|SmartID=1244007345|OrdRef=4A260BB1|Time=26.01.2015 20:44:45|FIXDest=|FIXDestEx=|FIXTif=|FIXOrdType=|FIXPassThru=|PegDiff=|TarStrat=|PartRate=|TrailStopType=0|TrailStopDelta=0|OCOGroupID=0|TrigGroupID=0|ClOrdID=|OrigClOrdID=|OptOC=|Origin=|ExcLine=WLDX|ComplianceID=
01-26 20:44:46.2156433: CLDX: ORDER: smartID: 1244007345, clientOID: 709003001, executedSize: 0
01-26 20:44:46.2158475: CLDX: ORDER: smartID: 1244007345, clientOID: 709003001, executedSize: 0
01-26 20:44:46.2158601: CLDX: order ACCEPTED: SmartID 1244007345
01-26 20:44:46.2158823: ---> ORDER|UserID=***|Account=***|Sym=CLDX|Size=100|ShowSize=100|Price=22|Side=Buy|Status=Market|Venue=ARCAARCA|OrdID=1244007345|SmartID=1244007345|OrdRef=4A260BB1|Time=26.01.2015 20:44:45|FIXDest=|FIXDestEx=|FIXTif=|FIXOrdType=|FIXPassThru=|PegDiff=|TarStrat=|PartRate=|TrailStopType=|TrailStopDelta=|OCOGroupID=|TrigGroupID=|ClOrdID=|OrigClOrdID=|OptOC=|Origin=|ExcLine=WLDX|ComplianceID=
01-26 20:44:46.2158834: CLDX: ORDER: smartID: 1244007345, clientOID: 709003001, executedSize: 0
Обратите внимание на поле OrdRef. Сначала OrdRef=74673304 как и ожидает робот, а потом брокер его меняет - OrdRef=4A260BB1. Потому робот и не понимает что произошло, и все пришедшие статусы ордеров и трейды им не воспринимаются. Такие выводы я сделал из увиденного.
Счет открыт через клиринг WedBush, ip адреса все из BlackwoodAddresses.WetBush, так что это не проблема какого-то другого Fusion. Очень прошу поправить, т.к. торговать невозможно.
コメント (8)
ログイン または アカウントを作成, コメントを残すにはログインまたは新規登録してください
Если сохранить ордер в отдельную переменную и поставить его на отмену, то вот что получится:
Как я понял из лога, сигнал на отмену робот отправляет по SmartID=1244007345, т.е. он его запоминает для данного ордера. Можно привязаться к SmartID, а не к OrdRef, тем более он потом меняется еще раз как видно из лога (OrdRef=NBNA3133).
Логи коннектора в режиме дебаг
Дебаг логи:
Ок. Теперь слушаю вас что не работает. Лучше со сносками на лог
Регистрируем ордер 27/01/2015 17:55:56 +03:00 RegisterOrder: 0/ Покупка Цена=22 Объем=100 Сост=None Бал=0 27/01/2015 17:55:56 +03:00 BP:Execution,T(L)=2015/01/27 17:55:56.619,T(S)=0001/01/01 00:00:00.000,(Order),Sec=S#:CLDX@ARCA, Native:,Type:,Ord=0/64532552/64532552,Fail=,TId=0,Pf=123ABCD~,TPrice=0,UId=
Ордер отправляется на сервер и его статус меняется на Pending 27/01/2015 17:55:56 +03:00 New order: 64532552/ Покупка Цена=22 Объем=100 Сост=Pending Бал=100 27/01/2015 17:55:57 +03:00 SessionOnRawOrderMessage: ORDER|ClientOrderID=703138001|CustCode=WLDN|FeedID=8|GiveUp=123ABCD|Hidden=False|MarketMaker=ARCA|OrderID=955007785|OrderRef=64532552|OrderSize=100|OrderType=LIMIT|Price=22|ServerID=10.5.41.156|ShowSize=100|Side=Buy|SmartID=955007785|Status=Server|Symbol=CLDX|Time=27/01/2015 17:55:56|Timeout=99993|UserID=12345
Ордер принимается системой, посылается соответствующее сообщение со статусом Market, но в нем система меняет OrderRef (с 64532552 на 38EC4329), и роботом ордер больше не воспринимается, статус ордера не меняется и события по нему больше не приходят 27/01/2015 17:55:57 +03:00 SessionOnOrderMessage: 955007785|38EC4329|CLDX|100|22|ARCA 27/01/2015 17:55:57 +03:00 SessionOnRawOrderMessage: ORDER|ClientOrderID=703138001|CustCode=WLDN|ExecLine=WLDX|Executed=0|FeedID=8|GiveUp=123ABCD|Hidden=False|MarketMaker=ARCA|OCOGroupID=0|OrderID=955007785|OrderRef=38EC4329|OrderSize=100|OrderType=LIMIT|PositionAtOrderTime=0|Price=22|ServerID=10.5.41.156|ShowSize=100|Side=Buy|SmartID=955007785|Status=Market|Symbol=CLDX|Time=27/01/2015 17:55:56|Timeout=99993|TrailingStopDelta=0|TrailingStopType=0|TriggerGroupID=0|UserID=12345
Во время отмены ордера видно что его статус все еще Pending, а должен быть Active, т.к. заявка принята биржей, а также в ордер не сохранился номер заявки OrderID 27/01/2015 17:56:09 +03:00 CancelOrder: 64532552/ Покупка Цена=22 Объем=100 Сост=Pending Бал=100
В итоге ордер так и будет висеть в статусе Pending и ни изменений по нему, ни трейдов в события приходить не будет.
В версии 4.2.59 обновляли Fusion, поэтому на всякий случай сообщу, данный баг в ней все еще присутствует.
Да вот сегодня решил посмотреть. А гт капитал успешно помер. Попробую найти других брокеров. Или киньте мне варианты. Можно и реальный счет открыть если не кухня и геморроя не много.
У меня счет открыт тут, вроде не кухня, и демки дают. Единственное, на демке баг не воспроизводится.