public void Close(ExternalTrade externalTrade) { CloseDate = externalTrade.Time; ClosePrice = externalTrade.Price; int volumeSign = Type == PositionType.Long ? 1 : -1; PnL = (ClosePrice - Price) * Volume * volumeSign; CloseTradeId = externalTrade.Id; }
public static Position Create(InternalOrder internalOrder, ExternalTrade externalTrade) { PositionType positionType = externalTrade.Type == TradeType.Sell ? PositionType.Long : PositionType.Short; return(new Position { Id = Guid.NewGuid().ToString("D"), AssetPairId = internalOrder.AssetPairId, Type = positionType, Date = DateTime.UtcNow, Price = externalTrade.Price, Volume = externalTrade.Volume, CloseDate = DateTime.UtcNow, ClosePrice = externalTrade.Price, PnL = decimal.Zero, TradeAssetPairId = internalOrder.AssetPairId, TradeAvgPrice = externalTrade.Price, CloseTradeId = externalTrade.Id, IsInternal = true }); }