Добрый день.
Как заставить коннектор 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.
- Реагировать на новые сделки, используя исторический стакан заявок?
コメント (8)
ログイン または アカウントを作成, コメントを残すにはログインまたは新規登録してください
Добрый день
Вы можете подписаться на стакан через метод 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 можно понять текущее время на истории.