← Zurück

[major] хранение и восстановление сделок стратегии

Вопрос: как восстановить инфу к какой стратегии относится сделка?

Имеется робот с несколькими стратегиями. Эти стратегии генерируют сделки на одной бумаге. Для работы стратегий требуется история сделок, которые они совершили и информация, есть ли открытие позиции. Хочется после остановки и повторного запуска восстанавливать состояние стратегий. В S# есть механизм хранения данных, но в его API есть только сохранение сделок с привязкой к бумаге. Нет информации о стратегиях.

Хорошо, я могу сохранять инфу о трейдах в своем собственном хранилище, восстанавливать состояние при старте стратегии, но в S# этой инфы не будет и весь механизм подсчета статистики S# не будет работать. Можно ли как-нибудь при загрузке стратегии указывать ей, какие сделки ее?

War dieses Thema hilfreich?

Thema teilen

Kommentare (4)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Mikhail Sukhov
Mikhail Sukhov

Хранилище данных пока не доработано, и работает только в случае с Гидрой. Как вариант, реализуйте своего наследника от StrategyPositionManager и передайте в стратегию.

Greene-nsk
Greene-nsk Autor

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

        base.PositionManager = newPositionManager;
        base.PnLManager.PositionManager = newPositionManager; <--  здесь ошибка, что поле readonly

    public class MyStrategyPositionManager : StrategyPositionManager
    {
        public MyStrategyPositionManager(Strategy strategy, IEnumerable<MyTrade> myTradesPreloaded)
            : base(strategy)
        {
            base.Strategy.MyTrades.AddRange(myTradesPreloaded);
        }
    }

Alexander
Alexander

Greene-nsk: Михаил, я подменяю PositionManager на свой, работает хорошо. Можно ли как-нибудь подменить PositionManager у PnLManager, чтобы в нем учитывались подгруженные сделки?

        base.PositionManager = newPositionManager;
        base.PnLManager.PositionManager = newPositionManager; <--  здесь ошибка, что поле readonly
public class MyStrategyPositionManager : StrategyPositionManager
{
    public MyStrategyPositionManager(Strategy strategy, IEnumerable<MyTrade> myTradesPreloaded)
        : base(strategy)
    {
        base.Strategy.MyTrades.AddRange(myTradesPreloaded);
    }
}


Также подмени и PnLManager.
Greene-nsk
Greene-nsk Autor

Alexander: Также подмени и PnLManager.

Гениально ) Спасибо!