Добрый день.
Как заставить коннектор HistoryEmulationConnector
_connector = new HistoryEmulationConnector(new[] { sec1, sec2 }, ConfigManager.TryGetService<IPortfolioProvider>().Portfolios, new StorageRegistry()) , LogLevel = LogLevels.Info, CreateDepthFromOrdersLog = true, CreateTradesFromOrdersLog = true };
- Реагировать на изменение стакана, используя исторический ордер лог?
CreateDepthFromOrdersLog = true не помогает. Подсказку про MarketDataMessage не понимаю как применить.
- Реагировать на новые сделки, используя исторический ордер лог? CreateTradesFromOrdersLog = true не помогает. Аналогично с подсказкой про MarketDataMessage.
- Реагировать на новые сделки, используя исторический стакан заявок?
Kommentare (8)
Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen
Добрый день
Вы можете подписаться на стакан через метод https://doc.stocksharp.ru/html/M_StockSharp_Algo_Connector_RegisterMarketDepth.htm указав в нем режим Build.
Для стакана срабатывают правила WhenMarketDepthChanged и WhenNewTrade, если прописать _connector.RegisterMarketDepth(security) и иметь историю по стакану.
Возможно неточно выразился. У меня история ордер лога. Прописано _connector.RegisterOrderLog(security); _connector.RegisterMarketDepth(security) (пробовал и _connector.RegisterMarketDepth(security, buildMode: MarketDataBuildModes.Build))
Для ордер лога срабатывает только правило WhenNewOrderLogItem, но не срабатывают правила WhenMarketDepthChanged и WhenNewTrade.
Пришлите пожалуйста ваш код.
Коннектор
var pairTradingStrategy = Strategy as PairTradingStrategy;
var storageRegistry = new StorageRegistry { DefaultDrive = new LocalMarketDataDrive(MainWindow.Instance.PathHistory) };
_connector.NewSecurity += Connector_NewSecurity;
private void Connector_NewSecurity(Security security) { _connector.RegisterOrderLog(security); _connector.RegisterMarketDepth(security, buildMode: MarketDataBuildModes.Build); }
_connector.LookupSecuritiesResult += _connector_LookupSecuritiesResult;
private void _connector_LookupSecuritiesResult(SecurityLookupMessage arg1, IEnumerable<Security> arg2, Exception arg3) { if (Strategy.ProcessState != ProcessStates.Stopped) return;
В PairTradingStrategy OnStarted()
protected override void OnStarted() { FirstSecurity.WhenMarketDepthChanged(Connector) .Do(ProcessMarketDepth) .Apply(this);
private void ProcessNewTrade(Trade obj)
}
Добрый день
Мы протестировали вами ранее присланный ОЛ на нашем примере SampleHistoryTesting и без каких либо модификаций он показал и стаканы и тиковые сделки (из которых были построены свечи для стратегии). Поэтому для исторического коннектора указание режима build не требуется.
В проект SampleHistoryTestingGitHub добавил на строки 506 и 507
И данные события сработали: Connector_MarketDepthChanged - 2 раза Connector_NewTrade - 1 раз
Как такое может быть?
Видео приложено. запись_1.webm
Добрый день,
Попробуйте, пожалуйста, данный код
В случае тестирования на вашем ОЛ событие вызывается постоянно, и через него OrderLogItem.Order.Time можно понять текущее время на истории.