/// <summary> /// 连接指定服务器 /// </summary> public void Connect(ConnectionInfo connectionInfo) { LogHelper.Info(GetType(), "开始连接服务器:" + connectionInfo.Name); IPlugin_Market plugin_Market = marketPluginMgr.GetMarketTraderByConnection(connectionInfo); if (plugin_Market == null) { throw new ApplicationException("连接" + connectionInfo.Name + "找不到对应插件"); } this.currentPlugin_MarketTrader = plugin_Market.MarketTrader; if (currentPlugin_MarketTrader == null) { throw new ApplicationException("连接" + connectionInfo.Name + "未实现市场交易插件"); } this.currentConnectionInfo = connectionInfo; this.currentPlugin_MarketTrader.OnConnectionStatus = OnConnectionStatus; this.currentPlugin_MarketTrader.OnReturnInstruments = OnReturnInstrument; this.currentPlugin_MarketTrader.OnReturnAccount = OnReturnAccount; this.currentPlugin_MarketTrader.OnReturnInvestorPosition = OnReturnInvestorPosition; this.currentPlugin_MarketTrader.OnReturnOrder = OnReturnOrder; this.currentPlugin_MarketTrader.OnReturnTrade = OnReturnTrade; this.currentPlugin_MarketTrader.Connect(currentConnectionInfo); }
public void TestGetPluginObject() { IPluginMgr pluginMgr = GetPluginMgr(); IPlugin_Market plugin_Market = pluginMgr.GetPluginObject <IPlugin_Market>("MOCK.MARKET"); AssertMockMarketObject(plugin_Market); IPlugin_HistoryData plugin_HistoryData = pluginMgr.GetPluginObject <IPlugin_HistoryData>("MOCK.HISTORYDATA"); AssertMockHistoryDataObject(plugin_HistoryData); }
private static void AssertMockMarketObject(IPlugin_Market plugin_Market) { List <ConnectionInfo> connections = plugin_Market.MarketData.GetAllConnections(); Assert.AreEqual(2, connections.Count); ConnectionInfo connection = connections[0]; Assert.AreEqual("MOCKCONN1", connection.Id); Assert.AreEqual("MOCK连接", connection.Name); Assert.AreEqual("MOCK连接,测试用", connection.Description); }
private void AddMarketTraderConnections(string pluginId, IPlugin_Market plugin_Market, List <ConnectionInfo> conns) { for (int i = 0; i < conns.Count; i++) { ConnectionInfo conn = conns[i]; ConnectionInfo newConn = (ConnectionInfo)conn.Clone(); string connID = pluginId + "." + conn.Id; newConn.Data["ID"] = connID; marketTraderConnections.Add(newConn); dic_ConnectionId_MarketTrader.Add(connID, plugin_Market); } }
public DataReceiver(IPlugin_Market plugin_Market, string path) { this.path = path; this.currentMarket = plugin_Market; this.plugin_MarketData = plugin_Market.MarketData; this.plugin_MarketTrader = plugin_Market.MarketTrader; this.plugin_MarketData.OnConnectionStatus = OnConnectionStatus_MarketData; this.plugin_MarketData.OnReturnMarketData = OnReturnMarketData; plugin_MarketTrader.OnConnectionStatus = OnConnectionStatus_MarketTrader; plugin_MarketTrader.OnReturnInstruments = OnReturnInstrument; }
public MarketPluginMgr(MarketType marketType) { IPluginMgr pluginMgr = PluginMgrFactory.DefaultPluginMgr; List <PluginInfo> plugins = pluginMgr.GetPlugins(marketType, typeof(IPlugin_Market)); marketDataConnections = new List <ConnectionInfo>(); marketTraderConnections = new List <ConnectionInfo>(); for (int i = 0; i < plugins.Count; i++) { PluginInfo pluginInfo = plugins[i]; IPlugin_Market plugin_Market = pluginMgr.GetPluginObject <IPlugin_Market>(pluginInfo); AddMarketDataConnections(pluginInfo.PluginID, plugin_Market, plugin_Market.MarketData.GetAllConnections()); AddMarketTraderConnections(pluginInfo.PluginID, plugin_Market, plugin_Market.MarketTrader.GetAllConnections()); } }
private void Init(string todayDataPath, IPlugin_Market plugin_Market, IPlugin_HistoryData plugin_HistoryData, int lastOpenDate, string[] receiveCodes, List <KLinePeriod> klinePeriods) { this.plugin_Market = plugin_Market; this.receiveCodes = receiveCodes; this.klinePeriods = klinePeriods; //初始化历史数据 this.dataReaderFactory = DataReaderFactory.CreateDataReader(""); if (lastOpenDate < 0) { this.lastOpenDate = this.dataReaderFactory.TradingDayReader.LastTradingDay; } else { this.lastOpenDate = lastOpenDate; } //初始化数据接收器 this.dataReceiver = new DataReceiver(plugin_Market, todayDataPath); this.dataReceiver.Subscribe(receiveCodes); this.dataReceiver.OnReceiverPrepared = this.onReceiverPrepared; }
/// <summary> /// 连接指定服务器 /// </summary> public void Connect(ConnectionInfo connectionInfo) { LogHelper.Info(GetType(), "开始连接数据服务器:" + connectionInfo.Name); IPlugin_Market plugin_Market = marketPluginMgr.GetMarketDataByConnection(connectionInfo); if (plugin_Market == null) { throw new ApplicationException("连接" + connectionInfo.Name + "找不到对应插件"); } this.plugin_MarketUtils = plugin_Market.MarketUtils; this.currentPlugin_MarketData = plugin_Market.MarketData; if (currentPlugin_MarketData == null) { throw new ApplicationException("连接" + connectionInfo.Name + "未实现市场数据插件"); } this.currentConnectionInfo = connectionInfo; this.currentPlugin_MarketData.OnConnectionStatus = OnConnectionStatus; this.currentPlugin_MarketData.OnReturnMarketData = OnReturnMarketData; this.currentPlugin_MarketData.Connect(connectionInfo); }
public RealTimeDataReceiver(string todayDataPath, IPlugin_Market plugin_Market, IPlugin_HistoryData plugin_HistoryData, int lastOpenDate, String[] receiveCodes, List <KLinePeriod> klinePeriods) { Init(todayDataPath, plugin_Market, plugin_HistoryData, lastOpenDate, receiveCodes, klinePeriods); }
/// <summary> /// 默认保存在D:\SCPRESENT目录里 /// </summary> /// <param name="plugin_Market"></param> public DataReceiver(IPlugin_Market plugin_Market) : this(plugin_Market, @"D:\SCPRESENT") { }
/// <summary> /// 构建数据接收器 /// </summary> /// <param name="plugin_Market"></param> /// <param name="path"></param> /// <param name="subscribeAll"></param> public DataReceiver(IPlugin_Market plugin_Market, string path, bool subscribeAll) : this(plugin_Market, path) { this.subscribeAll = subscribeAll; }