Проблема на реальном счете
Atom Ответить
26.01.2015


При переходе с демки на реальный счет возникла большая проблема - статусы ордеров не отслеживаются и трейды по ним в события не приходят.
В итоге невозможно управлять торговлей, все ордера висят со статусом 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 Ответов
Валентин Лебедев

Фотография
Программист
Дата: 26.01.2015
Ответить


Если сохранить ордер в отдельную переменную и поставить его на отмену, то вот что получится:
Код
01-26 20:45:00.4896276:    <---    CANCEL|UserID=***|Account=***|Sym=|Size=|Price=|StopPrice=|Side=|Status=|Venue=NONE|OrdID=|SmartID=1244007345|OrdRef=|CancelID=|CancelTime=|FIXDest=|FIXDestEx=|FIXTif=|FIXOrdType=|ClOrdID=|OrigClorID=|Origin=|ExcLine=|ComplianceID=
01-26 20:45:00.6253314:    --->    CANCEL|UserID=***|Account=***/0|Sym=CLDX|Size=100|Price=22|StopPrice=0|Side=Buy|Status=Server|Venue=ARCA|OrdID=1244007345|SmartID=1244007345|OrdRef=4A260BB1|CancelID=1245000085|CancelTime=26.01.2015 20:45:00|FIXDest=|FIXDestEx=|FIXTif= |FIXOrdType= |ClOrdID=|OrigClorID=|Origin=|ExcLine=WLDX|ComplianceID=
01-26 20:45:00.6255167:    CLDX:    ORDER: smartID: 1244007345, clientOID: 709003001, executedSize: 0
01-26 20:45:00.6255812:    --->    ORDER|UserID=***|Account=***|Sym=CLDX|Size=100|ShowSize=100|Price=22|Side=Buy|Status=Done|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:45:00.6255846:    CLDX:    ORDER: smartID: 1244007345, clientOID: 709003001, executedSize: 0
01-26 20:45:00.6257323:    --->    CANCEL|UserID=***|Account=***/0|Sym=CLDX|Size=100|Price=22|StopPrice=0|Side=Buy|Status=Done|Venue=ARCA|OrdID=1244007345|SmartID=1244007345|OrdRef=4A260BB1|CancelID=|CancelTime=26.01.2015 20:45:00|FIXDest=|FIXDestEx=|FIXTif= |FIXOrdType= |ClOrdID=|OrigClorID=|Origin=|ExcLine=WLDX|ComplianceID=
01-26 20:45:00.6258543:    --->    CANCEL|UserID=***|Account=***|Sym=CLDX|Size=100|Price=22|StopPrice=|Side=Buy|Status=Server|Venue=ARCA|OrdID=1244007345|SmartID=1244007345|OrdRef=NBNA3133|CancelID=1244007345|CancelTime=26.01.2015 20:45:00|FIXDest=|FIXDestEx=|FIXTif= |FIXOrdType= |ClOrdID=|OrigClorID=|Origin=|ExcLine=WLDX|ComplianceID=
01-26 20:45:00.6259319:    CLDX:    ORDER: smartID: 1244007345, clientOID: 709003001, executedSize: 0
01-26 20:45:00.6260973:    --->    ORDER|UserID=***|Account=***|Sym=CLDX|Size=100|ShowSize=100|Price=22|Side=Buy|Status=Done|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:45:00.6261092:    CLDX:    ORDER: smartID: 1244007345, clientOID: 709003001, executedSize: 0
01-26 20:45:00.6263807:    --->    CANCEL|UserID=***|Account=***|Sym=CLDX|Size=100|Price=22|StopPrice=|Side=Buy|Status=Done|Venue=ARCA|OrdID=1244007345|SmartID=1244007345|OrdRef=NBNA3133|CancelID=0|CancelTime=26.01.2015 20:45:00|FIXDest=|FIXDestEx=|FIXTif= |FIXOrdType= |ClOrdID=|OrigClorID=|Origin=|ExcLine=WLDX|ComplianceID=

Как я понял из лога, сигнал на отмену робот отправляет по SmartID=1244007345, т.е. он его запоминает для данного ордера.
Можно привязаться к SmartID, а не к OrdRef, тем более он потом меняется еще раз как видно из лога (OrdRef=NBNA3133).
Автор топика
Спасибо:

Mikhail Sukhov

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


Логи коннектора в режиме дебаг
Спасибо:

Валентин Лебедев

Фотография
Программист
Дата: 27.01.2015
Ответить


Дебаг логи:
Автор топика
Спасибо:

Mikhail Sukhov

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


Ок. Теперь слушаю вас что не работает. Лучше со сносками на лог
Спасибо:

Валентин Лебедев

Фотография
Программист
Дата: 27.01.2015
Ответить


1. Регистрируем ордер
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=

2. Ордер отправляется на сервер и его статус меняется на 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

3. Ордер принимается системой, посылается соответствующее сообщение со статусом 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

4. Во время отмены ордера видно что его статус все еще Pending, а должен быть Active, т.к. заявка принята биржей, а также в ордер не сохранился номер заявки OrderID
27/01/2015 17:56:09 +03:00 CancelOrder: 64532552/ Покупка Цена=22 Объем=100 Сост=Pending Бал=100

В итоге ордер так и будет висеть в статусе Pending и ни изменений по нему, ни трейдов в события приходить не будет.
Автор топика
Спасибо: Mikhail Sukhov

Валентин Лебедев

Фотография
Программист
Дата: 29.01.2015
Ответить


В версии 4.2.59 обновляли Fusion, поэтому на всякий случай сообщу, данный баг в ней все еще присутствует.
Автор топика
Спасибо:

Mikhail Sukhov

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


Да вот сегодня решил посмотреть. А гт капитал успешно помер. Попробую найти других брокеров. Или киньте мне варианты. Можно и реальный счет открыть если не кухня и геморроя не много.
Спасибо:

Валентин Лебедев

Фотография
Программист
Дата: 29.01.2015
Ответить


У меня счет открыт тут, вроде не кухня, и демки дают.
Единственное, на демке баг не воспроизводится.
Автор топика
Спасибо: Mikhail Sukhov


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

loading
clippy