Ejemplo n.º 1
0
 public void UpdateCurPos(Cbi.Position position, double averagePrice,
                          int quantity, Cbi.MarketPosition marketPosition)
 {
     PosAvgPrice      = averagePrice;
     PosQuantity      = quantity;
     MktPosition      = marketPosition;
     PosUnrealizedPnL = position.GetUnrealizedProfitLoss(PerformanceUnit.Currency, InstStrategy.Close[0]);
 }
 protected override void OnPositionUpdate(Cbi.PositionEventArgs positionUpdate)
 {
     if (positionUpdate.Position.Account.Name == AccountName && positionUpdate.Position.Instrument == Instrument)
     {
         position     = (positionUpdate.Operation == Cbi.Operation.Remove ? null : positionUpdate.Position);
         CurrentValue = (position == null ? 0 : position.GetUnrealizedProfitLoss(Cbi.PerformanceUnit.Currency));
     }
 }
Ejemplo n.º 3
0
        protected override void OnConnectionStatusUpdate(Cbi.ConnectionStatusEventArgs connectionStatusUpdate)
        {
            if (connectionStatusUpdate.Status == Cbi.ConnectionStatus.Connected || connectionStatusUpdate.PreviousStatus == Cbi.ConnectionStatus.Connecting)
            {
                Cbi.Account account;
                lock (connectionStatusUpdate.Connection.Accounts)
                    account = connectionStatusUpdate.Connection.Accounts.FirstOrDefault(o => o.Name == AccountName);

                if (account != null)
                {
                    lock (account.Positions)
                        position = account.Positions.FirstOrDefault(o => o.Instrument.FullName == Instrument.FullName);

                    accountDenomination = account.Denomination;
                    executions.Clear();
                    foreach (Cbi.Execution execution in account.Executions)
                    {
                        if (execution.Instrument == Instrument)
                        {
                            executions.Add(execution);
                        }
                    }
                    realizedPL = Cbi.SystemPerformance.Calculate(executions).AllTrades.TradesPerformance.Currency.CumProfit;
                }
            }
            else if (connectionStatusUpdate.Status == Cbi.ConnectionStatus.Disconnected && connectionStatusUpdate.PreviousStatus == Cbi.ConnectionStatus.Disconnecting)
            {
                if (position != null && position.Account.Connection == connectionStatusUpdate.Connection)
                {
                    CurrentValue = 0;
                    position     = null;
                    realizedPL   = 0;
                }
            }

            CurrentValue = realizedPL + (position == null ? 0 : position.GetUnrealizedProfitLoss(Cbi.PerformanceUnit.Currency));
        }
Ejemplo n.º 4
0
        protected override void OnAccountItemUpdate(Cbi.AccountItemEventArgs accountItemUpdate)
        {
            if (AccountName != Account.SimulationAccountName || accountItemUpdate.Account.Name != AccountName || accountItemUpdate.AccountItem != AccountItem.UnrealizedProfitLoss)
            {
                return;
            }

            lock (accountItemUpdate.Account.Positions)
                position = accountItemUpdate.Account.Positions.FirstOrDefault(o => o.Instrument.FullName == Instrument.FullName);

            executions.Clear();
            foreach (Cbi.Execution execution in accountItemUpdate.Account.Executions)
            {
                if (execution.Instrument == Instrument)
                {
                    executions.Add(execution);
                }
            }
            realizedPL = Cbi.SystemPerformance.Calculate(executions).AllTrades.TradesPerformance.Currency.CumProfit;

            CurrentValue = realizedPL + (position == null ? 0 : position.GetUnrealizedProfitLoss(Cbi.PerformanceUnit.Currency));
        }
Ejemplo n.º 5
0
 protected override void OnMarketData(Data.MarketDataEventArgs marketDataUpdate)
 {
     CurrentValue = (position == null ? 0 : position.GetUnrealizedProfitLoss(Cbi.PerformanceUnit.Currency));
 }