예제 #1
0
 protected override void OnConnectionStatusUpdate(Cbi.ConnectionStatusEventArgs connectionStatusUpdate)
 {
     if (connectionStatusUpdate.Status == Cbi.ConnectionStatus.Connected && connectionStatusUpdate.PreviousStatus == Cbi.ConnectionStatus.Connecting)
     {
         lock (connectionStatusUpdate.Connection.Accounts)
         {
             Cbi.Account account = connectionStatusUpdate.Connection.Accounts.FirstOrDefault(o => o.Name == AccountName);
             if (account != null)
             {
                 CurrentValue = 0;
                 foreach (Cbi.Execution execution in account.Executions)
                 {
                     if (execution.Instrument == Instrument)
                     {
                         CurrentValue += execution.Quantity;
                     }
                 }
             }
         }
     }
     else if (connectionStatusUpdate.Status == Cbi.ConnectionStatus.Disconnected && connectionStatusUpdate.PreviousStatus == Cbi.ConnectionStatus.Disconnecting)
     {
         lock (connectionStatusUpdate.Connection.Accounts)
             if (connectionStatusUpdate.Connection.Accounts.FirstOrDefault(o => o.Name == AccountName) != null)
             {
                 CurrentValue = 0;
             }
     }
 }
예제 #2
0
        protected override void OnAccountItemUpdate(Cbi.Account account, Cbi.AccountItem accountItem, double value)
        {
            MyAllOrders = account.Orders;
            //Print(string.Format("{0} {1} {2}", account.Name, accountItem, value));

            // output:
            // Sim101 BuyingPower 103962.5
            // Sim101 CashValue 103962.5
            // Sim101 GrossRealizedProfitLoss 3962.5
            // Sim101 RealizedProfitLoss 3962.5
        }
예제 #3
0
 protected override void OnConnectionStatusUpdate(Cbi.ConnectionStatusEventArgs connectionStatusUpdate)
 {
     if (connectionStatusUpdate.PriceStatus == Cbi.ConnectionStatus.Connected && connectionStatusUpdate.PreviousStatus == Cbi.ConnectionStatus.Connecting &&
         connectionStatusUpdate.Connection.Accounts.Count > 0 && account == null)
     {
         account = connectionStatusUpdate.Connection.Accounts[0];
     }
     else if (connectionStatusUpdate.Status == Cbi.ConnectionStatus.Disconnected && connectionStatusUpdate.PreviousStatus == Cbi.ConnectionStatus.Disconnecting &&
              account != null && account.Connection == connectionStatusUpdate.Connection)
     {
         account = null;
     }
 }
예제 #4
0
        /// <summary>
        /// Only updated on live/sim trading, not triggered at back-testing;
        /// The evernt posted tick by tick at sim/living trading with poistion hold;
        /// </summary>
        /// <param name="account"></param>
        /// <param name="accountItem"></param>
        /// <param name="value"></param>
        protected override void OnAccountItemUpdate(Cbi.Account account, Cbi.AccountItem accountItem, double value)
        {
            if (account == null || accountItem == null || IndicatorProxy == null)
            {
                return;
            }

            if (accountItem == AccountItem.UnrealizedProfitLoss && PrintOut > 2 && !IsInStrategyAnalyzer)
            {
                IndicatorProxy.PrintLog(true, IsLiveTrading(),                 //":OnAccountItemUpdate"
                                        CurrentBar + ":OnAccountItemUpdate"
                                        + ";Name=" + account.DisplayName
                                        + ";Item=" + accountItem.ToString()
                                        + ";value=" + value
                                        + ";DailyLossLmt=" + account.DailyLossLimit
                                        + ";Status=" + account.AccountStatus.ToString()
                                        );
            }
        }
예제 #5
0
        protected override void OnConnectionStatusUpdate(Cbi.ConnectionStatusEventArgs connectionStatusUpdate)
        {
            BackColor    = null;                                                        // reset color
            CurrentValue = 0;

            Cbi.Account  account  = null;
            Cbi.Position position = null;
            lock (Cbi.Account.All)
                account = Cbi.Account.All.FirstOrDefault(o => o.Name == AccountName);

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

            if (position != null)
            {
                CurrentValue = (position.MarketPosition == Cbi.MarketPosition.Long ? 1 : -1) * position.Quantity;
            }
        }
        protected override void OnConnectionStatusUpdate(Cbi.ConnectionStatusEventArgs connectionStatusUpdate)
        {
            if (connectionStatusUpdate.Status == Cbi.ConnectionStatus.Connected && connectionStatusUpdate.PreviousStatus == Cbi.ConnectionStatus.Connecting)
            {
                Cbi.Account account = null;
                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);
                }
            }
            else if (connectionStatusUpdate.Status == Cbi.ConnectionStatus.Disconnected && connectionStatusUpdate.PreviousStatus == Cbi.ConnectionStatus.Disconnecting)
            {
                if (position != null && position.Account.Connection == connectionStatusUpdate.Connection)
                {
                    CurrentValue = 0;
                    position     = null;
                }
            }
        }
예제 #7
0
 protected override void OnAccountItemUpdate(Cbi.Account account, Cbi.AccountItem accountItem, double value)
 {
 }