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

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


[quote]|Приостановка правил. _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 в процессе регистрации. [/quote]

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

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

[code=csharp] private void OnNewOrderTrades(IEnumerable myTrades) { var protectiveStrategies = myTrades.Select(t => { var newStrategyFromTrade = new StopLossStrategy(t, new Unit(TraderHelper.ShrinkPrice(t.Trade.Security, stopLossParameter * (decimal)currentParams.candleSize))) ;

            return newStrategyFromTrade;
        });

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

        base.OnNewMyTrades(myTrades);
    }

[/code]

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

[code=csharp] 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();

[/code]

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

Спасибо.




Спасибо:


1 2  >
Rebelion

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


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

Спасибо:

Mikhail Sukhov

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


[quote=Rebelion;29173]Помогите, плз... :-([/quote]

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

Спасибо:

Rebelion

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


[quote=Михаил Сухов;29177][quote=Rebelion;29173]Помогите, плз... :-([/quote]

А как воспроизвести?[/quote]

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

Спасибо:

Mikhail Sukhov

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


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

Спасибо:

Rebelion

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


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

[/quote]

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

Спасибо:

Rebelion

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


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

[/quote]

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

Спасибо:

Rebelion

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


up :-(

Спасибо:

Mikhail Sukhov

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


[quote=Rebelion;29231]up :-([/quote]

В процессе.

Спасибо: Rebelion

Rebelion

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


[quote=Михаил Сухов;29239][quote=Rebelion;29231]up :-([/quote]

В процессе.[/quote]

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

Спасибо:

Andrii

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


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

[/quote]

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

Спасибо:
1 2  >

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

loading
clippy