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

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

esper

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


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

Спасибо: MenDel

esper

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


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

Спасибо:
1 2  >

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

loading
clippy