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
            });
        }