private void AfterSuccessLogin(InitialAppDataResponseData data = null) { m_state = ConnectionStateEnum.Connected; m_NTconnection.ProcessEventArgs(new ConnectionStatusEventArgs(m_NTconnection, ErrorCode.NoError, "", ConnectionStatus.Connected, ConnectionStatus.Connected)); if (m_firstConnect) { m_firstConnect = false; m_NTconnection.AccountItems = new AccountItem[] { AccountItem.CashValue, AccountItem.RealizedProfitLoss }; m_NTconnection.Actions = new OrderAction[] { OrderAction.Buy, OrderAction.BuyToCover, OrderAction.Sell, OrderAction.SellShort }; m_NTconnection.Currencies = new NinjaTrader.Cbi.Currency[] { NinjaTrader.Cbi.Currency.Unknown, NinjaTrader.Cbi.Currency.UsDollar }; m_NTconnection.Exchanges = new Exchange[] { Exchange.Default }; m_NTconnection.Features = new Feature[] { Feature.SynchronousInstrumentLookup, Feature.MarketData, Feature.Order, Feature.OrderChange }; m_NTconnection.InstrumentTypes = new[] { InstrumentType.Currency, InstrumentType.Stock, InstrumentType.Index, InstrumentType.Future }; m_NTconnection.MarketDataTypes = new MarketDataType[] { MarketDataType.Ask, MarketDataType.Bid, MarketDataType.DailyHigh, MarketDataType.DailyLow, MarketDataType.Last, MarketDataType.Opening }; m_NTconnection.MarketPositions = new MarketPosition[] { MarketPosition.Flat, MarketPosition.Long, MarketPosition.Short }; m_NTconnection.OrderStates = new OrderState[] { OrderState.Cancelled, OrderState.Filled, OrderState.Working }; m_NTconnection.OrderTypes = new OrderType[] { OrderType.Limit, OrderType.Market }; m_NTconnection.TimeInForces = new TimeInForce[] { TimeInForce.Gtc }; } // After we reported about the login update the accounts if (m_userInfo.Accounts.Count > 0 && !string.IsNullOrEmpty(m_userInfo.Accounts[0].GUID)) { m_NTconnection.ProcessEventArgs(new AccountEventArgs(m_NTconnection, ErrorCode.NoError, "", m_userInfo.Accounts[0].GUID, Mode.Live)); UpdateAccountStatus(m_userInfo.Accounts[0]); } UpdatePositionsUpdate(data.Positions, data.Orders); UpdateMarketData(data.Quotes, data.Assets); }
private void GetInitialAppData(bool isLogin = true) { m_pxConnector.Send(TradingApp.GetInitialAppData(m_token, m_userInfo.GUID), res => { if (isLogin && res.Error != null && !string.IsNullOrEmpty(res.Error.Code)) { m_NTconnection.ProcessEventArgs(new ConnectionStatusEventArgs(m_NTconnection, ErrorCode.LoginFailed, res.Error.Message, ConnectionStatus.Disconnected, ConnectionStatus.Disconnected)); return; } InitialAppDataResponseData data = res.Data as InitialAppDataResponseData; if (isLogin && data == null) { m_NTconnection.ProcessEventArgs(new ConnectionStatusEventArgs(m_NTconnection, ErrorCode.LoginFailed, "Failed fetching InitialAppData", ConnectionStatus.Disconnected, ConnectionStatus.Disconnected)); return; } if (isLogin) { AfterSuccessLogin(data); } }); }