правила Security.WhenLastTradePriceMore и Security.WhenLastTradePriceLess

правила Security.WhenLastTradePriceMore и Security.WhenLastTradePriceLess
Atom
12/11/2017
Иван З.


1) При следующем коде WhenLastTradePriceLess вообще ни разу не сработало, WhenLastTradePriceMore срабатывает как то избирательно и очень редко. Хотя в connector.NewTrade я вижу, что сделки приходят. Как я понимаю они при таких условиях все сделки мне выдавать должны.
Коннектор КВИК.

Code

//-----------------------------------------------------------------------------------------------------------------------------------
            connector.NewTrade += (t) =>
            {
                if (t.Security == security)
                {

                }
            };
//-----------------------------------------------------------------------------------------------------------------------------------

            security.WhenLastTradePriceLess(connector, connector, new Unit(999999999m)).Do((a) =>
            {

            }).Apply();

            security.WhenLastTradePriceMore(connector, connector, new Unit(0.1m)).Do((a) =>
            {

            }).Apply();


2) Судя по исходникам правила Security.WhenLastTradePriceMore и Security.WhenLastTradePriceLess будут срабатывать не только при получении новой сделки но и при любом изменении инструмента, даже если новой сделки не было. Чем обосновано такое решение?




Thanks:


Иван З.

Avatar
Date: 12/24/2017
Reply


вопрос 1 снимается. Оказывается надо указывать на сколько отступит цена от цены последней сделки на момент регистрации правила, а не конкретно цену, как подумал сначала. Не очевидно конечно, но работает.
Thanks:

Иван З.

Avatar
Date: 12/24/2017
Reply


3) Если эти правила регистрировать в методе protected override void OnStarted() на HistoryEmulationConnector будет ошибка в стратегии, и стратеги работать не будет. Так как обычно на HistoryEmulationConnector сначала запускаю стратегию а после коннектор. Как то так.
Code

        private void _connector_NewSecurity(Security security)
        {
            _connector.RegisterTrades(security);

            _strategy.Start();
            _connector.Start();
        }

Соответственно на момент регистрации правила коннектор запущен не будет, и в правило не сможет получить последнюю сделку, и выдаст ошибку стратегии, которую можно увидеть только в логе. Если не вести лог стратегии можно долго гадать почему она не работает.
Эта проблема справедлива для большинства подобных правил, например, у MarketRuleHelperWhenClosePriceMore та же проблема.
Thanks: Support

Support

Avatar
Date: 12/26/2017
Reply


Добрый день.

Спасибо комментарий. информация передана.
Thanks:


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy