← 返回

Вопрос про бесконечное перевыставление заявки

|Приостановка правил. _rulesSuspendCount 1. 2013/12/18 16:50:35.000| |SBS_RIH4@FORTS_test account1|Регистрация новой Limit (0x2A1B2DE) заявки на Sell с ценой 141800.000000000 и объемом 1. 2013/12/18 16:50:35.000| |HistoryEmulationConnector|RegisterOrder: 0/0 Продажа Цена=141800.000000000 Объем=1 Сост=None Бал=0 2013/12/18 16:50:35.000| |HistoryEmulationConnector|New order: 13712394/0 Продажа Цена=141800.000000000 Объем=1 Сост=Pending Бал=1 2013/12/18 16:50:35.000| |SBS_RIH4@FORTS_test account1|Возобновление правил. _rulesSuspendCount 0. 2014/01/19 03:50:07.448| |#=qXLcyz4GZfjcuGFPYxXhmRaXexDK4lQNQbPTx$SCysd0=|Заявка 13712394 зарегистрирована. 2014/01/19 03:50:07.448| |#=qXLcyz4GZfjcuGFPYxXhmRaXexDK4lQNQbPTx$SCysd0=|Заявка 13712394. Исполнение объема 1 по цене 141960.000000000. 2014/01/19 03:50:07.448| |#=qXLcyz4GZfjcuGFPYxXhmRaXexDK4lQNQbPTx$SCysd0=|Заявка 13712394 полностью исполнена. 2014/01/19 03:50:07.448| |#=qXLcyz4GZfjcuGFPYxXhmRaXexDK4lQNQbPTx$SCysd0=|Сделка 73 заявки 13712394 P=13712394 V=141960.000000000. 2013/12/18 16:50:35.000| |HistoryEmulationConnector|Order changed: 13712394/74 Продажа Цена=141800.000000000 Объем=1 Сост=Done Бал=0 2013/12/18 16:50:35.000| |SBS_RIH4@FORTS_test account1|Новая позиция: test account1-RIH4@FORTS=-1. 2013/12/18 16:50:35.000| |SBS_RIH4@FORTS_test account1|Заявка 13712394 больше не активна. 2013/12/18 16:50:35.000| |SBS_RIH4@FORTS_test account1|Новая Sell сделка 73 по цене 141960.000000000 на 1 заявки 13712394. 2013/12/18 16:50:35.000| |SLS_RIH4@FORTS_test account1|Стратегия запущена. [0,1]. Позиция при старте 0. 2013/12/18 16:50:35.000| |SLS_RIH4@FORTS_test account1|Защита сделки 73 заявки 13712394. 2013/12/18 16:50:35.000| |SLS_RIH4@FORTS_test account1|Котирование на Buy объема 1. 2013/12/18 16:50:35.000| |SLS_RIH4@FORTS_test account1|Приостановка правил. _rulesSuspendCount 1. 2013/12/18 16:50:35.000| |SLS_RIH4@FORTS_test account1|Возобновление правил. _rulesSuspendCount 0. 2013/12/18 16:50:39.000| |SLS_RIH4@FORTS_test account1|Защита активирована. 2013/12/18 16:50:39.000| |SLS_RIH4@FORTS_test account1|Цена текущей NULL и лучшей 169990. 2013/12/18 16:50:39.000| |SLS_RIH4@FORTS_test account1|Лучший бид 142010.000000000 и лучший аск 142030.000000000. 2013/12/18 16:50:39.000| |SLS_RIH4@FORTS_test account1|Регистрация новой Limit (0x28C893F) заявки на Buy с ценой 169990 и объемом 1. SLS 73 2013/12/18 16:50:39.000| |HistoryEmulationConnector|RegisterOrder: 0/0 Покупка Цена=169990 Объем=1 Сост=None Бал=0 2013/12/18 16:50:39.000| |HistoryEmulationConnector|New order: 13712395/0 Покупка Цена=169990 Объем=1 Сост=Pending Бал=1 2013/12/18 16:50:39.000|Warning|SLS_RIH4@FORTS_test account1|Заявка 13712395 в процессе регистрации. 2013/12/18 16:50:39.000|Warning|SLS_RIH4@FORTS_test account1|Заявка 13712395 в процессе регистрации. 2013/12/18 16:50:39.000|Warning|SLS_RIH4@FORTS_test account1|Заявка 13712395 в процессе регистрации. 2013/12/18 16:50:39.000|Warning|SLS_RIH4@FORTS_test account1|Заявка 13712395 в процессе регистрации. 2013/12/18 16:50:39.000|Warning|SLS_RIH4@FORTS_test account1|Заявка 13712395 в процессе регистрации. 2013/12/18 16:50:39.000|Warning|SLS_RIH4@FORTS_test account1|Заявка 13712395 в процессе регистрации. 2013/12/18 16:50:39.000|Warning|SLS_RIH4@FORTS_test account1|Заявка 13712395 в процессе регистрации. 2013/12/18 16:50:39.000|Warning|SLS_RIH4@FORTS_test account1|Заявка 13712395 в процессе регистрации.

Собственно, локализовал одну из проблем.

Код активации стоп-лоса (трейлинг-стопа) такой (в курилке писал уже):


        private void OnNewOrderTrades(IEnumerable<MyTrade> myTrades)
        {
            var protectiveStrategies = myTrades.Select(t =>
            {
                var newStrategyFromTrade = new StopLossStrategy(t, new Unit(TraderHelper.ShrinkPrice(t.Trade.Security, stopLossParameter * (decimal)currentParams.candleSize))) { IsTrailing = true, UseQuoting = false, PriceOffset = (decimal)currentParams.candleSize*3, DisposeOnStop = true, ProtectiveVolume = t.Trade.Volume, MaxRegisterFailCount = 5, };

                return newStrategyFromTrade;
            });

            foreach(var s in protectiveStrategies)
                ChildStrategies.Add(s);

            base.OnNewMyTrades(myTrades);
        }

Вхожу в рынок и формирую правило на активацию стопа следующим образом:


                            CancelActiveOrders();

                            SuspendRules();

                            if (Position != 0)
                            {
                                var orderDirection = Position < 0 ? OrderDirections.Buy : OrderDirections.Sell;
                                var orderPrice = Position < 0 ? Security.BestAsk.Price + Security.MinStepSize * pricePieces : Security.BestBid.Price - Security.MinStepSize * pricePieces;

                                var newOrder = this.CreateOrder(orderDirection, orderPrice, Math.Abs(Position));

                                RegisterOrder(newOrder);
                            }
                            

                            var newOrderDirection = isNewEntranceSignalUp == true ? OrderDirections.Buy : OrderDirections.Sell;
                            var newOrderPrice = isNewEntranceSignalUp == true ? Security.BestAsk.Price + Security.MinStepSize * pricePieces : Security.BestBid.Price - Security.MinStepSize * pricePieces;  

                            var newPositionToOpen = this.CreateOrder(newOrderDirection, newOrderPrice, 1);
                            newPositionToOpen.WhenMatched().Do(() => newPositionToOpen.WhenNewTrades().Do(OnNewOrderTrades).Apply(this)).Apply(this);

                            RegisterOrder(newPositionToOpen);
                            
                            ResumeRules();

Где у меня гармонь? Или это проблемы в библиотеке (что менее вероятно)?

Спасибо.

本主题对您有帮助吗?

分享主题

评论 (16)

登录创建账户, 登录或注册以发表评论

Rebelion
Rebelion 作者

Помогите, плз... :-(

Mikhail Sukhov
Mikhail Sukhov

Rebelion: Помогите, плз... :-(

А как воспроизвести?

Rebelion
Rebelion 作者

Михаил Сухов:

Rebelion: Помогите, плз... :-(

А как воспроизвести?

Михаил, могу выслать свой проект полностью для того, чтобы могли на своей машине воспроизвести багу. Но есть беда - требуется ядро R (x64 установленное) и R.NET с нугета. Если дадите адресок - вышлю. Либо могу код стратегии прислать без индикаторов и проверок условий (там используются обращения к R), туда можно любые будет запихнуть условия и попробовать потестить. Или же скажите мне, как сгенерировать нужные логи - я сделаю всё, что скажете. Просто мне нуна 4.2.x библиотека (пошустрее всё же на реальной торговле, имхо). На 4.1.19.1 всё пашет, но ощущение, что стопы не отрабатывают - поэтому я и решил спросить, что в коде моих стопов может быть неправильно написано. Заодно и привёл пример бесконечного перевыставления трейлинг-стопа, который удалось локализовать быстро (лог разрастается сумасшедшим образом).

Mikhail Sukhov
Mikhail Sukhov

Нужен код, воспроизводящий проблему. Чем он меньше, тем лучше. Лучше на SampleHistoryTesting

Rebelion
Rebelion 作者

Михаил Сухов: Нужен код, воспроизводящий проблему. Чем он меньше, тем лучше. Лучше на SampleHistoryTesting

Ок,я сегодня сделаю свой код на Рихе4 без R и прочих прибамбасов, переделаю пример. И если ошибка на этом коде воспроизведётся - пришлю. Спасибо.

Rebelion
Rebelion 作者

Михаил Сухов: Нужен код, воспроизводящий проблему. Чем он меньше, тем лучше. Лучше на SampleHistoryTesting

Воспроизвёл. Пример приложен. Release.

Andrii
Andrii

Михаил Сухов: Нужен код, воспроизводящий проблему. Чем он меньше, тем лучше. Лучше на SampleHistoryTesting

SampleEmulationTesting воспроизводится на ура, 5/6 будет зацикливания

Mikhail Sukhov
Mikhail Sukhov

Andrii: SampleEmulationTesting воспроизводится на ура, 5/6 будет зацикливания

Ошибка автора топика мы исправили в последней версии.

Andrii
Andrii

Михаил Сухов:

Andrii: SampleEmulationTesting воспроизводится на ура, 5/6 будет зацикливания

Ошибка автора топика мы исправили в последней версии. в последней версии 4.2.2.4 из примера лог:

2014/01/24 11:49:01.821|       |#=qJ2eU$gwhGiovn4S9yfhHLi9xu7QckDfZeXYEYr2aqAE=|Заявка 42528160 снята.
2014/01/24 11:49:01.821|       |#=qJ2eU$gwhGiovn4S9yfhHLi9xu7QckDfZeXYEYr2aqAE=|Заявка 42528163 зарегистрирована.
2009/06/15 23:35:00.000|Warning|MQS_RIU9@FORTS_test account|Перерегистрация не была выполнена. Ожидание исполнения заявки 42518483.
2009/06/15 23:35:00.000|Warning|MQS_RIU9@FORTS_test account|Заявка 42528160 в процессе перерегистрации на заявку 42528163.
2009/06/15 21:35:00.000|       |HistoryEmulationConnector|Order changed: 42528160/10108 Продажа Цена=3590 Объем=1 Сост=Done Бал=1 
2009/06/15 23:35:00.000|       |MQS_RIU9@FORTS_test account|Заявка 42528160 больше не активна.
2009/06/15 21:35:00.000|       |HistoryEmulationConnector|Order changed: 42528163/10111 Продажа Цена=1470 Объем=1 Сост=Active Бал=1 
2009/06/15 23:35:00.000|       |MQS_RIU9@FORTS_test account|Заявка 42528160 перерегистрирована на заявку 42528163.
2009/06/15 23:35:00.000|       |MQS_RIU9@FORTS_test account|Сброс счетчика ошибок регистрации с 0 до нуля.
2009/06/15 23:35:00.000|       |MQS_RIU9@FORTS_test account|Цена текущей 1470 и лучшей 3590.
2009/06/15 23:35:00.000|       |MQS_RIU9@FORTS_test account|Лучший бид 1390 и лучший аск 3590.
2009/06/15 23:35:00.000|       |MQS_RIU9@FORTS_test account|Котирование заявки 42528163 на Sell с ценой 1470 объемом 1.
2009/06/15 23:35:00.000|       |MQS_RIU9@FORTS_test account|Перерегистрация заявки 42528163 с ценой 1470 на цену 3590. 
2009/06/15 23:35:00.000|       |MQS_RIU9@FORTS_test account|Перерегистрация проскальзывания заявки 42528163 (0x2AC6DA4) на заявку (0x26842F8).
2009/06/15 23:35:00.000|       |SS_RIU9@FORTS_test account|Перерегистрация проскальзывания заявки 42528163 (0x2AC6DA4) на заявку (0x26842F8).
2009/06/15 21:35:00.000|       |HistoryEmulationConnector|New order: 42528164/0 Продажа Цена=3590 Объем=0 Сост=Pending Бал=0 
2009/06/15 23:35:00.000|       |MQS_RIU9@FORTS_test account|Перекотирование зарегистрировано для заявки 42528164 на Sell с ценой 3590.
2009/06/15 23:35:00.000|Warning|MQS_RIU9@FORTS_test account|Перерегистрация не была выполнена. Ожидание исполнения заявки 42518483.
2009/06/15 23:35:00.000|Warning|MQS_RIU9@FORTS_test account|Заявка 42528163 в процессе перерегистрации на заявку 42528164.
2009/06/15 23:35:00.000|       |MQS_RIU9@FORTS_test account|Цена текущей 3590 и лучшей 1470.
2009/06/15 23:35:00.000|       |MQS_RIU9@FORTS_test account|Лучший бид 1390 и лучший аск 3590.
2009/06/15 23:35:00.000|       |MQS_RIU9@FORTS_test account|Котирование заявки 42528162 на Sell с ценой 3590 объемом 1.
2009/06/15 23:35:00.000|       |MQS_RIU9@FORTS_test account|Перерегистрация заявки 42528162 с ценой 3590 на цену 1470. 
2009/06/15 23:35:00.000|       |MQS_RIU9@FORTS_test account|Перерегистрация проскальзывания заявки 42528162 (0xB9EDAC) на заявку (0x300B2C3).
2009/06/15 23:35:00.000|       |SS_RIU9@FORTS_test account|Перерегистрация проскальзывания заявки 42528162 (0xB9EDAC) на заявку (0x300B2C3).
2009/06/15 21:35:00.000|       |HistoryEmulationConnector|New order: 42528165/0 Продажа Цена=1470 Объем=0 Сост=Pending Бал=0 
2009/06/15 23:35:00.000|       |MQS_RIU9@FORTS_test account|Перекотирование зарегистрировано для заявки 42528165 на Sell с ценой 1470.

...

2014/01/24 11:50:20.865|       |#=qJ2eU$gwhGiovn4S9yfhHLi9xu7QckDfZeXYEYr2aqAE=|Заявка 42562694 снята.
2014/01/24 11:50:20.865|       |#=qJ2eU$gwhGiovn4S9yfhHLi9xu7QckDfZeXYEYr2aqAE=|Заявка 42562697 зарегистрирована.
2009/06/15 23:35:00.000|Warning|MQS_RIU9@FORTS_test account|Перерегистрация не была выполнена. Ожидание исполнения заявки 42518483.
2009/06/15 23:35:00.000|Warning|MQS_RIU9@FORTS_test account|Заявка 42562694 в процессе перерегистрации на заявку 42562697.
2009/06/15 21:35:00.000|       |HistoryEmulationConnector|Order changed: 42562694/44642 Продажа Цена=3590 Объем=1 Сост=Done Бал=1 
2009/06/15 23:35:00.000|       |MQS_RIU9@FORTS_test account|Заявка 42562694 больше не активна.
2009/06/15 21:35:00.000|       |HistoryEmulationConnector|Order changed: 42562697/44645 Продажа Цена=1470 Объем=1 Сост=Active Бал=1 
2009/06/15 23:35:00.000|       |MQS_RIU9@FORTS_test account|Заявка 42562694 перерегистрирована на заявку 42562697.
2009/06/15 23:35:00.000|       |MQS_RIU9@FORTS_test account|Сброс счетчика ошибок регистрации с 0 до нуля.
2009/06/15 23:35:00.000|       |MQS_RIU9@FORTS_test account|Цена текущей 1470 и лучшей 3590.
2009/06/15 23:35:00.000|       |MQS_RIU9@FORTS_test account|Лучший бид 1390 и лучший аск 3590.
2009/06/15 23:35:00.000|       |MQS_RIU9@FORTS_test account|Котирование заявки 42562697 на Sell с ценой 1470 объемом 1.
2009/06/15 23:35:00.000|       |MQS_RIU9@FORTS_test account|Перерегистрация заявки 42562697 с ценой 1470 на цену 3590. 
2009/06/15 23:35:00.000|       |MQS_RIU9@FORTS_test account|Перерегистрация проскальзывания заявки 42562697 (0x152FD4E) на заявку (0x3EFB6A5).
2009/06/15 23:35:00.000|       |SS_RIU9@FORTS_test account|Перерегистрация проскальзывания заявки 42562697 (0x152FD4E) на заявку (0x3EFB6A5).
2009/06/15 21:35:00.000|       |HistoryEmulationConnector|New order: 42562698/0 Продажа Цена=3590 Объем=0 Сост=Pending Бал=0 
2009/06/15 23:35:00.000|       |MQS_RIU9@FORTS_test account|Перекотирование зарегистрировано для заявки 42562698 на Sell с ценой 3590.
2009/06/15 23:35:00.000|Warning|MQS_RIU9@FORTS_test account|Перерегистрация не была выполнена. Ожидание исполнения заявки 42518483.
2009/06/15 23:35:00.000|       |MQS_RIU9@FORTS_test account|Цена текущей 3590 и лучшей 1470.
2009/06/15 23:35:00.000|       |MQS_RIU9@FORTS_test account|Лучший бид 1390 и лучший аск 3590.
2009/06/15 23:35:00.000|       |MQS_RIU9@FORTS_test account|Котирование заявки 42562696 на Sell с ценой 3590 объемом 1.
2009/06/15 23:35:00.000|       |MQS_RIU9@FORTS_test account|Перерегистрация заявки 42562696 с ценой 3590 на цену 1470. 
2009/06/15 23:35:00.000|       |MQS_RIU9@FORTS_test account|Перерегистрация проскальзывания заявки 42562696 (0xE169C1) на заявку (0x22DF488).
2009/06/15 23:35:00.000|       |SS_RIU9@FORTS_test account|Перерегистрация проскальзывания заявки 42562696 (0xE169C1) на заявку (0x22DF488).
2009/06/15 21:35:00.000|       |HistoryEmulationConnector|New order: 42562699/0 Продажа Цена=1470 Объем=0 Сост=Pending Бал=0 
2009/06/15 23:35:00.000|       |MQS_RIU9@FORTS_test account|Перекотирование зарегистрировано для заявки 42562699 на Sell с ценой 1470.
2009/06/15 23:35:00.000|Warning|MQS_RIU9@FORTS_test account|Заявка 42562697 в процессе перерегистрации на заявку 42562698.
2014/01/24 11:50:20.868|       |#=qJ2eU$gwhGiovn4S9yfhHLi9xu7QckDfZeXYEYr2aqAE=|Заявка 42562697 снята.
2014/01/24 11:50:20.868|       |#=qJ2eU$gwhGiovn4S9yfhHLi9xu7QckDfZeXYEYr2aqAE=|Заявка 42562698 зарегистрирована.
Rebelion
Rebelion 作者

Михаил Сухов:

Andrii: SampleEmulationTesting воспроизводится на ура, 5/6 будет зацикливания

Ошибка автора топика мы исправили в последней версии.

Михаил, а можете ткнуть носом непосредственно в мою ошибку, чтобы больше мне не повториться и не спамить форум? Пасиба.

Rebelion
Rebelion 作者

Rebelion:

Михаил Сухов:

Andrii: SampleEmulationTesting воспроизводится на ура, 5/6 будет зацикливания

Ошибка автора топика мы исправили в последней версии.

Михаил, а можете ткнуть носом непосредственно в мою ошибку, чтобы больше мне не повториться и не спамить форум? Пасиба.

up. Михаил, сможете помочь?

Mikhail Sukhov
Mikhail Sukhov

Я вопроса не понял.

Rebelion
Rebelion 作者

Михаил Сухов: Я вопроса не понял.

Собственно, по этому поводу спрашивал - указали на ошибки в моём коде. > Ошибка автора топика мы исправили в последней версии.

Rebelion
Rebelion 作者

up :-(

Mikhail Sukhov
Mikhail Sukhov

Rebelion: up :-(

В процессе.

Rebelion
Rebelion 作者

Михаил Сухов:

Rebelion: up :-(

В процессе.

Хорошо, спасибо!! Просто я подумал, что остался нерассмотренным вопрос, что где-то у меня сильный затуп в коде такой. :-)