Коннектор
[spoiler]var pairTradingStrategy = Strategy as PairTradingStrategy;
var storageRegistry = new StorageRegistry
{
DefaultDrive = new LocalMarketDataDrive(MainWindow.Instance.PathHistory)
};
_connector = new HistoryEmulationConnector(new[] { pairTradingStrategy.FirstSecurity, pairTradingStrategy.SecondSecurity },
ConfigManager.TryGetService<IPortfolioProvider>().Portfolios,
new StorageRegistry())
{
HistoryMessageAdapter =
{
StartDate = BeginDateTime.ChangeKind(DateTimeKind.Utc),
StopDate = EndDateTime.ChangeKind(DateTimeKind.Utc),
StorageRegistry = storageRegistry,
StorageFormat = StorageFormat
},
LogLevel = LogLevels.Info,
CreateDepthFromOrdersLog = true,
CreateTradesFromOrdersLog = true
};[/spoiler]
_connector.NewSecurity += Connector_NewSecurity;
[spoiler]private void Connector_NewSecurity(Security security)
{
_connector.RegisterOrderLog(security);
_connector.RegisterMarketDepth(security, buildMode: MarketDataBuildModes.Build);
}[/spoiler]
_connector.LookupSecuritiesResult += _connector_LookupSecuritiesResult;
[spoiler]private void _connector_LookupSecuritiesResult(SecurityLookupMessage arg1, IEnumerable arg2, Exception arg3)
{
if (Strategy.ProcessState != ProcessStates.Stopped)
return;
Strategy.Start();
_connector.Start();
}[/spoiler]
В PairTradingStrategy OnStarted()
[spoiler] protected override void OnStarted()
{
FirstSecurity.WhenMarketDepthChanged(Connector)
.Do(ProcessMarketDepth)
.Apply(this);
SecondSecurity.WhenMarketDepthChanged(Connector)
.Do(ProcessMarketDepth)
.Apply(this);
FirstSecurity.WhenNewOrderLogItem(Connector)
.Do(ProcessNewOrderLogItem)
.Apply(this);
FirstSecurity.WhenNewTrade(Connector)
.Do(ProcessNewTrade)
.Apply(this);
base.OnStarted();
}
private void ProcessNewTrade(Trade obj)
private void ProcessNewOrderLogItem(OrderLogItem obj)
{
}
private void ProcessMarketDepth(MarketDepth marketDepth)
{
}
[/spoiler]