void manager_QuoteUpdatedEvent(FXCMConnectionManager manager, string symbolName, DataTick dataTick) { Symbol symbol = new Symbol(Symbol.SymbolGroup.Forex, symbolName); DataSourceStub dataSourceStub = _dataSourceStub; if (dataSourceStub == null) { return; } RuntimeDataSessionInformation sessionInformation = dataSourceStub.GetSymbolSessionInformation(symbol); if (sessionInformation == null) { return; } CombinedDataSubscriptionInformation info = dataSourceStub.GetUnsafeSessionSubscriptions(sessionInformation.Info); if (info != null && info.GetCombinedDataSubscription().QuoteSubscription) { dataSourceStub.UpdateQuote(sessionInformation.Info, new Quote(dataTick.Ask, dataTick.Bid, null, dataTick.DateTime), null); foreach (TimeSpan supportedPeriod in DefaultAvailablePeriods) { dataSourceStub.UpdateDataHistory(sessionInformation.Info, new DataHistoryUpdate(supportedPeriod, new DataTick[] { dataTick })); } } }
void Quotes_QuoteUpdateEvent(MBTradingQuote keeper, MBTradingQuote.SessionQuoteInformation information) { RuntimeDataSessionInformation session = DataSourceStub.GetSymbolSessionInformation(information.Symbol); if (session != null) { DataSourceStub.UpdateQuote(session.Info, information.Quote, null); } else { SystemMonitor.OperationWarning("Symbol session not found, quote missed."); } }
/// <summary> /// /// </summary> public RuntimeDataSessionInformation GetSymbolSessionRuntimeInformation(Symbol inputSymbol) { RuntimeDataSessionInformation information = _dataSourceStub.GetSymbolSessionInformation(inputSymbol); FXCMConnectionManager manager = Manager; if (information == null && manager != null) { return(new RuntimeDataSessionInformation(new DataSessionInfo(Guid.NewGuid(), inputSymbol.Name, inputSymbol, 1000, (int)manager.GetInstrumentData(inputSymbol.Name, "Digits")), DefaultAvailablePeriods)); } else { return(information); } }