Exemplo n.º 1
0
        public Cell(int X, int Y)
        {
            this.X = X;
            this.Y = Y;

            TypePosition = PosTypes.None;
            TypeFunc     = FuncTypes.None;
        }
Exemplo n.º 2
0
        /// <summary>
        /// помещает клетку в позицию X,Y в Environment.CellMap
        /// </summary>
        public Cell(int X, int Y, PosTypes tp, FuncTypes tf)
        {
            this.X = X;
            this.Y = Y;

            TypePosition = tp;
            TypeFunc     = tf;

            Envirmnt.Inst.CellMap[X][Y] = this;
        }
Exemplo n.º 3
0
        public void AddTrade(Trade trade)
        {
            var instrum = _instrumBL.GetInstrumByID(trade.InsID);

            if (instrum == null)
            {
                return;
            }

            PosTypes pt    = trade.BuySell == BuySell.Buy ? PosTypes.Short : PosTypes.Long;
            int      count = trade.LotCount * instrum.LotSize;

            var openPos = from p in _positions
                          let srt = p.Count == count ? 0 : (p.Count > count ? 1 : 2)
                                    where p.InsID == trade.InsID && p.CloseTime == null && p.PosType == pt
                                    orderby srt ascending, p.OpenTime descending
            select p;

            foreach (var p in openPos)
            {
                if (count <= 0)
                {
                    break;
                }

                if (count < p.Count)
                {
                    SplitPosition(p, count);
                    p.ClosePosition(trade.Time, trade.Price);
                    AddPosTrade(p.PosID, trade.TradeID);
                    count = 0;
                    break;
                }
                else if (count == p.Count)
                {
                    p.ClosePosition(trade.Time, trade.Price);
                    AddPosTrade(p.PosID, trade.TradeID);
                    count = 0;
                    break;
                }
                else
                {
                    p.ClosePosition(trade.Time, trade.Price);
                    AddPosTrade(p.PosID, trade.TradeID);
                    count -= p.Count;
                }
            }
            if (count > 0)
            {
                PosTypes pt1  = trade.BuySell == BuySell.Buy ? PosTypes.Long : PosTypes.Short;
                Position pos1 = AddPosition(trade.InsID, count, trade.Time, trade.Price, pt1);
                AddPosTrade(pos1.PosID, trade.TradeID);
            }
        }
Exemplo n.º 4
0
        public Position CreatePosition(int accountID, int insID, PosTypes posType, DateTime openTime, decimal openPrice, int count, DateTime?closeTime, decimal?closePrice)
        {
            Position p = new Position()
            {
                PosID      = _posID++,
                AccountID  = accountID,
                InsID      = insID,
                PosType    = posType,
                OpenTime   = openTime,
                OpenPrice  = openPrice,
                Count      = count,
                CloseTime  = closeTime,
                ClosePrice = closePrice
            };

            _positions.Add(p);

            return(p);
        }
Exemplo n.º 5
0
        /// <summary>
        /// Create new position
        /// </summary>
        /// <param name="accountID">Account id</param>
        /// <param name="insID">Instrum id</param>
        /// <param name="posType">Pos type (short or long)</param>
        /// <param name="openTime">Position open time</param>
        /// <param name="openPrice">Position open price</param>
        /// <param name="count">Instrum count (not lots)</param>
        /// <param name="closeTime">Close time or null</param>
        /// <param name="closePrice">Close price or null</param>
        /// <returns>New position</returns>
        public Position CreatePosition(int accountID, int insID, PosTypes posType, DateTime openTime, decimal openPrice, int count, DateTime?closeTime, decimal?closePrice)
        {
            Position pos = new Position()
            {
                PosID      = 0,
                AccountID  = accountID,
                InsID      = insID,
                PosType    = posType,
                OpenTime   = openTime,
                OpenPrice  = openPrice,
                Count      = count,
                CloseTime  = closeTime,
                ClosePrice = closePrice
            };

            using (var db = new DaContext(_options))
            {
                db.Position.Add(pos);
                db.SaveChanges();
            }

            return(pos);
        }
Exemplo n.º 6
0
 public Position NewPosition(int insID, int count, DateTime openTime, decimal openPrice, PosTypes posType)
 {
     return(new Position()
     {
         PosID = --_posID,
         AccountID = _accountID,
         InsID = insID,
         Count = count,
         OpenTime = openTime,
         OpenPrice = openPrice,
         PosType = posType,
         CloseTime = null,
         ClosePrice = null,
         IsChanged = false
     });
 }
Exemplo n.º 7
0
        private Position AddPosition(int insID, int count, DateTime openTime, decimal openPrice, PosTypes pt)
        {
            Position pos = NewPosition(insID, count, openTime, openPrice, pt);

            _positions.Add(pos);
            return(pos);
        }