/// <summary> /// 在行情市场中登记一个策略,每个ticket,调用一次策略。 /// </summary> /// <param name="strategy">策略实例</param> public void RegisterStrategy(IStrategy strategy) { foreach (string s in strategy.StockPool) { string code = StockUtil.GetFullCode(s); if (!StockMarketManager.bidCache.ContainsKey(code)) { StockMarketManager.bidCache.Add(code, new BidCacheQueue()); } StockMarketManager.bidCache[code].OnBidChange += strategy.OnStockDataChanged; } // 调用策略 this.OnTicket += strategy.OnTicket; }
private void internalRun() { while (true) { Thread.Sleep(2000); bool isSent = false; int n = 150; if (s_codes.Count == 0 && codes.Count != 0) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < codes.Count; i++) { if ((i % n) < n) { isSent = false; sb.Append(StockUtil.GetFullCode(codes[i])); sb.Append(","); } if (i % n == (n - 1)) { sb.Remove(sb.Length - 1, 1); s_codes.Add(sb.ToString()); sb.Clear(); isSent = true; } } if (!isSent) { sb.Remove(sb.Length - 1, 1); s_codes.Add(sb.ToString()); } } foreach (string item in s_codes) { sendRequest(item); } } }