Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Оставшийся обьем в MarketQuotingStrategy #248

Closed
risty opened this issue Jun 21, 2016 · 1 comment
Closed

Оставшийся обьем в MarketQuotingStrategy #248

risty opened this issue Jun 21, 2016 · 1 comment

Comments

@risty
Copy link
Contributor

risty commented Jun 21, 2016

Релиз 4.3.15
Хочу чтоб переставлялась заявка того объема, который был указан в заявке при создании объекта стратегии.
Сделал вот так:

var orderForQuoting = Position > 0
                    ? this.CreateOrder(Sides.Sell, null, Position.Abs() * 2)
                    : this.CreateOrder(Sides.Buy, null, Position.Abs() * 2);

                var quotingStrategy = new MarketQuotingStrategy(orderForQuoting,
                    10, 40)
                {
                    PriceType = MarketPriceTypes.Following,
                    Volume = orderForQuoting.Volume,
                    WaitAllTrades = false
                };
ChildStrategies.Add(quotingStrategy);

Что вижу в логе:

2016/06/21 16:22:06.549|       |SecurityMarketEmulator|Заявка 90. Исполнение объема 14 по цене 65447.
2016/06/21 16:22:06.549|       |SecurityMarketEmulator|Заявка 90 полностью исполнена.
2016/06/21 16:22:06.549|       |SecurityMarketEmulator|Сделка 41 заявки 90 P=65447 V=14.
2016/05/16 11:28:27.536|       |HistoryEmulationConnector|Order changed: 90/70 Покупка Цена=65447 Объем=14 Сост=Done Бал=0 
2016/05/16 11:28:27.536|       |MQS_SIM6@FORTS_Backtest|Заявка 90 (0x299CC67) полностью исполнилась. Оставшийся объем 14.
2016/05/16 11:28:27.536|       |MQS_SIM6@FORTS_Backtest|Цена текущей NULL и лучшей 65447.

Не смотря на то, что заявка полностью исполнилась остался объем равный размеру заявки и стратегия продолжает котирование.
Лог полностью:
log_20160621_161924.txt

@risty
Copy link
Contributor Author

risty commented Aug 19, 2016

Ошибка в том, что стратегия продолжает котирование(срабатывает правило о полном исполнении заявки, но позиция по стратегии ещё равна нулю) ещё до того, как от коннектора придет сообщение об изменении по заявке, пройдет по всем инстанциям(родительские стратегии ) и наконец осядет в PositionManager изменяя позицию.
В том числе задержка изменения позы происходит из за рекурсии в классе Strategy
Вызов менеджера позиций по исполненной заявке(баланс = 0) выглядит вот так:

StockSharp.Algo.dll!StockSharp.Algo.Positions.PositionManager.ProcessMessage(StockSharp.Messages.Message message) Line 125  C#
    StockSharp.Algo.dll!StockSharp.Algo.Strategies.Strategy.ProcessOrder.AnonymousMethod__0() Line 1525 C#
    StockSharp.Algo.dll!StockSharp.Algo.Strategies.Strategy.TryInvoke(System.Action handler) Line 2530  C#
    StockSharp.Algo.dll!StockSharp.Algo.Strategies.Strategy.ProcessOrder(StockSharp.BusinessEntities.Order order, bool isChanging) Line 1454    C#
    StockSharp.Algo.dll!StockSharp.Algo.Strategies.Strategy.OnChildOrderChanged(StockSharp.BusinessEntities.Order order) Line 2401  C#
    StockSharp.Algo.dll!StockSharp.Algo.Strategies.Strategy.OnOrderChanged(StockSharp.BusinessEntities.Order order) Line 1923   C#
    StockSharp.Algo.dll!StockSharp.Algo.Strategies.Strategy.ProcessOrder.AnonymousMethod__0() Line 1523 C#
    StockSharp.Algo.dll!StockSharp.Algo.Strategies.Strategy.TryInvoke(System.Action handler) Line 2530  C#
    StockSharp.Algo.dll!StockSharp.Algo.Strategies.Strategy.ProcessOrder(StockSharp.BusinessEntities.Order order, bool isChanging) Line 1454    C#
    StockSharp.Algo.dll!StockSharp.Algo.Strategies.Strategy.OnChildOrderChanged(StockSharp.BusinessEntities.Order order) Line 2401  C#
    StockSharp.Algo.dll!StockSharp.Algo.Strategies.Strategy.OnOrderChanged(StockSharp.BusinessEntities.Order order) Line 1923   C#
    StockSharp.Algo.dll!StockSharp.Algo.Strategies.Strategy.ProcessOrder.AnonymousMethod__0() Line 1523 C#
    StockSharp.Algo.dll!StockSharp.Algo.Strategies.Strategy.TryInvoke(System.Action handler) Line 2530  C#
    StockSharp.Algo.dll!StockSharp.Algo.Strategies.Strategy.ProcessOrder(StockSharp.BusinessEntities.Order order, bool isChanging) Line 1454    C#
    StockSharp.Algo.dll!StockSharp.Algo.Strategies.Strategy.OnConnectorOrdersChanged.AnonymousMethod__0() Line 2147 C#
    StockSharp.Algo.dll!StockSharp.Algo.Strategies.Strategy.TryInvoke(System.Action handler) Line 2530  C#

Во все это можно наставить костылей, но хочется чтобы архитектор поправил в правильной идеологии ;)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants