IPortfolio
Interface for managing a single portfolio's state.
Properties
public decimal AvailableMoney { get; }
value = iPortfolio.AvailableMoney
Available money (current - blocked).
public decimal BlockedMoney { get; }
value = iPortfolio.BlockedMoney
Blocked money for pending orders.
public decimal CurrentMoney { get; }
value = iPortfolio.CurrentMoney
Current money (begin + PnL).
public bool EnableStopOut { get; set; }
value = iPortfolio.EnableStopOut
iPortfolio.EnableStopOut = value
Enable automatic position liquidation on stop-out.
public decimal MarginCallLevel { get; set; }
value = iPortfolio.MarginCallLevel
iPortfolio.MarginCallLevel = value
Margin call level threshold. When margin level falls to this value, a warning is triggered.
public decimal StopOutLevel { get; set; }
value = iPortfolio.StopOutLevel
iPortfolio.StopOutLevel = value
Stop-out level threshold. When margin level falls to this value, positions are liquidated.
public decimal TotalPnL { get; }
value = iPortfolio.TotalPnL
Total PnL (realized - commission).
Methods
public decimal CalculateUnrealizedPnL(Func<SecurityId, decimal?> getCurrentPrice)
result = iPortfolio.CalculateUnrealizedPnL(getCurrentPrice)
Calculate unrealized PnL across all positions.
- getCurrentPrice
- Function to get current market price for a security. Returns null if price unavailable.
Returns: Total unrealized PnL.
public IEnumerable<PositionInfo> GetAllPositions()
result = iPortfolio.GetAllPositions()
Get all position info objects.
public PositionInfo GetPosition(SecurityId securityId)
result = iPortfolio.GetPosition(securityId)
Get position for security.
- securityId
- Security ID.
Returns: Position info or null.
public IEnumerable<ValueTuple<SecurityId, decimal, decimal>> GetPositions()
result = iPortfolio.GetPositions()
Get all positions.
Returns: Enumeration of positions.
public void ProcessOrderCancellation(SecurityId securityId, Sides side, decimal volume, decimal price)
iPortfolio.ProcessOrderCancellation(securityId, side, volume, price)
Process order cancellation (unblock funds).
- securityId
- Security ID.
- side
- Order side.
- volume
- Cancelled volume.
- price
- Price used for margin calculation.
public void ProcessOrderRegistration(SecurityId securityId, Sides side, decimal volume, decimal price)
iPortfolio.ProcessOrderRegistration(securityId, side, volume, price)
Process order registration (block funds).
- securityId
- Security ID.
- side
- Order side.
- volume
- Order volume.
- price
- Order price for margin calculation.
public TradeProcessingResult ProcessTrade(SecurityId securityId, Sides side, decimal price, decimal volume, decimal? commission)
result = iPortfolio.ProcessTrade(securityId, side, price, volume, commission)
Process a trade execution.
- securityId
- Security ID.
- side
- Trade side.
- price
- Trade price.
- volume
- Trade volume.
- commission
- Commission amount.
Returns: Trade processing result.
public void SetMoney(decimal money)
iPortfolio.SetMoney(money)
Set initial money.
- money
- Money amount.
public void SetPosition(SecurityId securityId, decimal volume, decimal avgPrice)
iPortfolio.SetPosition(securityId, volume, avgPrice)
Set initial position.
- securityId
- Security ID.
- volume
- Position volume.
- avgPrice
- Average entry price.