Пример #1
0
        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;
            }
        }
Пример #2
0
        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();
            }
        }