public Cell(int X, int Y) { this.X = X; this.Y = Y; TypePosition = PosTypes.None; TypeFunc = FuncTypes.None; }
/// <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; }
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); } }
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); }
/// <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); }
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 }); }
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); }