public void AccountPositionToDualPosition(AccountData[] Positions, bool bOnlyToday, DualPositionContainer container) { foreach (var pos in Positions) { string symbol = (string)pos.Fields[AccountDataField.SYMBOL]; Instrument instrument = framework.InstrumentManager.Get(symbol); if (instrument == null) { continue; } int date = (int)pos.Fields[AccountDataFieldEx.DATE]; if (bOnlyToday) { if (date != TimeHelper.GetDate(DateTime.Today)) { continue; } } PositionFieldEx pfe = (PositionFieldEx)pos.Fields[AccountDataFieldEx.USER_DATA]; var record = container.GetPositionRecord(instrument); record.Long.Qty = pfe.Long.Position; record.Long.QtyToday = pfe.Long.TodayPosition; record.Short.Qty = pfe.Short.Position; record.Short.QtyToday = pfe.Short.TodayPosition; } }
public void ReadCsv(string path, DualPositionContainer container) { using (TextReader file = new StreamReader(File.Open(path, FileMode.Open, FileAccess.Read), Encoding.GetEncoding("GBK"))) { int i = 0; // 第一行丢弃 string str = file.ReadLine(); do { ++i; str = file.ReadLine(); if (str == null) { break; } string[] arr = str.Split(','); Instrument instrument = framework.InstrumentManager.Get(arr[0]); if (instrument == null) { continue; } var record = container.GetPositionRecord(instrument); MonoPositionRecord mpr = null; if (arr[1].StartsWith("买")) { mpr = record.Long; } else { mpr = record.Short; } mpr.Qty = double.Parse(arr[2]); mpr.QtyToday = double.Parse(arr[3]); } while (str != null); file.Close(); } }