Загрузка статистических данных стратегии
Atom Ответить
03.02.2018


Добрый день, уважаемая поддержка! Нужно реализовать загрузку данных стратегии при её старте. То есть историю изменения позиции, данные по эквити. В документации есть вот это - http://doc.stocksharp.ru...a9-a558-ec664a1ab16a.htm Судя по всему статья устарела так как перегрузки метода ProcessNewOrders(IEnumerable<Order> newOrders, bool isStopOrders) уже не существует. Но и не в этом дело. Я понимаю что метод ProcessNewOrders теперь сам распознает что за ордера в него приходят. Дело в том что данное руководство не работает.
Реализовать пытаюсь так:

В документации написано что после того, как заявки будут загружены в стратегию через ProcessNewOrders, загрузятся и все совершенные по ним сделки. Это будет сделано автоматически.
Соответственно у меня есть несколько вопросов:

  1. Как сделать что бы ProcessNewOrders загружал в стратегию сделки и заявки?
  2. Будет ли при этом расчитываться эквити и срабатывать событие (Strategy.PnLChanged) изменения PnL?
  3. Будет ли при этом расчитываться позиция и срабатывать событие Strategy.PositionChanged изменения позиции?

Если все изменилось то подскажите в какую сторону копать. Не хочется придумывать костыли.Smile



Спасибо:




4 Ответов
Support

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


Добрый день

Текущий подход заключается в использовании StorageMessageAdapter и восстановлении истории через сообщения. Отдельно присоединения заявок не позволяет восстановить полный цикл истории. А именно значения индикаторов, расчёт позиции и прибыли.
Спасибо: Константин

Константин

Фотография
Благотворитель
Дата: 13.02.2018
Ответить


Здравствуйте есть пример использования StorageMessageAdapter? Или вы можете привести пример кода? Из документации мало что понятно.
Автор топика
Спасибо:

Support

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


Данный пример включает режим хранилища у коннектора и подгружает данные после перезапуска https://github.com/Stock...n/SampleMultiConnection/
Спасибо:

Константин

Фотография
Благотворитель
Дата: 16.02.2018
Ответить


В примере который вы предложили я увидел только то что в конструкторе главного окна создается CsvEntityRegistry и StorageRegistry после чего все передается в конструктор коннектора.
Код
            var entityRegistry = new CsvEntityRegistry(path);
            var storageRegistry = new StorageRegistry
            {
                DefaultDrive = new LocalMarketDataDrive(path)
            };

            ConfigManager.RegisterService<IEntityRegistry>(entityRegistry);
            ConfigManager.RegisterService<IStorageRegistry>(storageRegistry);
            // ecng.serialization invoke in several places IStorage obj
            ConfigManager.RegisterService(entityRegistry.Storage);

            Connector = new Connector(entityRegistry, storageRegistry);
            logManager.Sources.Add(Connector);

После чего происходит десиарелизация и загрузка настроек коннектора.
Код
                if (File.Exists(_settingsFile))
                    Connector.Load(new XmlSerializer<SettingsStorage>().Deserialize(_settingsFile));

И так же обратное сохранение
Код
            if (Connector.Configure(this))
                new XmlSerializer<SettingsStorage>().Serialize(Connector.Save(), _settingsFile);

Но как это применить к сохранению статистики стратегии я не понимаю. Как сохранить изменение PnL, Position и т.д. для того что бы потом загрузить и расчитать эти параметры?
Если сериализовать в xml то как записать в SettingsStorage, по какому ключу?
Автор топика
Спасибо:


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

loading
clippy