Перейти к содержимому


Фото
- - - - -

Задваивание события UpdateOrder


  • Закрытая тема Тема закрыта
2 ответов в этой теме

#1 FHunter

FHunter

    Новичок

  • Трейдеры
  • Pip
  • 61 сообщений

Отправлено 08 January 2014 - 03:01 PM

Добрый день!

Помогите пожалуйста разобраться.
SmartCom x64 версии 3.0.79.2589. Тестовый сервер. logLevel=4;maxWorkerThreads=3.
Есть кусок кода, который тестирую не первый день, но столкнулся с новой для себя ситуацией. Смысл участка, где возникла проблема заключается в следующем. Я жду, когда лимитная заявка станет Filled и выставляю новую.
Я логирую любое изменение состояний ордеров куском из примера:
private void SmartCOM_UpdateOrder(string portfolio, string symbol, SmartCOM3Lib.StOrder_State state, SmartCOM3Lib.StOrder_Action action, SmartCOM3Lib.StOrder_Type type, SmartCOM3Lib.StOrder_Validity validity, double price, double amount, double stop, double filled, System.DateTime datetime, string orderid, string orderno, int status_mask, int cookie)
{
Writers.WriteLine("Enegy", "log", "{0} Order {1}:{2}:{3}:{4}:{5} {6} Price: {7} ({8}/{9}) {10} Stop: {11} {12} {13} Mask:{14} {15}", DateTime.Now, portfolio, symbol, cookie, orderid, orderno, action, price, amount, filled, type, stop, datetime, state, status_mask, validity);
Я предполагаю, что на ордер, который стал Filled, придет одно соответствующее событие и долгое время у меня работало все в такой логике.

Что произошло сегодня. Три ордера исполнились (cookie 52, 53, 54). SmartCom Log:
2014-Jan-08 10:51:35.129400 [TID=270] - INFO : StServer::PlaceOrder method (Portfolio: ST46216-RF-01, Symbol RTS-3.14_FT, Action 2, Type 2, Validity 1, Price xxxxx1.000000, Amount 1.000000, Stop 0.000000, cookie 52)
2014-Jan-08 10:51:35.129400 [TID=270] - jelly: : Trying connect to 213.247.232.236:9980
2014-Jan-08 10:51:35.129400 [TID=270] - jelly: : Channel 0x5A53B10 will use async connect mode (532)
2014-Jan-08 10:51:35.129400 [TID=270] - INFO : StServer::MoveOrder method (Portfolio: ST46216-RF-01, OrderId 3901000373, TargetPrice xxxxx7.000000
2014-Jan-08 10:51:35.129400 [TID=270] - jelly: : Trying connect to 213.247.232.236:9980
2014-Jan-08 10:51:35.129400 [TID=270] - jelly: : Channel 0x5AFD140 will use async connect mode (544)
2014-Jan-08 10:51:35.145000 [TID=d58] - jelly: : Http channel 0x5A53B10 OK..
2014-Jan-08 10:51:35.145000 [TID=d58] - jelly: : Http channel 0x5AFD140 OK..
2014-Jan-08 10:51:35.160600 [TID=1024] - jelly: : Destroying http channel..0x5AFD140
2014-Jan-08 10:51:35.160600 [TID=1010] - jelly: : Destroying http channel..0x5A53B10
2014-Jan-08 10:51:46.361400 [TID=270] - INFO : StServer::PlaceOrder method (Portfolio: ST46216-RF-01, Symbol RTS-3.14_FT, Action 2, Type 2, Validity 1, Price xxxxx2.000000, Amount 1.000000, Stop 0.000000, cookie 53)
2014-Jan-08 10:51:46.361400 [TID=270] - jelly: : Trying connect to 213.247.232.236:9980
2014-Jan-08 10:51:46.361400 [TID=270] - jelly: : Channel 0x5AFFA80 will use async connect mode (516)
2014-Jan-08 10:51:46.361400 [TID=270] - INFO : StServer::MoveOrder method (Portfolio: ST46216-RF-01, OrderId 3901000373, TargetPrice xxxxx8.000000
2014-Jan-08 10:51:46.361400 [TID=270] - jelly: : Trying connect to 213.247.232.236:9980
2014-Jan-08 10:51:46.361400 [TID=270] - jelly: : Channel 0x7438900 will use async connect mode (700)
2014-Jan-08 10:51:46.377000 [TID=d58] - jelly: : Http channel 0x5AFFA80 OK..
2014-Jan-08 10:51:46.377000 [TID=d58] - jelly: : Http channel 0x7438900 OK..
2014-Jan-08 10:51:46.392600 [TID=1024] - jelly: : Destroying http channel..0x5AFFA80
2014-Jan-08 10:51:46.392600 [TID=270] - jelly: : Destroying http channel..0x7438900
2014-Jan-08 10:51:48.639000 [TID=1024] - INFO : StServer::PlaceOrder method (Portfolio: ST46216-RF-01, Symbol RTS-3.14_FT, Action 2, Type 2, Validity 1, Price xxxxx3.000000, Amount 1.000000, Stop 0.000000, cookie 54)
В своем логе я это тоже вижу:
08.01.2014 10:51:35 Order ST46216-RF-01:RTS-3.14_FT:51:3901000372:2253564895 StOrder_Action_Sell Price: xxxxx1 (1/0) StOrder_Type_Limit Stop: 0 08.01.2014 10:51:24 StOrder_State_Filled Mask:0 StOrder_Validity_Day
08.01.2014 10:51:46 Order ST46216-RF-01:RTS-3.14_FT:52:3901000374:2253565672 StOrder_Action_Sell Price: xxxxx2 (1/0) StOrder_Type_Limit Stop: 0 08.01.2014 10:51:36 StOrder_State_Filled Mask:0 StOrder_Validity_Day
08.01.2014 10:51:48 Order ST46216-RF-01:RTS-3.14_FT:53:3901000375:2253565931 StOrder_Action_Sell Price: xxxxx3 (1/0) StOrder_Type_Limit Stop: 0 08.01.2014 10:51:38 StOrder_State_Filled Mask:0 StOrder_Validity_Day
Далее через непродолжительное время происходит обрыв соединения:
2014-Jan-08 10:52:19.137000 [TID=270] - jelly: : Channel 0x5A292D8, sockErr 'Программа на вашем хост-компьютере разорвала установленное подключение.
или
08.01.2014 10:52:19 Disconnected: Программа на вашем хост-компьютере разорвала установленное подключение.
(213.247.232.236:8090)

Переподключаюсь (мой лог):
08.01.2014 10:52:19 ST46216-RF-01:RTS-3.14_FT Avg: avprice (-2) Planed: 0
08.01.2014 10:52:19 Click: Connect: ST46216
08.01.2014 10:52:21 Get: Symbols
08.01.2014 10:52:21 Get: Prortfolios
08.01.2014 10:52:21 Portfolio 1/3 MON:ST46216-MO-01:StPortfolioStatus_Broker Listen
08.01.2014 10:52:21 Portfolio 2/3 EQ:ST46216-MS-01:StPortfolioStatus_Broker Listen
08.01.2014 10:52:21 Portfolio 3/3 RTS_FUT:ST46216-RF-01:StPortfolioStatus_Broker Listen
08.01.2014 10:52:21 Listen: Ticks, RTS-3.14_FT
08.01.2014 10:52:21 Listen: BidAsks, RTS-3.14_FT
08.01.2014 10:52:21 Listen: Quotes, RTS-3.14_FT
08.01.2014 10:52:21 ST46216-MS-01 Cash: 0 Fee: 0 Saldo: 0 Leverage: 2
08.01.2014 10:52:21 ST46216-MO-01 Cash: 208168,34 Fee: 0 Saldo: 239883,77 Leverage: 2
08.01.2014 10:52:21 ST46216-RF-01 Cash: 0 Fee: 0 Saldo: 0 Leverage: 2
08.01.2014 10:52:21 ST46216-RF-01:RTS-3.14_FT Avg: avprice (-2) Planed: 0
Далее начинается странное. SmartCOM_UpdateOrder получает еще раз три события исполнения ордеров cookie 52, 53, 54. Мой лог:
08.01.2014 10:52:21 Order ST46216-RF-01:RTS-3.14_FT:52:3901000374:2253565672 StOrder_Action_Sell Price: xxxxx1 (1/0) StOrder_Type_Limit Stop: 0 08.01.2014 10:51:36 StOrder_State_Filled Mask:0 StOrder_Validity_Day
08.01.2014 10:52:21 Order ST46216-RF-01:RTS-3.14_FT:53:3901000375:2253565931 StOrder_Action_Sell Price: xxxxx2 (1/0) StOrder_Type_Limit Stop: 0 08.01.2014 10:51:38 StOrder_State_Filled Mask:0 StOrder_Validity_Day
08.01.2014 10:52:21 Order ST46216-RF-01:RTS-3.14_FT:54:3901000376:2253565982 StOrder_Action_Sell Price: xxxxx3 (1/0) StOrder_Type_Limit Stop: 0 08.01.2014 10:52:00 StOrder_State_Filled Mask:0 StOrder_Validity_Day
и реагирует на это, выставляя новый ордер. Мой лог:
08.01.2014 10:52:21 Order ST46216-RF-01:RTS-3.14_FT:1000056:3901000381:0 StOrder_Action_Buy Price: xxxxx4 (1/1) StOrder_Type_Limit Stop: 0 08.01.2014 10:52:11 StOrder_State_Pending Mask:0 StOrder_Validity_Day
08.01.2014 10:52:21 ST46216-RF-01:RTS-3.14_FT Avg: avprice (-2) Planed: 0
08.01.2014 10:52:21 Order ST46216-RF-01:RTS-3.14_FT:56:3901000382:0 StOrder_Action_Sell Price: xxxxx5 (1/1) StOrder_Type_Limit Stop: 0 08.01.2014 10:52:11 StOrder_State_Pending Mask:0 StOrder_Validity_Day
Если смотреть лог смарткома, то ничего связанного с событиями по ордерам 52, 53, 54 там нет:
': 10053, file: src\jelly_get_portfolio.cpp, line 40
2014-Jan-08 10:52:19.137000 [TID=270] - jelly: : Destroying http channel..0x5A292D8
2014-Jan-08 10:52:20.151000 [TID=570] - jelly: : Destroying http channel..0x5A3C1F8
2014-Jan-08 10:52:20.151000 [TID=570] - jelly: : Destroying http channel..0x5A28E58
2014-Jan-08 10:52:20.151000 [TID=570] - jelly: : Destroying http channel..0x5A3B4C8
2014-Jan-08 10:52:20.151000 [TID=570] - jelly: : Destroying http channel..0x5A3A210
2014-Jan-08 10:52:20.151000 [TID=570] - jelly: : Destroying http channel..0x5A3A2F8
2014-Jan-08 10:52:20.151000 [TID=570] - INFO : Trying to authenticate in mxdemo.ittrade.ru:8443 using SSL connection (login ST46216)
2014-Jan-08 10:52:20.151000 [TID=570] - jelly: : Trying connect to 213.247.232.236:8443
2014-Jan-08 10:52:20.197800 [TID=570] - jelly: : SSL connection for channel 0x7438418 established OK, encrypted method is DHE-RSA-AES256-SHA
2014-Jan-08 10:52:20.197800 [TID=570] - jelly: : SSL server certificate for channel 0x7438418 not valid, code 18..
2014-Jan-08 10:52:20.197800 [TID=570] - jelly: : Https channel 0x7438418 OK..
2014-Jan-08 10:52:20.322600 [TID=15f0] - INFO : Login OK, loading securities..
2014-Jan-08 10:52:20.322600 [TID=15f0] - jelly: : Trying connect to 213.247.232.236:8090
2014-Jan-08 10:52:20.322600 [TID=15f0] - jelly: : Channel 0x5A24710 will use async connect mode (1276)
2014-Jan-08 10:52:20.322600 [TID=304] - jelly: : Destroying https channel..0x7438418
2014-Jan-08 10:52:20.338200 [TID=12a8] - jelly: : Http channel 0x5A24710 OK..
2014-Jan-08 10:52:21.055800 [TID=304] - INFO : Securities table loaded OK
2014-Jan-08 10:52:21.055800 [TID=304] - INFO : StServer::GetPrortfolioList method
2014-Jan-08 10:52:21.055800 [TID=304] - INFO : StServer::ListenPortfolio method (Portfolio: ST46216-MO-01)
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Trying connect to 213.247.232.236:8090
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Channel 0x5DF9DE8 will use async connect mode (1096)
2014-Jan-08 10:52:21.055800 [TID=304] - INFO : StServer::GetMyClosePos method (Portfolio: ST46216-MO-01)
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Trying connect to 213.247.232.236:8090
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Channel 0x5A26A28 will use async connect mode (1128)
2014-Jan-08 10:52:21.055800 [TID=304] - INFO : StServer::GetMyTrades method (Portfolio: ST46216-MO-01)
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Trying connect to 213.247.232.236:8090
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Channel 0x5AFFEC0 will use async connect mode (1072)
2014-Jan-08 10:52:21.055800 [TID=304] - INFO : StServer::ListenPortfolio method (Portfolio: ST46216-MS-01)
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Trying connect to 213.247.232.236:8090
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Channel 0x5A3C7B0 will use async connect mode (1100)
2014-Jan-08 10:52:21.055800 [TID=304] - INFO : StServer::GetMyClosePos method (Portfolio: ST46216-MS-01)
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Trying connect to 213.247.232.236:8090
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Channel 0x74389B8 will use async connect mode (900)
2014-Jan-08 10:52:21.055800 [TID=304] - INFO : StServer::GetMyTrades method (Portfolio: ST46216-MS-01)
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Trying connect to 213.247.232.236:8090
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Channel 0x5A53DD8 will use async connect mode (852)
2014-Jan-08 10:52:21.055800 [TID=304] - INFO : StServer::ListenPortfolio method (Portfolio: ST46216-RF-01)
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Trying connect to 213.247.232.236:8090
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Channel 0x5A3C870 will use async connect mode (1144)
2014-Jan-08 10:52:21.055800 [TID=304] - INFO : StServer::GetMyClosePos method (Portfolio: ST46216-RF-01)
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Trying connect to 213.247.232.236:8090
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Channel 0x5A29198 will use async connect mode (1408)
2014-Jan-08 10:52:21.055800 [TID=304] - INFO : StServer::GetMyTrades method (Portfolio: ST46216-RF-01)
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Trying connect to 213.247.232.236:8090
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Channel 0x5A29328 will use async connect mode (1384)
2014-Jan-08 10:52:21.055800 [TID=304] - INFO : StServer::ListenTicks method (Symbol: RTS-3.14_FT)
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Trying connect to 213.247.232.236:8090
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Channel 0x5A24010 will use async connect mode (1400)
2014-Jan-08 10:52:21.055800 [TID=304] - INFO : StServer::ListenBidAsks method (Symbol: RTS-3.14_FT)
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Trying connect to 213.247.232.236:8090
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Channel 0x5A24380 will use async connect mode (1412)
2014-Jan-08 10:52:21.071400 [TID=304] - INFO : StServer::ListenQuotes method (Symbol: RTS-3.14_FT)
2014-Jan-08 10:52:21.071400 [TID=304] - jelly: : Trying connect to 213.247.232.236:8090
2014-Jan-08 10:52:21.071400 [TID=304] - jelly: : Channel 0x5A24508 will use async connect mode (1388)
2014-Jan-08 10:52:21.071400 [TID=304] - jelly: : Destroying http channel..0x5A24710
2014-Jan-08 10:52:21.071400 [TID=12a8] - jelly: : Http channel 0x5DF9DE8 OK..
2014-Jan-08 10:52:21.071400 [TID=12a8] - jelly: : Http channel 0x5AFFEC0 OK..
2014-Jan-08 10:52:21.071400 [TID=12a8] - jelly: : Http channel 0x5A3C7B0 OK..
2014-Jan-08 10:52:21.071400 [TID=12a8] - jelly: : Http channel 0x5A26A28 OK..
2014-Jan-08 10:52:21.071400 [TID=12a8] - jelly: : Http channel 0x74389B8 OK..
2014-Jan-08 10:52:21.071400 [TID=12a8] - jelly: : Http channel 0x5A53DD8 OK..
2014-Jan-08 10:52:21.071400 [TID=12a8] - jelly: : Http channel 0x5A3C870 OK..
2014-Jan-08 10:52:21.071400 [TID=12a8] - jelly: : Http channel 0x5A29198 OK..
2014-Jan-08 10:52:21.071400 [TID=12a8] - jelly: : Http channel 0x5A29328 OK..
2014-Jan-08 10:52:21.071400 [TID=12a8] - jelly: : Http channel 0x5A24010 OK..
2014-Jan-08 10:52:21.071400 [TID=12a8] - jelly: : Http channel 0x5A24380 OK..
2014-Jan-08 10:52:21.071400 [TID=12a8] - jelly: : Http channel 0x5A24508 OK..
2014-Jan-08 10:52:21.165000 [TID=304] - jelly: : Destroying http channel..0x74389B8
2014-Jan-08 10:52:21.165000 [TID=304] - jelly: : Destroying http channel..0x5A26A28
2014-Jan-08 10:52:21.180600 [TID=304] - jelly: : Destroying http channel..0x5AFFEC0
2014-Jan-08 10:52:21.180600 [TID=a3c] - jelly: : Destroying http channel..0x5A53DD8
2014-Jan-08 10:52:21.196200 [TID=15f0] - INFO : StServer::PlaceOrder method (Portfolio: ST46216-RF-01, Symbol RTS-3.14_FT, Action 1, Type 2, Validity 1, Price xxxxx4.000000, Amount 1.000000, Stop 0.000000, cookie 1000056)
2014-Jan-08 10:52:21.196200 [TID=15f0] - jelly: : Trying connect to 213.247.232.236:9980
2014-Jan-08 10:52:21.196200 [TID=15f0] - jelly: : Channel 0x74395D8 will use async connect mode (900)
2014-Jan-08 10:52:21.196200 [TID=15f0] - INFO : StServer::MoveOrder method (Portfolio: ST46216-RF-01, OrderId 3901000378, TargetPrice xxxxx6.000000
2014-Jan-08 10:52:21.196200 [TID=15f0] - jelly: : Trying connect to 213.247.232.236:9980
2014-Jan-08 10:52:21.196200 [TID=15f0] - jelly: : Channel 0x5A245F0 will use async connect mode (1468)
2014-Jan-08 10:52:21.196200 [TID=15f0] - INFO : StServer::PlaceOrder method (Portfolio: ST46216-RF-01, Symbol RTS-3.14_FT, Action 2, Type 2, Validity 1, Price xxxxx5.000000, Amount 1.000000, Stop 0.000000, cookie 56)
Получается, что после переподключения SmartCOM_UpdateOrder получил повтор событий, которые уже произошли и обработаны и из-за этого я не верно веду подсчет выставленных лимитных ордеров. Понятно, что перед UpdateOrder не пришел UpdatePosition, но по UpdatePositon я не могу следить за номерами ордеров и тогда не могу вести правильно их очередь.

Проверьте пожалуйста, возможно есть какая-то ошибка, которая генерирует события несколько раз? Или есть какой-то трюк, чтобы не получать уже полученные ранее события UpdateOrder?

#2 SmartCOM

SmartCOM

    Активный участник

  • Moderators
  • 732 сообщений

Отправлено 08 January 2014 - 03:40 PM

К сожалению, на текущий момент необходимо быть готов к тому, что события UpdateOrder могут действительно приходить несколько раз с одним и тем тем же статусом приказа, это особенность функционирования в том числе и торговой системы биржи. Поэтому вам придется самостоятельно фильтровать такие ситуации. В том числе используя событие AddTrade -- оно не должно дублироваться.

Добрый день!

Помогите пожалуйста разобраться.
SmartCom x64 версии 3.0.79.2589. Тестовый сервер. logLevel=4;maxWorkerThreads=3.
Есть кусок кода, который тестирую не первый день, но столкнулся с новой для себя ситуацией. Смысл участка, где возникла проблема заключается в следующем. Я жду, когда лимитная заявка станет Filled и выставляю новую.
Я логирую любое изменение состояний ордеров куском из примера:

private void SmartCOM_UpdateOrder(string portfolio, string symbol, SmartCOM3Lib.StOrder_State state, SmartCOM3Lib.StOrder_Action action, SmartCOM3Lib.StOrder_Type type, SmartCOM3Lib.StOrder_Validity validity, double price, double amount, double stop, double filled, System.DateTime datetime, string orderid, string orderno, int status_mask, int cookie)
{
Writers.WriteLine("Enegy", "log", "{0} Order {1}:{2}:{3}:{4}:{5} {6} Price: {7} ({8}/{9}) {10} Stop: {11} {12} {13} Mask:{14} {15}", DateTime.Now, portfolio, symbol, cookie, orderid, orderno, action, price, amount, filled, type, stop, datetime, state, status_mask, validity);
Я предполагаю, что на ордер, который стал Filled, придет одно соответствующее событие и долгое время у меня работало все в такой логике.

Что произошло сегодня. Три ордера исполнились (cookie 52, 53, 54). SmartCom Log:
2014-Jan-08 10:51:35.129400 [TID=270] - INFO : StServer::PlaceOrder method (Portfolio: ST46216-RF-01, Symbol RTS-3.14_FT, Action 2, Type 2, Validity 1, Price xxxxx1.000000, Amount 1.000000, Stop 0.000000, cookie 52)
2014-Jan-08 10:51:35.129400 [TID=270] - jelly: : Trying connect to 213.247.232.236:9980
2014-Jan-08 10:51:35.129400 [TID=270] - jelly: : Channel 0x5A53B10 will use async connect mode (532)
2014-Jan-08 10:51:35.129400 [TID=270] - INFO : StServer::MoveOrder method (Portfolio: ST46216-RF-01, OrderId 3901000373, TargetPrice xxxxx7.000000
2014-Jan-08 10:51:35.129400 [TID=270] - jelly: : Trying connect to 213.247.232.236:9980
2014-Jan-08 10:51:35.129400 [TID=270] - jelly: : Channel 0x5AFD140 will use async connect mode (544)
2014-Jan-08 10:51:35.145000 [TID=d58] - jelly: : Http channel 0x5A53B10 OK..
2014-Jan-08 10:51:35.145000 [TID=d58] - jelly: : Http channel 0x5AFD140 OK..
2014-Jan-08 10:51:35.160600 [TID=1024] - jelly: : Destroying http channel..0x5AFD140
2014-Jan-08 10:51:35.160600 [TID=1010] - jelly: : Destroying http channel..0x5A53B10
2014-Jan-08 10:51:46.361400 [TID=270] - INFO : StServer::PlaceOrder method (Portfolio: ST46216-RF-01, Symbol RTS-3.14_FT, Action 2, Type 2, Validity 1, Price xxxxx2.000000, Amount 1.000000, Stop 0.000000, cookie 53)
2014-Jan-08 10:51:46.361400 [TID=270] - jelly: : Trying connect to 213.247.232.236:9980
2014-Jan-08 10:51:46.361400 [TID=270] - jelly: : Channel 0x5AFFA80 will use async connect mode (516)
2014-Jan-08 10:51:46.361400 [TID=270] - INFO : StServer::MoveOrder method (Portfolio: ST46216-RF-01, OrderId 3901000373, TargetPrice xxxxx8.000000
2014-Jan-08 10:51:46.361400 [TID=270] - jelly: : Trying connect to 213.247.232.236:9980
2014-Jan-08 10:51:46.361400 [TID=270] - jelly: : Channel 0x7438900 will use async connect mode (700)
2014-Jan-08 10:51:46.377000 [TID=d58] - jelly: : Http channel 0x5AFFA80 OK..
2014-Jan-08 10:51:46.377000 [TID=d58] - jelly: : Http channel 0x7438900 OK..
2014-Jan-08 10:51:46.392600 [TID=1024] - jelly: : Destroying http channel..0x5AFFA80
2014-Jan-08 10:51:46.392600 [TID=270] - jelly: : Destroying http channel..0x7438900
2014-Jan-08 10:51:48.639000 [TID=1024] - INFO : StServer::PlaceOrder method (Portfolio: ST46216-RF-01, Symbol RTS-3.14_FT, Action 2, Type 2, Validity 1, Price xxxxx3.000000, Amount 1.000000, Stop 0.000000, cookie 54)
В своем логе я это тоже вижу:
08.01.2014 10:51:35 Order ST46216-RF-01:RTS-3.14_FT:51:3901000372:2253564895 StOrder_Action_Sell Price: xxxxx1 (1/0) StOrder_Type_Limit Stop: 0 08.01.2014 10:51:24 StOrder_State_Filled Mask:0 StOrder_Validity_Day
08.01.2014 10:51:46 Order ST46216-RF-01:RTS-3.14_FT:52:3901000374:2253565672 StOrder_Action_Sell Price: xxxxx2 (1/0) StOrder_Type_Limit Stop: 0 08.01.2014 10:51:36 StOrder_State_Filled Mask:0 StOrder_Validity_Day
08.01.2014 10:51:48 Order ST46216-RF-01:RTS-3.14_FT:53:3901000375:2253565931 StOrder_Action_Sell Price: xxxxx3 (1/0) StOrder_Type_Limit Stop: 0 08.01.2014 10:51:38 StOrder_State_Filled Mask:0 StOrder_Validity_Day
Далее через непродолжительное время происходит обрыв соединения:
2014-Jan-08 10:52:19.137000 [TID=270] - jelly: : Channel 0x5A292D8, sockErr 'Программа на вашем хост-компьютере разорвала установленное подключение.
или
08.01.2014 10:52:19 Disconnected: Программа на вашем хост-компьютере разорвала установленное подключение.
(213.247.232.236:8090)

Переподключаюсь (мой лог):
08.01.2014 10:52:19 ST46216-RF-01:RTS-3.14_FT Avg: avprice (-2) Planed: 0
08.01.2014 10:52:19 Click: Connect: ST46216
08.01.2014 10:52:21 Get: Symbols
08.01.2014 10:52:21 Get: Prortfolios
08.01.2014 10:52:21 Portfolio 1/3 MON:ST46216-MO-01:StPortfolioStatus_Broker Listen
08.01.2014 10:52:21 Portfolio 2/3 EQ:ST46216-MS-01:StPortfolioStatus_Broker Listen
08.01.2014 10:52:21 Portfolio 3/3 RTS_FUT:ST46216-RF-01:StPortfolioStatus_Broker Listen
08.01.2014 10:52:21 Listen: Ticks, RTS-3.14_FT
08.01.2014 10:52:21 Listen: BidAsks, RTS-3.14_FT
08.01.2014 10:52:21 Listen: Quotes, RTS-3.14_FT
08.01.2014 10:52:21 ST46216-MS-01 Cash: 0 Fee: 0 Saldo: 0 Leverage: 2
08.01.2014 10:52:21 ST46216-MO-01 Cash: 208168,34 Fee: 0 Saldo: 239883,77 Leverage: 2
08.01.2014 10:52:21 ST46216-RF-01 Cash: 0 Fee: 0 Saldo: 0 Leverage: 2
08.01.2014 10:52:21 ST46216-RF-01:RTS-3.14_FT Avg: avprice (-2) Planed: 0
Далее начинается странное. SmartCOM_UpdateOrder получает еще раз три события исполнения ордеров cookie 52, 53, 54. Мой лог:
08.01.2014 10:52:21 Order ST46216-RF-01:RTS-3.14_FT:52:3901000374:2253565672 StOrder_Action_Sell Price: xxxxx1 (1/0) StOrder_Type_Limit Stop: 0 08.01.2014 10:51:36 StOrder_State_Filled Mask:0 StOrder_Validity_Day
08.01.2014 10:52:21 Order ST46216-RF-01:RTS-3.14_FT:53:3901000375:2253565931 StOrder_Action_Sell Price: xxxxx2 (1/0) StOrder_Type_Limit Stop: 0 08.01.2014 10:51:38 StOrder_State_Filled Mask:0 StOrder_Validity_Day
08.01.2014 10:52:21 Order ST46216-RF-01:RTS-3.14_FT:54:3901000376:2253565982 StOrder_Action_Sell Price: xxxxx3 (1/0) StOrder_Type_Limit Stop: 0 08.01.2014 10:52:00 StOrder_State_Filled Mask:0 StOrder_Validity_Day
и реагирует на это, выставляя новый ордер. Мой лог:
08.01.2014 10:52:21 Order ST46216-RF-01:RTS-3.14_FT:1000056:3901000381:0 StOrder_Action_Buy Price: xxxxx4 (1/1) StOrder_Type_Limit Stop: 0 08.01.2014 10:52:11 StOrder_State_Pending Mask:0 StOrder_Validity_Day
08.01.2014 10:52:21 ST46216-RF-01:RTS-3.14_FT Avg: avprice (-2) Planed: 0
08.01.2014 10:52:21 Order ST46216-RF-01:RTS-3.14_FT:56:3901000382:0 StOrder_Action_Sell Price: xxxxx5 (1/1) StOrder_Type_Limit Stop: 0 08.01.2014 10:52:11 StOrder_State_Pending Mask:0 StOrder_Validity_Day
Если смотреть лог смарткома, то ничего связанного с событиями по ордерам 52, 53, 54 там нет:
': 10053, file: src\jelly_get_portfolio.cpp, line 40
2014-Jan-08 10:52:19.137000 [TID=270] - jelly: : Destroying http channel..0x5A292D8
2014-Jan-08 10:52:20.151000 [TID=570] - jelly: : Destroying http channel..0x5A3C1F8
2014-Jan-08 10:52:20.151000 [TID=570] - jelly: : Destroying http channel..0x5A28E58
2014-Jan-08 10:52:20.151000 [TID=570] - jelly: : Destroying http channel..0x5A3B4C8
2014-Jan-08 10:52:20.151000 [TID=570] - jelly: : Destroying http channel..0x5A3A210
2014-Jan-08 10:52:20.151000 [TID=570] - jelly: : Destroying http channel..0x5A3A2F8
2014-Jan-08 10:52:20.151000 [TID=570] - INFO : Trying to authenticate in mxdemo.ittrade.ru:8443 using SSL connection (login ST46216)
2014-Jan-08 10:52:20.151000 [TID=570] - jelly: : Trying connect to 213.247.232.236:8443
2014-Jan-08 10:52:20.197800 [TID=570] - jelly: : SSL connection for channel 0x7438418 established OK, encrypted method is DHE-RSA-AES256-SHA
2014-Jan-08 10:52:20.197800 [TID=570] - jelly: : SSL server certificate for channel 0x7438418 not valid, code 18..
2014-Jan-08 10:52:20.197800 [TID=570] - jelly: : Https channel 0x7438418 OK..
2014-Jan-08 10:52:20.322600 [TID=15f0] - INFO : Login OK, loading securities..
2014-Jan-08 10:52:20.322600 [TID=15f0] - jelly: : Trying connect to 213.247.232.236:8090
2014-Jan-08 10:52:20.322600 [TID=15f0] - jelly: : Channel 0x5A24710 will use async connect mode (1276)
2014-Jan-08 10:52:20.322600 [TID=304] - jelly: : Destroying https channel..0x7438418
2014-Jan-08 10:52:20.338200 [TID=12a8] - jelly: : Http channel 0x5A24710 OK..
2014-Jan-08 10:52:21.055800 [TID=304] - INFO : Securities table loaded OK
2014-Jan-08 10:52:21.055800 [TID=304] - INFO : StServer::GetPrortfolioList method
2014-Jan-08 10:52:21.055800 [TID=304] - INFO : StServer::ListenPortfolio method (Portfolio: ST46216-MO-01)
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Trying connect to 213.247.232.236:8090
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Channel 0x5DF9DE8 will use async connect mode (1096)
2014-Jan-08 10:52:21.055800 [TID=304] - INFO : StServer::GetMyClosePos method (Portfolio: ST46216-MO-01)
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Trying connect to 213.247.232.236:8090
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Channel 0x5A26A28 will use async connect mode (1128)
2014-Jan-08 10:52:21.055800 [TID=304] - INFO : StServer::GetMyTrades method (Portfolio: ST46216-MO-01)
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Trying connect to 213.247.232.236:8090
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Channel 0x5AFFEC0 will use async connect mode (1072)
2014-Jan-08 10:52:21.055800 [TID=304] - INFO : StServer::ListenPortfolio method (Portfolio: ST46216-MS-01)
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Trying connect to 213.247.232.236:8090
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Channel 0x5A3C7B0 will use async connect mode (1100)
2014-Jan-08 10:52:21.055800 [TID=304] - INFO : StServer::GetMyClosePos method (Portfolio: ST46216-MS-01)
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Trying connect to 213.247.232.236:8090
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Channel 0x74389B8 will use async connect mode (900)
2014-Jan-08 10:52:21.055800 [TID=304] - INFO : StServer::GetMyTrades method (Portfolio: ST46216-MS-01)
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Trying connect to 213.247.232.236:8090
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Channel 0x5A53DD8 will use async connect mode (852)
2014-Jan-08 10:52:21.055800 [TID=304] - INFO : StServer::ListenPortfolio method (Portfolio: ST46216-RF-01)
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Trying connect to 213.247.232.236:8090
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Channel 0x5A3C870 will use async connect mode (1144)
2014-Jan-08 10:52:21.055800 [TID=304] - INFO : StServer::GetMyClosePos method (Portfolio: ST46216-RF-01)
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Trying connect to 213.247.232.236:8090
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Channel 0x5A29198 will use async connect mode (1408)
2014-Jan-08 10:52:21.055800 [TID=304] - INFO : StServer::GetMyTrades method (Portfolio: ST46216-RF-01)
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Trying connect to 213.247.232.236:8090
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Channel 0x5A29328 will use async connect mode (1384)
2014-Jan-08 10:52:21.055800 [TID=304] - INFO : StServer::ListenTicks method (Symbol: RTS-3.14_FT)
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Trying connect to 213.247.232.236:8090
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Channel 0x5A24010 will use async connect mode (1400)
2014-Jan-08 10:52:21.055800 [TID=304] - INFO : StServer::ListenBidAsks method (Symbol: RTS-3.14_FT)
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Trying connect to 213.247.232.236:8090
2014-Jan-08 10:52:21.055800 [TID=304] - jelly: : Channel 0x5A24380 will use async connect mode (1412)
2014-Jan-08 10:52:21.071400 [TID=304] - INFO : StServer::ListenQuotes method (Symbol: RTS-3.14_FT)
2014-Jan-08 10:52:21.071400 [TID=304] - jelly: : Trying connect to 213.247.232.236:8090
2014-Jan-08 10:52:21.071400 [TID=304] - jelly: : Channel 0x5A24508 will use async connect mode (1388)
2014-Jan-08 10:52:21.071400 [TID=304] - jelly: : Destroying http channel..0x5A24710
2014-Jan-08 10:52:21.071400 [TID=12a8] - jelly: : Http channel 0x5DF9DE8 OK..
2014-Jan-08 10:52:21.071400 [TID=12a8] - jelly: : Http channel 0x5AFFEC0 OK..
2014-Jan-08 10:52:21.071400 [TID=12a8] - jelly: : Http channel 0x5A3C7B0 OK..
2014-Jan-08 10:52:21.071400 [TID=12a8] - jelly: : Http channel 0x5A26A28 OK..
2014-Jan-08 10:52:21.071400 [TID=12a8] - jelly: : Http channel 0x74389B8 OK..
2014-Jan-08 10:52:21.071400 [TID=12a8] - jelly: : Http channel 0x5A53DD8 OK..
2014-Jan-08 10:52:21.071400 [TID=12a8] - jelly: : Http channel 0x5A3C870 OK..
2014-Jan-08 10:52:21.071400 [TID=12a8] - jelly: : Http channel 0x5A29198 OK..
2014-Jan-08 10:52:21.071400 [TID=12a8] - jelly: : Http channel 0x5A29328 OK..
2014-Jan-08 10:52:21.071400 [TID=12a8] - jelly: : Http channel 0x5A24010 OK..
2014-Jan-08 10:52:21.071400 [TID=12a8] - jelly: : Http channel 0x5A24380 OK..
2014-Jan-08 10:52:21.071400 [TID=12a8] - jelly: : Http channel 0x5A24508 OK..
2014-Jan-08 10:52:21.165000 [TID=304] - jelly: : Destroying http channel..0x74389B8
2014-Jan-08 10:52:21.165000 [TID=304] - jelly: : Destroying http channel..0x5A26A28
2014-Jan-08 10:52:21.180600 [TID=304] - jelly: : Destroying http channel..0x5AFFEC0
2014-Jan-08 10:52:21.180600 [TID=a3c] - jelly: : Destroying http channel..0x5A53DD8
2014-Jan-08 10:52:21.196200 [TID=15f0] - INFO : StServer::PlaceOrder method (Portfolio: ST46216-RF-01, Symbol RTS-3.14_FT, Action 1, Type 2, Validity 1, Price xxxxx4.000000, Amount 1.000000, Stop 0.000000, cookie 1000056)
2014-Jan-08 10:52:21.196200 [TID=15f0] - jelly: : Trying connect to 213.247.232.236:9980
2014-Jan-08 10:52:21.196200 [TID=15f0] - jelly: : Channel 0x74395D8 will use async connect mode (900)
2014-Jan-08 10:52:21.196200 [TID=15f0] - INFO : StServer::MoveOrder method (Portfolio: ST46216-RF-01, OrderId 3901000378, TargetPrice xxxxx6.000000
2014-Jan-08 10:52:21.196200 [TID=15f0] - jelly: : Trying connect to 213.247.232.236:9980
2014-Jan-08 10:52:21.196200 [TID=15f0] - jelly: : Channel 0x5A245F0 will use async connect mode (1468)
2014-Jan-08 10:52:21.196200 [TID=15f0] - INFO : StServer::PlaceOrder method (Portfolio: ST46216-RF-01, Symbol RTS-3.14_FT, Action 2, Type 2, Validity 1, Price xxxxx5.000000, Amount 1.000000, Stop 0.000000, cookie 56)
Получается, что после переподключения SmartCOM_UpdateOrder получил повтор событий, которые уже произошли и обработаны и из-за этого я не верно веду подсчет выставленных лимитных ордеров. Понятно, что перед UpdateOrder не пришел UpdatePosition, но по UpdatePositon я не могу следить за номерами ордеров и тогда не могу вести правильно их очередь.

Проверьте пожалуйста, возможно есть какая-то ошибка, которая генерирует события несколько раз? Или есть какой-то трюк, чтобы не получать уже полученные ранее события UpdateOrder?



#3 FHunter

FHunter

    Новичок

  • Трейдеры
  • Pip
  • 61 сообщений

Отправлено 08 January 2014 - 05:58 PM

К сожалению, на текущий момент необходимо быть готов к тому, что события UpdateOrder могут действительно приходить несколько раз с одним и тем тем же статусом приказа, это особенность функционирования в том числе и торговой системы биржи. Поэтому вам придется самостоятельно фильтровать такие ситуации. В том числе используя событие AddTrade -- оно не должно дублироваться.


Спасибо, я понял. Буду сам дополнительно обрабатывать свои ордера и вести учет выбывших, мне кажется это будет надежнее во всех смыслах. Мне в данной ситуации показался странным момент, что в конечном логе самой библиотеки нет никаких задвоений, а в вызываемом обработчике есть.

В любом случае спасибо, вопрос снят.




Rambler's Top100 Яндекс.Метрика