/// <summary> /// Сохранить таблицу позиций в базе, /// также сохраняется таблица связей Позиция-Сделка /// </summary> /// <param name="table">Таблица позиций</param> public void SavePosTable(PosTable table) { var positions = table.GetPositions(); var posTrades = table.GetPosTrades(); foreach (var pos in positions) { if (pos.PosID <= 0) { var newPos = _positionDA.CreatePosition(pos.AccountID, pos.InsID, pos.PosType, pos.OpenTime, pos.OpenPrice, pos.Count, pos.CloseTime, pos.ClosePrice); posTrades.Where(r => r.PosID == pos.PosID).ToList() .ForEach(r => r.PosID = newPos.PosID); pos.PosID = newPos.PosID; } else if (pos.IsChanged) { _positionDA.UpdatePosition(pos); } } foreach (var pt in posTrades) { if (pt.IsNew) { _positionDA.AddPosTrade(pt.PosID, pt.TradeID); } } }
/// <summary> /// Получить объект PosTable - таблица позиций /// </summary> /// <param name="accountID">Account ID</param> /// <returns>Объект PosTable</returns> public PosTable GetPosTable(int accountID) { var positions = _positionDA.GetPositions(accountID, true); var posTrades = _positionDA.GetOpenPosTrades(accountID); if (positions == null) { positions = new List <Position>(); } if (posTrades == null) { posTrades = new List <PosTrade>(); } PosTable table = new PosTable(_instrumBL); table.Initialize(accountID, positions, posTrades); return(table); }