static private void PrintRollover(O2GRolloverProvider rolloverProvider, O2GAccountRow account, O2GOfferRow offer) { double rolloverBuy = rolloverProvider.getRolloverBuy(offer, account); double rolloverSell = rolloverProvider.getRolloverSell(offer, account); string rolloverInfo = string.Format("Rollover: {0} (buy), {1} (sell)", rolloverBuy, rolloverSell); Console.WriteLine(rolloverInfo); }
static void Main(string[] args) { O2GSession session = null; try { LoginParams loginParams = new LoginParams(ConfigurationManager.AppSettings); SampleParams sampleParams = new SampleParams(ConfigurationManager.AppSettings); PrintSampleParams("PrintRollover", loginParams, sampleParams); session = O2GTransport.createSession(); session.useTableManager(O2GTableManagerMode.Yes, null); SessionStatusListener statusListener = new SessionStatusListener(session, loginParams.SessionID, loginParams.Pin); session.subscribeSessionStatus(statusListener); statusListener.Reset(); session.login(loginParams.Login, loginParams.Password, loginParams.URL, loginParams.Connection); O2GRolloverProvider rolloverProvider = session.getRolloverProvider(); AutoResetEvent autoEvent = new AutoResetEvent(false); RolloverProviderListener rolloverProviderListener = new RolloverProviderListener(autoEvent); rolloverProvider.subscribe(rolloverProviderListener); if (statusListener.WaitEvents() && statusListener.Connected) { O2GTableManager tableManager = session.getTableManager(); O2GTableManagerStatus managerStatus = tableManager.getStatus(); while (managerStatus == O2GTableManagerStatus.TablesLoading) { Thread.Sleep(50); managerStatus = tableManager.getStatus(); } if (managerStatus == O2GTableManagerStatus.TablesLoadFailed) { throw new Exception("Cannot refresh all tables of table manager"); } O2GAccountRow account = GetAccount(tableManager, sampleParams.AccountID); if (account == null) { if (string.IsNullOrEmpty(sampleParams.AccountID)) { throw new Exception("No valid accounts"); } else { throw new Exception(string.Format("The account '{0}' is not valid", sampleParams.AccountID)); } } sampleParams.AccountID = account.AccountID; O2GOfferRow offer = GetOffer(tableManager, sampleParams.Instrument); if (offer == null) { throw new Exception(string.Format("The instrument '{0}' is not valid", sampleParams.Instrument)); } if (autoEvent.WaitOne(10000)) //wait 10s { PrintRollover(rolloverProvider, account, offer); } else { Console.WriteLine("Waiting time expired: Rollover is not available"); } rolloverProvider.unsubscribe(rolloverProviderListener); statusListener.Reset(); session.logout(); statusListener.WaitEvents(); } session.unsubscribeSessionStatus(statusListener); } catch (Exception e) { Console.WriteLine("Exception: {0}", e.ToString()); } finally { if (session != null) { session.Dispose(); } } }