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

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


Использую событие 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: Какая версия? Какой терминал? Вызывается ли событие Trader.NewMyTrades?

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

Thanks:

esper

Avatar
Date: 1/22/2013
Reply


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

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

Thanks:

MenDel

Avatar
Date: 1/22/2013
Reply


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

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: Покажите минимальный код, не совсем понятно, что вы считаете.

    ```csharp

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