예제 #1
0
파일: PositionBL.cs 프로젝트: vlshl/pulxer
        /// <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);
                }
            }
        }
예제 #2
0
파일: PositionBL.cs 프로젝트: vlshl/pulxer
        /// <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);
        }