По событию order.WhenNewTrades() приходят не все сделки


По событию order.WhenNewTrades() приходят не все сделки
Atom
1/22/2013


Использую событие order.WhenNewTrades(). для высавления стопов, но обнаружил что не всегда на весь объем срабатывает стоп.
Решил подсчитать объем и выяснил, что когда много сделок разом валилось он иногда некоторые пропускал, редко правда, но все же.
Вот не пойму это только у меня так?

Tags:


Thanks:


1 2  >
MenDel

Avatar
Date: 1/22/2013
Reply


Подписался на события сразу по двум методам (order.WhenNewTrades() и order.WhenAllTrades()) и вывел результаты в Debug.
Строки идут парами, первая сделка, вторая общая сумма.
В конце еще при остановке стратегии вывел две строчки с результатом.
Из картины видно что NewTrades не отреагировал на все сделки.
А AllTrades сработал только после того как набрал весь объем.
Помогите решить проблему, почему так?

12:41:12.9887028 *************** NewTrades => 59
12:41:12.9887028 *************** NewTrades => 59
12:41:12.9897029 *************** NewTrades => 1
12:41:12.9897029 *************** NewTrades => 60
12:41:18.0002039 *************** NewTrades => 1
12:41:18.0022041 *************** NewTrades => 61
12:41:40.1774214 *************** NewTrades => 59
12:41:40.1784215 *************** NewTrades => 120
12:41:41.4365473 *************** NewTrades => 55
12:41:41.4375474 *************** NewTrades => 175
12:41:41.4385475 *************** NewTrades => 15
12:41:41.4385475 *************** NewTrades => 190
12:41:41.4395476 *************** NewTrades => 29
12:41:41.4395476 *************** NewTrades => 219
12:41:41.4405477 AllTrades => 59
12:41:41.4415478 AllTrades => 59
12:41:41.4425479 AllTrades => 1
12:41:41.4425479 AllTrades => 60
12:41:41.4435480 AllTrades => 1
12:41:41.4435480 AllTrades => 61
12:41:41.4435480 AllTrades => 59
12:41:41.4445481 AllTrades => 120
12:41:41.4445481 AllTrades => 55
12:41:41.4455482 AllTrades => 175
12:41:41.4455482 AllTrades => 15
12:41:41.4455482 AllTrades => 190
12:41:41.4465483 AllTrades => 29
12:41:41.4465483 AllTrades => 219
12:41:41.4475484 AllTrades => 10
12:41:41.4475484 AllTrades => 229
12:41:41.4485485 AllTrades => 24
12:41:41.4485485 AllTrades => 253
12:41:41.4485485 AllTrades => 24
12:41:41.4495486 AllTrades => 277
12:41:41.4495486 AllTrades => 1
12:41:41.4505487 AllTrades => 278
12:41:41.4505487 AllTrades => 10
12:41:41.4505487 AllTrades => 288
12:41:41.4515488 AllTrades => 12
12:41:41.4515488 AllTrades => 300
12:41:41.4525489 AllTrades => 121
12:41:41.4525489 AllTrades => 421
12:41:41.4525489 AllTrades => 79
12:41:41.4535490 AllTrades => 500

12:41:58.2272262 В итоге метод AllTrades набрал => 500
12:41:58.2272262 В итоге метод NewTrades набрал => 219



а если объем набрался не весь, то получается так

12:54:20.1774138 *************** NewTrades => 104
12:54:20.1784139 *************** NewTrades => 104
12:54:20.1794140 *************** NewTrades => 11
12:54:20.1844145 *************** NewTrades => 115
12:54:20.1854146 *************** NewTrades => 1
12:54:20.1854146 *************** NewTrades => 116
12:54:20.1864147 *************** NewTrades => 10
12:54:20.1874148 *************** NewTrades => 126

12:56:44.2168163 В итоге метод AllTrades набрал => 0
12:56:44.2168163 В итоге метод NewTrades набрал => 126



а вот объем прошел одной сделкой, здесь все нормально

12:59:03.1937126 AllTrades => 500
12:59:03.1947127 AllTrades => 500
12:59:03.1947127 *************** NewTrades => 500
12:59:03.1957128 *************** NewTrades => 500

12:59:15.4719403 В итоге метод AllTrades набрал => 500
12:59:15.4719403 В итоге метод NewTrades набрал => 500
Thanks:

esper

Avatar
Date: 1/22/2013
Reply


Какая версия? Какой терминал? Вызывается ли событие Trader.NewMyTrades?
Thanks:

MenDel

Avatar
Date: 1/22/2013
Reply


esper Go to
Какая версия? Какой терминал? Вызывается ли событие Trader.NewMyTrades?


версия 4.1.6,
Ну такой объем я могу только на демо квике испытать, на реальном счете такой я не смогу такой объем пропустить.
Нет, я же с ордером работаю, по его сделкам. Зачем мне все сделки трэйдера.
Thanks:

esper

Avatar
Date: 1/22/2013
Reply


Сергей MenDel Go to
Нет, я же с ордером работаю, по его сделкам. Зачем мне все сделки трэйдера.


Вам, возможно, они не нужны, а я хочу понять где проблема.
Thanks:

MenDel

Avatar
Date: 1/22/2013
Reply


esper Go to
Сергей MenDel Go to
Нет, я же с ордером работаю, по его сделкам. Зачем мне все сделки трэйдера.


Вам, возможно, они не нужны, а я хочу понять где проблема.


Вот добавил еще Trader.MyTrades
это событие работает отлично, в отличии от order.WhenNewTrades

14:14:24.8718352 ***** MyTrades 4
14:14:24.8728353 ***** MyTradeS 4
14:14:24.8748355 *************** NewTrades => 4
14:14:24.8758356 *************** NewTradeS => 4
14:14:49.8613339 ***** MyTrades 11
14:14:49.8623340 ***** MyTradeS 15
14:14:49.8623340 *************** NewTrades => 11
14:14:49.8633341 *************** NewTradeS => 15
14:14:49.8643342 ***** MyTrades 368
14:14:49.8643342 ***** MyTradeS 383
14:14:49.8653343 *************** NewTrades => 368
14:14:49.8653343 *************** NewTradeS => 383
14:14:49.8653343 ***** MyTrades 51
14:14:49.8663344 ***** MyTradeS 434
14:14:49.8673345 *************** NewTrades => 51
14:14:49.8673345 *************** NewTradeS => 434
14:15:05.2218698 ***** MyTrades 1
14:15:05.2228699 ***** MyTradeS 435
14:15:05.2238700 *************** NewTrades => 1
14:15:05.2238700 *************** NewTradeS => 435
14:15:09.3762852 ***** MyTrades 10
14:15:09.3772853 ***** MyTradeS 445
14:15:09.3782854 *************** NewTrades => 10
14:15:09.3782854 *************** NewTradeS => 445
14:15:09.3792855 ***** MyTrades 4
14:15:09.3852861 ***** MyTradeS 449
14:15:09.3852861 *************** NewTrades => 4
14:15:09.3862862 *************** NewTradeS => 449
14:15:09.3872863 ***** MyTrades 1
14:15:09.3882864 ***** MyTradeS 450
14:15:09.3892865 ***** MyTrades 8
14:15:09.3892865 ***** MyTradeS 458
14:15:09.3902866 ***** MyTrades 11
14:15:09.3902866 ***** MyTradeS 469
14:15:09.3912867 ***** MyTrades 23
14:15:09.3912867 ***** MyTradeS 492
14:15:09.3922868 ***** MyTrades 1
14:15:09.3922868 ***** MyTradeS 493
14:15:09.3932869 ***** MyTrades 2
14:15:09.3932869 ***** MyTradeS 495
14:15:09.3932869 ***** MyTrades 5
14:15:09.3942870 ***** MyTradeS 500
14:15:09.3952871 AllTrades => 4
14:15:09.3952871 AllTradeS => 4
14:15:09.3962872 AllTrades => 11
14:15:09.3962872 AllTradeS => 15
14:15:09.3972873 AllTrades => 368
14:15:09.3972873 AllTradeS => 383
14:15:09.3982874 AllTrades => 51
14:15:09.3982874 AllTradeS => 434
14:15:09.3982874 AllTrades => 1
14:15:09.3992875 AllTradeS => 435
14:15:09.3992875 AllTrades => 10
14:15:09.4002876 AllTradeS => 445
14:15:09.4002876 AllTrades => 4
14:15:09.4012877 AllTradeS => 449
14:15:09.4012877 AllTrades => 1
14:15:09.4022878 AllTradeS => 450
14:15:09.4022878 AllTrades => 8
14:15:09.4022878 AllTradeS => 458
14:15:09.4032879 AllTrades => 11
14:15:09.4032879 AllTradeS => 469
14:15:09.4042880 AllTrades => 23
14:15:09.4042880 AllTradeS => 492
14:15:09.4042880 AllTrades => 1
14:15:09.4052881 AllTradeS => 493
14:15:09.4052881 AllTrades => 2
14:15:09.4062882 AllTradeS => 495
14:15:09.4062882 AllTrades => 5
14:15:09.4072883 AllTradeS => 500

14:15:22.3715846 В итоге метод AllTrades набрал => 500
14:15:22.3715846 В итоге метод NewTrades набрал => 449
14:15:22.3725847 В итоге метод MyTrades набрал => 500
Thanks:

MenDel

Avatar
Date: 1/22/2013
Reply


И еще вот появился вопрос по поводу MyTrades.
Когда первый раз стратегию запускаю по событию MyTrades все нормально приходит.
Но если я её остановлю и заново включу, то при каждой сделке MyTrades срабатывает дважды.
А если снова выключить и включить то трижды и т.д.
Можете обьяснить в чем проблема?

14:38:33.1196455 ***** MyTrades 88
14:38:33.1206456 ***** MyTradeS 88
14:38:33.1216457 ***** MyTrades 39
14:38:33.1216457 ***** MyTradeS 127
14:38:33.1216457 ***** MyTrades 88
14:38:33.1226458 ***** MyTradeS 215
14:38:33.1226458 ***** MyTrades 39
14:38:33.1236459 ***** MyTradeS 254
14:38:33.1236459 ***** MyTrades 88
14:38:33.1236459 ***** MyTradeS 342
14:38:33.1246460 ***** MyTrades 39
14:38:33.1246460 ***** MyTradeS 381
14:38:33.1256461 *************** NewTrades => 88
14:38:33.1256461 *************** NewTradeS => 88
14:38:33.1266462 *************** NewTrades => 39
14:38:33.1266462 *************** NewTradeS => 127
Thanks:

esper

Avatar
Date: 1/22/2013
Reply


Покажите минимальный код, не совсем понятно, что вы считаете.
Thanks:

MenDel

Avatar
Date: 1/22/2013
Reply


esper Go to
Покажите минимальный код, не совсем понятно, что вы считаете.


Code

        private readonly object _syncLock = new object();
        private bool check { get; set; }
        private decimal price { get; set; }
        private Order order = new Order();
        private DateTime startTime { get; set; }
        private decimal volAllTrades { get; set; }
        private decimal volNewTrades { get; set; }
        private decimal volMyTrades { get; set; }

        private void NewOrderRegister()
        {
                order = this.CreateOrder(OrderDirections.Sell, price, 500);
                volAllTrades = 0;
                volNewTrades = 0;
                volMyTrades = 0;

                order.WhenAllTrades().Do(trades => trades.ForEach(t =>
                {
                    volAllTrades += t.Trade.Volume;
                    Debug.WriteLine(DateTime.Now.TimeOfDay + " AllTrades => " + t.Trade.Volume);
                    Debug.WriteLine(DateTime.Now.TimeOfDay + " AllTradeS => " + volAllTrades);

                })).Apply(this);

                order.WhenNewTrades().Do(trades => trades.ForEach(t =>
                    {
                        volNewTrades += t.Trade.Volume;
                        Debug.WriteLine(DateTime.Now.TimeOfDay + " *************** NewTrades => " + t.Trade.Volume);
                        Debug.WriteLine(DateTime.Now.TimeOfDay + " *************** NewTradeS => " + volNewTrades);

                    })).Apply(this);

                RegisterOrder(order);
        }

        protected override void OnStarted()
        {
            check = false;
            startTime = DateTime.Now;
            Trader.NewMyTrades += trades => trades.ForEach(t =>
                {
                    if (t.Trade.Time.TimeOfDay >= startTime.TimeOfDay)
                    {
                        volMyTrades += t.Trade.Volume;
                        Debug.WriteLine(DateTime.Now.TimeOfDay + " ***** MyTrades " + t.Trade.Volume);
                        Debug.WriteLine(DateTime.Now.TimeOfDay + " ***** MyTradeS " + volMyTrades);
                    }
                });

            Security.WhenMarketDepthChanged().Do(md =>
                {
                    if (!check)
                    {
                        MarketDepth m = md;
                        price = m.BestBid.Price;
                        NewOrderRegister();
                        check = true;
                    }

                }).Sync(_syncLock).Apply(this);

            base.OnStarted();
        }
Thanks:

esper

Avatar
Date: 1/22/2013
Reply


Сергей MenDel Go to
И еще вот появился вопрос по поводу MyTrades.
Когда первый раз стратегию запускаю по событию MyTrades все нормально приходит.
Но если я её остановлю и заново включу, то при каждой сделке MyTrades срабатывает дважды.
А если снова выключить и включить то трижды и т.д.
Можете обьяснить в чем проблема?

В OnStopped надо отписываться от соответствующего события, правила делают это автоматически.

Thanks: MenDel

esper

Avatar
Date: 1/22/2013
Reply


Прогнал этот код раз 10 на последней 4.1.7 с кодеплекса, проблема не воспроизвелась.
Thanks:
1 2  >

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy