private void ProcessPosition(OEC.API.Position position) { if (position == null) { throw new ArgumentNullException(nameof(position)); } SendOutMessage(this .CreatePositionChangeMessage( position.Account.Name, new SecurityId { SecurityCode = position.Contract.Symbol, BoardCode = position.Contract.Exchange.Name, } ) .TryAdd(PositionChangeTypes.BeginValue, (decimal)position.Prev.Volume) .TryAdd(PositionChangeTypes.CurrentValue, position.ContractSize.ToDecimal()) .TryAdd(PositionChangeTypes.CurrentPrice, position.CurrencyCostBasis.ToDecimal()) .TryAdd(PositionChangeTypes.RealizedPnL, position.CurrencyNetGain.ToDecimal()) .TryAdd(PositionChangeTypes.UnrealizedPnL, position.CurrencyOTE.ToDecimal()) .TryAdd(PositionChangeTypes.Commission, position.OpenCommissions.ToDecimal() + position.RealizedCommissions.ToDecimal()) .TryAdd(PositionChangeTypes.VariationMargin, position.InitialMargin.ToDecimal()) .TryAdd(PositionChangeTypes.AveragePrice, position.Net.Price.ToDecimal())); }
private void SessionOnDetailedPositionChanged(OEC.API.Account account, OEC.API.Position position) { ProcessPosition(position); }