public void UnsubscribeEvents(O2GTableManager manager) { O2GOrdersTable ordersTable = (O2GOrdersTable)manager.getTable(O2GTableType.Orders); O2GTradesTable tradesTable = (O2GTradesTable)manager.getTable(O2GTableType.Trades); O2GMessagesTable messagesTable = (O2GMessagesTable)manager.getTable(O2GTableType.Messages); O2GClosedTradesTable closedTradesTable = (O2GClosedTradesTable)manager.getTable(O2GTableType.ClosedTrades); ordersTable.unsubscribeUpdate(O2GTableUpdateType.Insert, this); ordersTable.subscribeUpdate(O2GTableUpdateType.Update, this); ordersTable.unsubscribeUpdate(O2GTableUpdateType.Delete, this); tradesTable.unsubscribeUpdate(O2GTableUpdateType.Insert, this); tradesTable.unsubscribeUpdate(O2GTableUpdateType.Update, this); closedTradesTable.unsubscribeUpdate(O2GTableUpdateType.Insert, this); messagesTable.unsubscribeUpdate(O2GTableUpdateType.Insert, this); }
/// <summary> /// Find valid account /// </summary> /// <param name="tableManager"></param> /// <returns>account</returns> private static O2GAccountRow GetAccount(O2GTableManager tableManager, string sAccountID) { bool bHasAccount = false; O2GAccountRow account = null; O2GAccountsTable accountsTable = (O2GAccountsTable)tableManager.getTable(O2GTableType.Accounts); for (int i = 0; i < accountsTable.Count; i++) { account = accountsTable.getRow(i); string sAccountKind = account.AccountKind; if (sAccountKind.Equals("32") || sAccountKind.Equals("36")) { if (account.MarginCallFlag.Equals("N")) { if (string.IsNullOrEmpty(sAccountID) || sAccountID.Equals(account.AccountID)) { bHasAccount = true; break; } } } } if (!bHasAccount) { return null; } else { return account; } }
/// <summary> /// Find valid account /// </summary> /// <param name="tableManager"></param> /// <returns>account</returns> private static O2GAccountRow GetAccount(O2GTableManager tableManager, string sAccountID) { bool bHasAccount = false; O2GAccountRow account = null; O2GAccountsTable accountsTable = (O2GAccountsTable)tableManager.getTable(O2GTableType.Accounts); for (int i = 0; i < accountsTable.Count; i++) { account = accountsTable.getRow(i); string sAccountKind = account.AccountKind; if (sAccountKind.Equals("32") || sAccountKind.Equals("36")) { if (account.MarginCallFlag.Equals("N")) { if (string.IsNullOrEmpty(sAccountID) || sAccountID.Equals(account.AccountID)) { bHasAccount = true; break; } } } } if (!bHasAccount) { return(null); } else { return(account); } }
public Offers(O2GTableManager mTblMgr) { while (mTblMgr.getStatus() != O2GTableManagerStatus.TablesLoaded && mTblMgr.getStatus() != O2GTableManagerStatus.TablesLoadFailed) { Thread.Sleep(50); } O2GOffersTable table = (O2GOffersTable)mTblMgr.getTable(O2GTableType.Offers); OffersListener listener = new OffersListener(); O2GOfferTableRow row = null; table.subscribeUpdate(O2GTableUpdateType.Insert, listener); table.subscribeUpdate(O2GTableUpdateType.Update, listener); try { mTblMgr.lockUpdates(); for (int ii = 0; ii < table.Count; ii++) { row = table.getRow(ii); foreach (O2GTableColumn CurrentColumn in table.Columns) { if (CurrentColumn.ID == "Instrument") { CurrencyList.Add(row.getCell(1).ToString()); } } } } finally { mTblMgr.unlockUpdates(); } table.unsubscribeUpdate(O2GTableUpdateType.Insert, listener); table.unsubscribeUpdate(O2GTableUpdateType.Update, listener); }
public void subscibeForEvents() { // grab a table manager tableManager = mSession.getTableManager(); O2GTableManagerStatus managerStatus = tableManager.getStatus(); while (managerStatus == O2GTableManagerStatus.TablesLoading) { Thread.Sleep(50); managerStatus = tableManager.getStatus(); } logger.Info("tableManagerStatus: " + tableManager.getStatus().ToString()); if (managerStatus == O2GTableManagerStatus.TablesLoadFailed) //Have to handle this better at some point. { return; } if (tableManager != null) { offersTbl = (O2GOffersTable)tableManager.getTable(O2GTableType.Offers); O2GSessionDescriptorCollection descs = mSession.getTradingSessionDescriptors(); foreach (O2GSessionDescriptor desc in descs) { Console.WriteLine("'{0}' '{1}' '{2}' {3}", desc.Id, desc.Name, desc.Description, desc.RequiresPin); logger.Debug("{0}, {1}, {2}, {3}", desc.Id, desc.Name, desc.Description, desc.RequiresPin); serverName = desc.Name; } O2GResponse resp = mSession.getLoginRules().getSystemPropertiesResponse(); } }
/// <summary> /// Get initial Trades state /// </summary> /// <param name="tableManager"></param> /// <returns>TradesTable</returns> private static O2GTradesTable GetTradesTable(O2GTableManager tableManager) { O2GTradesTable tradesTable = null; tradesTable = (O2GTradesTable)tableManager.getTable(O2GTableType.Trades); return(tradesTable); }
// Print orders table private static void PrintOrders(O2GTableManager tableManager) { tableManager.lockUpdates(); try { O2GOrdersTable ordersTable = (O2GOrdersTable)tableManager.getTable(O2GTableType.Orders); for (int ii = 0; ii < ordersTable.Count; ii++) { O2GOrderTableRow orderRow = ordersTable.getRow(ii); Console.WriteLine("Order: " + orderRow.OrderID); Console.WriteLine("AccountID = " + orderRow.AccountID); Console.WriteLine("OfferID = " + orderRow.OfferID); Console.WriteLine("Type = " + orderRow.Type); Console.WriteLine("Rate = " + orderRow.Rate); Console.WriteLine("Buy/Sell = " + orderRow.BuySell); Console.WriteLine("Status = " + orderRow.Status); Console.WriteLine("Limit = " + orderRow.Limit); Console.WriteLine("Stop = " + orderRow.Stop); } } finally { tableManager.unlockUpdates(); } }
/// <summary> /// Find valid offer by instrument name /// </summary> /// <param name="tableManager"></param> /// <param name="sInstrument"></param> /// <returns>offer</returns> private static O2GOfferRow GetOffer(O2GTableManager tableManager, string sInstrument) { bool bHasOffer = false; O2GOfferRow offer = null; O2GOffersTable offersTable = (O2GOffersTable)tableManager.getTable(O2GTableType.Offers); for (int i = 0; i < offersTable.Count; i++) { offer = offersTable.getRow(i); if (offer.Instrument.Equals(sInstrument)) { if (offer.SubscriptionStatus.Equals("T")) { bHasOffer = true; break; } } } if (!bHasOffer) { return(null); } else { return(offer); } }
/// <summary> /// Get orders data for closing all positions /// </summary> /// <param name="tableManager"></param> /// <param name="sAccountID"></param> /// <returns></returns> private static Dictionary <string, CloseOrdersData> GetCloseOrdersData(O2GTableManager tableManager, string sAccountID) { Dictionary <string, CloseOrdersData> closeOrdersData = new Dictionary <string, CloseOrdersData>(); O2GTradeRow trade = null; O2GTradesTable tradesTable = (O2GTradesTable)tableManager.getTable(O2GTableType.Trades); for (int i = 0; i < tradesTable.Count; i++) { trade = tradesTable.getRow(i); string sOfferID = trade.OfferID; string sBuySell = trade.BuySell; // Set opposite side OrderSide side = (sBuySell.Equals(Constants.Buy) ? OrderSide.Sell : OrderSide.Buy); if (closeOrdersData.ContainsKey(sOfferID)) { OrderSide currentSide = closeOrdersData[sOfferID].Side; if (currentSide != OrderSide.Both && currentSide != side) { closeOrdersData[sOfferID].Side = OrderSide.Both; } } else { CloseOrdersData data = new CloseOrdersData(sAccountID, side); closeOrdersData.Add(sOfferID, data); } } return(closeOrdersData); }
public void UnsubscribeEvents(O2GTableManager manager) { O2GOrdersTable ordersTable = (O2GOrdersTable)manager.getTable(O2GTableType.Orders); ordersTable.unsubscribeUpdate(O2GTableUpdateType.Insert, this); ordersTable.unsubscribeUpdate(O2GTableUpdateType.Delete, this); }
public void UnsubscribeEvents(O2GTableManager manager) { O2GOrdersTable ordersTable = (O2GOrdersTable)manager.getTable(O2GTableType.Orders); ordersTable.subscribeUpdate(O2GTableUpdateType.Insert, this); ordersTable.subscribeUpdate(O2GTableUpdateType.Update, this); ordersTable.subscribeUpdate(O2GTableUpdateType.Delete, this); }
public void unsubcribeEvents() { if (tableManager != null) { offersTbl = (O2GOffersTable)tableManager.getTable(O2GTableType.Offers); tableManager = null; } }
// Print orders table using IO2GEachRowListener public static void PrintOrders(O2GTableManager tableManager, string sAccountID) { O2GOrdersTable ordersTable = (O2GOrdersTable)tableManager.getTable(O2GTableType.Orders); if (ordersTable.Count == 0) { Console.WriteLine("Table is empty!"); } else { ordersTable.forEachRow(new EachRowListener(sAccountID)); } }
// Find orders by request ID and print it private static void FindOrders(O2GTableManager tableManager, string sRequestID) { O2GOrdersTable ordersTable = (O2GOrdersTable)tableManager.getTable(O2GTableType.Orders); O2GTableIterator ordersIterator = new O2GTableIterator(); O2GOrderTableRow orderRow = null; while (ordersTable.getNextRowByColumnValue("RequestID", sRequestID, ordersIterator, out orderRow)) { Console.WriteLine("Order:{0}, OfferID={1}, Type={2}, Rate={3:N4}, BuySell={4}, Status={5}, Limit={6:N4}, Stop={7:N4}, RequestID={8}", orderRow.OrderID, orderRow.OfferID, orderRow.Type, orderRow.Rate, orderRow.BuySell, orderRow.Status, orderRow.Limit, orderRow.Stop, orderRow.RequestID); } }
private SessionStatusMessage doLogin(string[] loginData) { //session.subscribeSessionStatus(sessionStatusResponseListener); session.useTableManager(O2GTableManagerMode.Yes, null); session.login(loginData[0], loginData[1], loginData[2], loginData[3]); sessionStatusResponseListener.WaitEvents(); if (sessionStatusResponseListener.Error) { return(new SessionStatusMessage(SessionStatusEnum.ERROR1, "FXCM: " + sessionStatusResponseListener.ErrorMessage)); } if (sessionStatusResponseListener.SessionStatus == O2GSessionStatusCode.SessionLost) { return(new SessionStatusMessage(SessionStatusEnum.ERROR2, "FXCM: Session Lost")); } if (sessionStatusResponseListener.SessionStatus == O2GSessionStatusCode.Unknown) { return(new SessionStatusMessage(SessionStatusEnum.ERROR3, "FXCM: Uknown Error")); } tableMgr = session.getTableManager(); Task.Delay(1000); if (tableMgr == null) { return(new SessionStatusMessage(SessionStatusEnum.ERROR4, "FXCM: TableManage is null")); } O2GTableManagerStatus managerStatus = tableMgr.getStatus(); int i = 0; while (managerStatus == O2GTableManagerStatus.TablesLoading) { Thread.Sleep(200); managerStatus = tableMgr.getStatus(); if (i++ > 9) { break; } } if (managerStatus == O2GTableManagerStatus.TablesLoadFailed) { return(new SessionStatusMessage(SessionStatusEnum.ERROR3, "FXCM: TablesLoadFailed")); } offersTable = (O2GOffersTable)tableMgr.getTable(O2GTableType.Offers); offersTable.RowChanged += offersTableUpdated; return(new SessionStatusMessage(SessionStatusEnum.Connected, "FXCM: Connected")); }
// Find orders by type and buysell and print it private static void FindOrdersByTypeAndDirection(O2GTableManager tableManager, String sOrderType, string sBuySell) { O2GOrdersTable ordersTable = (O2GOrdersTable)tableManager.getTable(O2GTableType.Orders); O2GTableIterator ordersIterator = new O2GTableIterator(); O2GOrderTableRow orderRow = null; while (ordersTable.getNextRowByMultiColumnValues(new String[] { "Type", "BuySell" }, new Object[] { sOrderType, sBuySell }, ordersIterator, out orderRow)) { Console.WriteLine("Order:{0}, OfferID={1}, Type={2}, Rate={3:N4}, BuySell={4}, Status={5}, Limit={6:N4}, Stop={7:N4}, RequestID={8}", orderRow.OrderID, orderRow.OfferID, orderRow.Type, orderRow.Rate, orderRow.BuySell, orderRow.Status, orderRow.Limit, orderRow.Stop, orderRow.RequestID); } }
/// <summary> /// Print accounts and get the first account /// </summary> /// <param name="session"></param> /// <returns></returns> private static O2GAccountRow GetAccount(O2GTableManager tableManager) { O2GAccountsTable accountsTable = (O2GAccountsTable)tableManager.getTable(O2GTableType.Accounts); O2GTableIterator accountsIterator = new O2GTableIterator(); O2GAccountTableRow accountRow = null; accountsTable.getNextRow(accountsIterator, out accountRow); while (accountRow != null) { Console.WriteLine("AccountID: {0}, Balance: {1:N2}, Used margin: {2:N2}", accountRow.AccountID, accountRow.Balance, accountRow.UsedMargin); accountsTable.getNextRow(accountsIterator, out accountRow); } return accountsTable.getRow(0); }
// Print orders table using IO2GEachRowListener public static void PrintTrades(O2GTableManager tableManager, string sAccountID) { O2GTradesTable tradesTable = (O2GTradesTable)tableManager.getTable(O2GTableType.Trades); if (tradesTable.Count == 0) { Console.WriteLine("Table is empty!"); } else { tradesTable.forEachRow(new EachRowListener(sAccountID)); } }
/// <summary> /// Print accounts and get the first account /// </summary> /// <param name="session"></param> /// <returns></returns> private static O2GAccountRow GetAccount(O2GTableManager tableManager) { O2GAccountsTable accountsTable = (O2GAccountsTable)tableManager.getTable(O2GTableType.Accounts); O2GTableIterator accountsIterator = new O2GTableIterator(); O2GAccountTableRow accountRow = null; accountsTable.getNextRow(accountsIterator, out accountRow); while (accountRow != null) { Console.WriteLine("AccountID: {0}, Balance: {1}", accountRow.AccountID, accountRow.Balance); accountsTable.getNextRow(accountsIterator, out accountRow); } return(accountsTable.getRow(0)); }
// Find conditional orders and print it private static void FindConditionalOrders(O2GTableManager tableManager) { O2GOrdersTable ordersTable = (O2GOrdersTable)tableManager.getTable(O2GTableType.Orders); O2GTableIterator ordersIterator = new O2GTableIterator(); O2GOrderTableRow orderRow = null; Object[] orderTypes = new Object[] { Constants.Orders.LimitEntry, Constants.Orders.StopEntry, Constants.Orders.Limit, Constants.Orders.Stop, Constants.Orders.Entry, "LTE", "STE" }; while (ordersTable.getNextRowByColumnValues("Type", orderTypes, ordersIterator, out orderRow)) { Console.WriteLine("Order:{0}, OfferID={1}, Type={2}, Rate={3:N4}, BuySell={4}, Status={5}, Limit={6:N4}, Stop={7:N4}, RequestID={8}", orderRow.OrderID, orderRow.OfferID, orderRow.Type, orderRow.Rate, orderRow.BuySell, orderRow.Status, orderRow.Limit, orderRow.Stop, orderRow.RequestID); } }
/// <summary> /// Find order by id and print it /// </summary> /// <param name="session"></param> /// <param name="sAccountID"></param> /// <param name="sOrderID"></param> /// <param name="responseListener"></param> private static void FindOrder(O2GTableManager tableManager, string sAccountID, string sOrderID) { O2GOrdersTable ordersTable = (O2GOrdersTable)tableManager.getTable(O2GTableType.Orders); O2GOrderTableRow orderRow = null; ordersTable.findRow(sOrderID, out orderRow); if (orderRow != null && sAccountID.Equals(orderRow.AccountID)) { Console.WriteLine("OrderID={0}; AccountID={1); Type={2}; Status={3}; OfferID={4}; Amount={5}; BuySell={6}; Rate={7}", orderRow.OrderID, orderRow.AccountID, orderRow.Type, orderRow.Status, orderRow.OfferID, orderRow.Amount, orderRow.BuySell, orderRow.Rate); } else { Console.WriteLine("Order '{0}' is not found", sOrderID); } }
/// <summary> /// Find order by id and print it /// </summary> /// <param name="session"></param> /// <param name="sAccountID"></param> /// <param name="sOrderID"></param> /// <param name="responseListener"></param> private static void FindOrder(O2GTableManager tableManager, string sAccountID, string sOrderID) { O2GOrdersTable ordersTable = (O2GOrdersTable)tableManager.getTable(O2GTableType.Orders); O2GOrderTableRow orderRow = null; ordersTable.findRow(sOrderID, out orderRow); if (orderRow != null && sAccountID.Equals(orderRow.AccountID)) { Console.WriteLine("OrderID={0}; AccountID={1}; Type={2}; Status={3}; OfferID={4}; Amount={5}; BuySell={6}; Rate={7}", orderRow.OrderID, orderRow.AccountID, orderRow.Type, orderRow.Status, orderRow.OfferID, orderRow.Amount, orderRow.BuySell, orderRow.Rate); } else { Console.WriteLine("Order '{0}' is not found", sOrderID); } }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ConnectBt_Click(object sender, EventArgs e) { //mSession = O2GTransport.createSession(); statusListener = new MySessionStatusListener(mSession, "tempDb", "pin"); mSession.subscribeSessionStatus(statusListener); mSession.useTableManager(O2GTableManagerMode.Yes, null); mSession.login("70882056", "2945", "http://www.fxcorporate.com/Hosts.jsp", "Demo"); while (statusListener.Status != O2GSessionStatusCode.Connected && statusListener.Status != O2GSessionStatusCode.Disconnected) { Thread.Sleep(50); } if (statusListener.Status == O2GSessionStatusCode.Connected) { O2GTableManager manager = mSession.getTableManager(); while (manager.getStatus() == O2GTableManagerStatus.TablesLoading) { Thread.Sleep(50); } O2GOffersTable offers = null; if (manager.getStatus() == O2GTableManagerStatus.TablesLoaded) { offers = (O2GOffersTable)manager.getTable(O2GTableType.Offers); printOffers(offers); offers.RowChanged += new EventHandler <RowEventArgs>(offers_RowChanged); } else { statusLabel.Text = "Tables loading failed!"; } if (offers != null) { offers.RowChanged -= new EventHandler <RowEventArgs>(offers_RowChanged); } //mSession.logout(); } //mSession.unsubscribeSessionStatus(statusListener); //mSession.Dispose(); statusLabel.Text = "Connected"; statusLabel.BackColor = Color.GreenYellow; }
public Offers(MainForm CurrentForm, O2GTableManager mTblMgr) { CreateTable(); CurrentForm.PopulateTable(OffersTable); while (mTblMgr.getStatus() != O2GTableManagerStatus.TablesLoaded && mTblMgr.getStatus() != O2GTableManagerStatus.TablesLoadFailed) { Thread.Sleep(50); } O2GOffersTable table = (O2GOffersTable)mTblMgr.getTable(O2GTableType.Offers); OffersListener listener = new OffersListener(); O2GOfferTableRow row = null; for (int i = 0; i < table.Count; i++) { DataRow CurrentRow = OffersTable.NewRow(); OffersTable.Rows.Add(CurrentRow); } CurrentForm.GetTableData(table, listener, row, mTblMgr); }
/// <summary> /// Get orders data for closing all positions /// </summary> /// <param name="session"></param> /// <param name="sAccountID"></param> /// <param name="responseListener"></param> /// <returns></returns> private static bool GetCloseOrdersData(O2GTableManager tableManager, string sAccountID, string sOfferID, out CloseOrdersData closeOrdersData) { bool bIsTradesFound = false; closeOrdersData = new CloseOrdersData(); O2GTradesTable tradesTable = (O2GTradesTable)tableManager.getTable(O2GTableType.Trades); for (int i = 0; i < tradesTable.Count; i++) { O2GTradeRow trade = tradesTable.getRow(i); if (!trade.OfferID.Equals(sOfferID)) { continue; } bIsTradesFound = true; string sBuySell = trade.BuySell; // Set opposite side OrderSide side = (sBuySell.Equals(Constants.Buy) ? OrderSide.Sell : OrderSide.Buy); if (closeOrdersData.OfferID.Equals(sOfferID)) { OrderSide currentSide = closeOrdersData.Side; if (currentSide != OrderSide.Both && currentSide != side) { closeOrdersData.Side = OrderSide.Both; } } else { closeOrdersData.OfferID = sOfferID; closeOrdersData.AccountID = sAccountID; closeOrdersData.Side = side; } } return(bIsTradesFound); }
/// <summary> /// Find the first opened position by AccountID and OfferID /// </summary> /// <param name="session"></param> /// <param name="sAccountID"></param> /// <param name="sOfferID"></param> /// <param name="responseListener"></param> /// <returns></returns> private static O2GTradeRow GetTrade(O2GTableManager tableManager, string sAccountID, string sOfferID) { bool bHasTrade = false; O2GTradeRow trade = null; O2GTradesTable tradesTable = (O2GTradesTable)tableManager.getTable(O2GTableType.Trades); for (int i = 0; i < tradesTable.Count; i++) { trade = tradesTable.getRow(i); if (trade.AccountID.Equals(sAccountID) && trade.OfferID.Equals(sOfferID)) { bHasTrade = true; break; } } if (!bHasTrade) { return(null); } else { return(trade); } }
/// <summary> /// Find valid offer by instrument name /// </summary> /// <param name="tableManager"></param> /// <param name="sInstrument"></param> /// <returns>offer</returns> private static O2GOfferRow GetOffer(O2GTableManager tableManager, string sInstrument) { bool bHasOffer = false; O2GOfferRow offer = null; O2GOffersTable offersTable = (O2GOffersTable)tableManager.getTable(O2GTableType.Offers); for (int i = 0; i < offersTable.Count; i++) { offer = offersTable.getRow(i); if (offer.Instrument.Equals(sInstrument)) { if (offer.SubscriptionStatus.Equals("T")) { bHasOffer = true; break; } } } if (!bHasOffer) { return null; } else { return offer; } }
public void UnsubscribeEvents(O2GTableManager manager) { var table = (O2GOffersTable)manager.getTable(O2GTableType.Offers); table.unsubscribeUpdate(O2GTableUpdateType.Update, this); }
/// <summary> /// Find the first opened position by AccountID and OfferID /// </summary> /// <param name="session"></param> /// <param name="sAccountID"></param> /// <param name="sOfferID"></param> /// <param name="responseListener"></param> /// <returns></returns> private static O2GTradeRow GetTrade(O2GTableManager tableManager, string sAccountID, string sOfferID) { bool bHasTrade = false; O2GTradeRow trade = null; O2GTradesTable tradesTable = (O2GTradesTable)tableManager.getTable(O2GTableType.Trades); for (int i = 0; i < tradesTable.Count; i++) { trade = tradesTable.getRow(i); if (trade.AccountID.Equals(sAccountID) && trade.OfferID.Equals(sOfferID)) { bHasTrade = true; break; } } if (!bHasTrade) { return null; } else { return trade; } }
/// <summary> /// Get orders data for closing all positions /// </summary> /// <param name="session"></param> /// <param name="sAccountID"></param> /// <param name="responseListener"></param> /// <returns></returns> private static bool GetCloseOrdersData(O2GTableManager tableManager, string sAccountID, string sOfferID, out CloseOrdersData closeOrdersData) { bool bIsTradesFound = false; closeOrdersData = new CloseOrdersData(); O2GTradesTable tradesTable = (O2GTradesTable)tableManager.getTable(O2GTableType.Trades); for (int i = 0; i < tradesTable.Count; i++) { O2GTradeRow trade = tradesTable.getRow(i); if (!trade.OfferID.Equals(sOfferID)) { continue; } bIsTradesFound = true; string sBuySell = trade.BuySell; // Set opposite side OrderSide side = (sBuySell.Equals(Constants.Buy) ? OrderSide.Sell : OrderSide.Buy); if (closeOrdersData.OfferID.Equals(sOfferID)) { OrderSide currentSide = closeOrdersData.Side; if (currentSide != OrderSide.Both && currentSide != side) { closeOrdersData.Side = OrderSide.Both; } } else { closeOrdersData.OfferID = sOfferID; closeOrdersData.AccountID = sAccountID; closeOrdersData.Side = side; } } return bIsTradesFound; }
public ForexConnect(string userid, string password, Form1 form, string symbol) { ForexConnect.sInstrument = symbol; Console.WriteLine(ForexConnect.sInstrument); fm = form; string sUserID = userid; string sPassword = password; string sURL = "http://www.fxcorporate.com/Hosts.jsp"; string sConnection = "Demo"; try { mSession = O2GTransport.createSession(); SessionStatusListener statusListener = new SessionStatusListener(mSession); mSession.subscribeSessionStatus(statusListener); mSession.useTableManager(O2GTableManagerMode.Yes, null); mSession.login(sUserID, sPassword, sURL, sConnection); while (statusListener.Status != O2GSessionStatusCode.Connected && statusListener.Status != O2GSessionStatusCode.Disconnected) { Thread.Sleep(50); } if (statusListener.Status == O2GSessionStatusCode.Connected) { O2GTableManager manager = mSession.getTableManager(); while (manager.getStatus() == O2GTableManagerStatus.TablesLoading) { Thread.Sleep(50); } O2GOffersTable offers = null; if (manager.getStatus() == O2GTableManagerStatus.TablesLoaded) { offers = (O2GOffersTable)manager.getTable(O2GTableType.Offers); printOffers(offers); offers.RowChanged += new EventHandler <RowEventArgs>(offers_RowChanged); } else { Console.WriteLine("Tables loading failed!"); } /* * Console.WriteLine("Press enter to stop!"); * Console.ReadLine(); * * if (offers != null) * { * offers.RowChanged -= new EventHandler<RowEventArgs>(offers_RowChanged); * } * * mSession.logout(); */ } // mSession.unsubscribeSessionStatus(statusListener); // mSession.Dispose(); } catch (Exception e) { Console.WriteLine("Exception: {0}", e.ToString()); } }
private void UnsubscribeEvents(O2GTableManager manager) { O2GOffersTable offersTable = (O2GOffersTable)manager.getTable(O2GTableType.Offers); offersTable.unsubscribeUpdate(O2GTableUpdateType.Update, this); }
static void Main(string[] args) { O2GSession session = null; try { LoginParams loginParams = new LoginParams(ConfigurationManager.AppSettings); SampleParams sampleParams = new SampleParams(ConfigurationManager.AppSettings); PrintSampleParams("GetOffers", 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); if (statusListener.WaitEvents() && statusListener.Connected) { TableListener tableListener = new TableListener(); 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"); } tableListener.SetInstrument(sampleParams.Instrument); tableListener.SubscribeEvents(tableManager); O2GOffersTable offers = null; offers = (O2GOffersTable)tableManager.getTable(O2GTableType.Offers); tableListener.PrintOffers(offers, null); // Do nothing 10 seconds, let offers print Thread.Sleep(10000); Console.WriteLine("Done!"); tableListener.UnsubscribeEvents(tableManager); statusListener.Reset(); session.logout(); statusListener.WaitEvents(); } session.unsubscribeSessionStatus(statusListener); } catch (Exception e) { Console.WriteLine("Exception: {0}", e.ToString()); } finally { if (session != null) { session.Dispose(); } } }
private void DoWork() { O2GSession session = null; O2GTableManager tableManager = null; StatusListener statusListener = null; TableListener tableListener = null; bool canUnsubscribeSessionStatus = false; try { session = O2GTransport.createSession(); session.useTableManager(O2GTableManagerMode.Yes, null); var sessionId = Guid.NewGuid().ToString("N"); statusListener = new StatusListener(session, sessionId); statusListener.OnStatus += (s, e) => { var status = e.Item.ToStatus(); OnStatus?.Invoke(this, new GenericArgs <Status>(status)); if (status == Status.Disconnected) { OnDisconnected?.Invoke(this, EventArgs.Empty); } }; session.subscribeSessionStatus(statusListener); session.login(userName, password, URL, connection.ToString()); if (statusListener.WaitEvents() && statusListener.Connected) { tableListener = new TableListener(testingMode); tableListener.OnOffer += (s, e) => OnOffer?.Invoke(this, new GenericArgs <Offer>(e.Item)); // improve this plus get rid of response listener tableListener.OnOfferIds += (s, e) => { //var request = GetSetSubscriptionStatusRequest(session, e.Item); //if (request == null) // throw new Exception("Cannot create request"); //var responseListener = new ResponseListener(); //session.subscribeResponse(responseListener); //responseListener.SetRequestID(request.RequestID); //session.sendRequest(request); //if (!responseListener.WaitEvents()) // throw new Exception("Response waiting timeout expired"); }; tableManager = session.getTableManager(); var managerStatus = tableManager.getStatus(); // max wait while (managerStatus == O2GTableManagerStatus.TablesLoading) { Thread.Sleep(50); managerStatus = tableManager.getStatus(); } if (managerStatus == O2GTableManagerStatus.TablesLoadFailed) { throw new Exception("TableManager refresh failed!"); } tableListener.SetSymbols( Enum.GetValues(typeof(Symbol)).Cast <Symbol>().ToList()); tableListener.SubscribeEvents(tableManager); O2GOffersTable offers = null; offers = (O2GOffersTable)tableManager.getTable(O2GTableType.Offers); tableListener.HandleOffers(offers); cancelEvent.WaitOne(); OnCancelled?.Invoke(this, EventArgs.Empty); } } catch (Exception error) { OnError?.Invoke(this, new GenericArgs <Exception>(error)); } finally { Shutdown(session, statusListener, tableListener, tableManager); if (canUnsubscribeSessionStatus) { session.unsubscribeSessionStatus(statusListener); } if (session != null) { session.Dispose(); } } }
public void UnsubscribeEvents(O2GTableManager manager) { O2GAccountsTable accountsTable = (O2GAccountsTable)manager.getTable(O2GTableType.Accounts); O2GOrdersTable ordersTable = (O2GOrdersTable)manager.getTable(O2GTableType.Orders); O2GTradesTable tradesTable = (O2GTradesTable)manager.getTable(O2GTableType.Trades); O2GMessagesTable messagesTable = (O2GMessagesTable)manager.getTable(O2GTableType.Messages); O2GClosedTradesTable closedTradesTable = (O2GClosedTradesTable)manager.getTable(O2GTableType.ClosedTrades); accountsTable.unsubscribeUpdate(O2GTableUpdateType.Update, this); ordersTable.unsubscribeUpdate(O2GTableUpdateType.Insert, this); ordersTable.unsubscribeUpdate(O2GTableUpdateType.Delete, this); tradesTable.unsubscribeUpdate(O2GTableUpdateType.Insert, this); tradesTable.unsubscribeUpdate(O2GTableUpdateType.Update, this); closedTradesTable.unsubscribeUpdate(O2GTableUpdateType.Insert, this); messagesTable.unsubscribeUpdate(O2GTableUpdateType.Insert, this); }
public void SubscribeEvents(O2GTableManager manager) { O2GOffersTable offersTable = (O2GOffersTable)manager.getTable(O2GTableType.Offers); offersTable.subscribeUpdate(O2GTableUpdateType.Update, this); }
/// <summary> /// Get initial Trades state /// </summary> /// <param name="tableManager"></param> /// <returns>TradesTable</returns> private static O2GTradesTable GetTradesTable(O2GTableManager tableManager) { O2GTradesTable tradesTable = null; tradesTable = (O2GTradesTable)tableManager.getTable(O2GTableType.Trades); return tradesTable; }