private void setNewBar(GMSDK.Bar gskBar) { string symbol = gskBar.exchange + "." + gskBar.sec_id; Instrument curInstrument = InstrumentManager.Instruments[symbol]; if (curInstrument == null) { this.EmitError(2, "Symbol " + symbol + " was not found in InstrumentManager."); return; } GMBar gmBar = GSKToGM.ConvertBar(gskBar); this.OnNewBar(this, new BarEventArgs(gmBar, curInstrument, this)); }
public ReportArgs GetLastBars(List <string> symbols, int barSize) { byte barType = 7;//默认1分线 int min = barSize / 60; switch (min) { case 1: barType = 7; break; case 5: barType = 0; break; case 15: barType = 1; break; case 30: barType = 2; break; case 60: barType = 3; break; case 1440: barType = 4; break; default: barType = 7; break; } ReportArgs reportArgs = new ReportArgs(); reportArgs.Succeeded = true; Dictionary <string, GMSDK.Bar> barDict = new Dictionary <string, GMSDK.Bar>(); reportArgs.Result = barDict; StringBuilder errInfo = new StringBuilder(256); StringBuilder result = new StringBuilder(1024 * 1024); short count = 1; foreach (string symbol in symbols) { string[] temp = symbol.Split('.'); string market = temp[0]; byte marketID = 0; switch (market) { case "SHSE": marketID = 1; break; case "SZSE": marketID = 0; break; } string securityID = temp[1]; if (TdxHqWrapper.TdxHq_GetSecurityBars(barType, marketID, securityID, 0, ref count, result, errInfo)) { List <string[]> data = this.pickUp(result); GMSDK.Bar bar = new GMSDK.Bar(); bar.exchange = market; bar.sec_id = securityID; bar.strtime = data[1][0]; bar.utc_endtime = DateTime.Parse(bar.strtime).ToFileTimeUtc(); bar.bar_type = barSize; bar.open = float.Parse(data[1][1]); bar.close = float.Parse(data[1][2]); bar.high = float.Parse(data[1][3]); bar.low = float.Parse(data[1][4]); bar.volume = double.Parse(data[1][5]); bar.amount = double.Parse(data[1][6]); barDict.Add(symbol, bar); } else { reportArgs.Succeeded = false; reportArgs.ErrorInfo = errInfo.ToString(); break; } } return(reportArgs); }
public static GMBar ConvertBar(GMSDK.Bar gskBar) { return(new GMBar(startTimeUTC.AddSeconds(gskBar.utc_time), gskBar.open, gskBar.high, gskBar.low, gskBar.close, (long)gskBar.volume, gskBar.bar_type, gskBar.pre_close, gskBar.amount, gskBar.adj_factor, gskBar.flag)); }
public void onBar(GMSDK.Bar gskBar) { this.setNewBar(gskBar); }