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


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

Теги:


Спасибо:




17 Ответов
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 с кодеплекса, проблема не воспроизвелась.
Спасибо:

MenDel

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


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


Там же вроде 4.1.6 последняя.
В чем у меня может быть проблема?
Автор топика
Спасибо:

esper

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


MenDel Перейти
Там же вроде 4.1.6 последняя.

Здесь.
Спасибо: MenDel

MenDel

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


Не знаю в чем была проблема, но создал новый проект с новой сборкой 4.1.7 и проблема исчезла.
Подскажите пожалуйста в чем разница между сборками dev и trunk.
Какой лучше пользоваться?
Они совершенно разные.
В них даже методы по разному называются OnStarted и OnStarting
Автор топика
Спасибо:

Moadip

Фотография
Автор статей Программист
Дата: 22.01.2013
Ответить


Цитата:
Подскажите пожалуйста в чем разница между сборками dev и trunk.

trunk Т.к. сейчас все новые коммиты в ней.
dev Это типа для тестов.Smile

Если на codeplex открыть какой нибудь коммит, то видно какие изменения были, и куда.

Например Commit 22415

edit trunk/References/Abt.Controls.SciChart.Wpf.dll
edit trunk/References/Abt.Controls.SciChart.Wpf.XML (View full diff)

Видно что изменилось два файла в trunk ветке.

Спасибо: MenDel

MenDel

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


Ребят не ругайте мя если это мой комп гонит,
но все же я седня раз 100 прогнал код.
В dev сборке ни разу не ошибся, а в trunk много раз ошибся.

И кстати хотел спросить почему QuikTrader в trunk требует еще 3 дополнительные библиотеки: Ecng.Serialization, PowerCollections, StockSharp.Logging
И почему в dev переопределяем метод в стратегии OnStarting, а в trunk он уже называется OnStarted
Автор топика
Спасибо:

esper

Фотография
Программист
Дата: 25.01.2013
Ответить


MenDel Перейти
Ребят не ругайте мя если это мой комп гонит,
но все же я седня раз 100 прогнал код.
В dev сборке ни разу не ошибся, а в trunk много раз ошибся.

И кстати хотел спросить почему QuikTrader в trunk требует еще 3 дополнительные библиотеки: Ecng.Serialization, PowerCollections, StockSharp.Logging
И почему в dev переопределяем метод в стратегии OnStarting, а в trunk он уже называется OnStarted


В dev ветке лежит очень старая версия, обновляться необходимо из trunk-а.
Покажите тогда полный лог стратегии и шлюза, свои сообщения в лог пишите так же с помощью
Код
this.AddInfoLog
Спасибо:

esper

Фотография
Программист
Дата: 26.03.2013
Ответить


Ошибку поправили, фикс будет в следующем обновлении в течение недели.
Спасибо: MenDel hroft


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

loading
clippy