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

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


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

Теги:


Спасибо:


1 2  >
MenDel

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


Подписался на события сразу по двум методам (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
Спасибо:

esper

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


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

MenDel

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


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


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

esper

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


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


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

MenDel

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


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


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


Вот добавил еще 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
Спасибо:

MenDel

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


И еще вот появился вопрос по поводу 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
Спасибо:

esper

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


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

MenDel

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


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


Код

        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();
        }
Спасибо:

esper

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


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

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

Спасибо: MenDel

esper

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


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

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

loading
clippy