Ejemplo n.º 1
0
        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();
            }
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        /// <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);
            }
        }
Ejemplo n.º 4
0
 public void unsubcribeEvents()
 {
     if (tableManager != null)
     {
         offersTbl    = (O2GOffersTable)tableManager.getTable(O2GTableType.Offers);
         tableManager = null;
     }
 }
Ejemplo n.º 5
0
 public void PrintOffers(O2GOffersTable offers, string sInstrument)
 {
     O2GOfferTableRow offerRow = null;
     O2GTableIterator iterator = new O2GTableIterator();
     while (offers.getNextRow(iterator, out offerRow))
     {
         PrintOffer(offerRow, sInstrument);
     }
 }
Ejemplo n.º 6
0
        public void PrintOffers(O2GOffersTable offers, string sInstrument)
        {
            O2GOfferTableRow offerRow = null;
            O2GTableIterator iterator = new O2GTableIterator();

            while (offers.getNextRow(iterator, out offerRow))
            {
                PrintOffer(offerRow, sInstrument);
            }
        }
Ejemplo n.º 7
0
        private IEnumerable <BaseRow> GetRows(O2GOffersTable table)
        {
            var rows = new List <OfferTableRow>();

            for (var i = 0; i < table.Count; i++)
            {
                rows.Add(this.GetRow <OfferTableRow, O2GOfferTableRow>(table.getRow(i)));
            }

            return(rows);
        }
Ejemplo n.º 8
0
        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"));
        }
Ejemplo n.º 9
0
        public static void printOffers(O2GOffersTable offers)
        {
            O2GOfferTableRow row      = null;
            O2GTableIterator iterator = new O2GTableIterator();

            while (offers.getNextRow(iterator, out row))
            {
                string sCurrentInstrument = row.Instrument;
                if ((sInstrument.Equals("")) || (sInstrument.Equals(sCurrentInstrument)))
                {
                    PrintOffer(row);
                }
            }
        }
Ejemplo n.º 10
0
        //This function will fill the rates table and put it in a list to be accessed later
        internal void fillRatesGrid()
        {
            //This is to make sure the current thread is calling this function, if not call it agian
            if (INSTANCE.InvokeRequired)
            {
                try
                {
                    SetNullCallback callback = new SetNullCallback(fillRatesGrid);
                    Invoke(callback, new object[] { });
                }
                catch (Exception ex)
                {
                    logger.Error(ex.Message);
                    throw ex;
                }
            }
            else
            {
                //Get list of symbols from the offers table
                O2GTableIterator iterator = new O2GTableIterator();
                O2GOfferTableRow offerRow = null;
                if (tss != null)
                {
                    Thread.Sleep(3000);
                    O2GOffersTable offersTbl = tss.OffersTable;
                    if (offersTbl == null)
                    {
                        //Log.logMessageToFile("Login", "OfferTable null");
                        logger.Debug("OfferTable is empty");
                        return;
                    }

                    temp     = new ConcurrentDictionary <int, string>();
                    templist = new ConcurrentBag <int>();
                    while (offersTbl.getNextRow(iterator, out offerRow))
                    {
                        if (offerRow.SubscriptionStatus.Equals("T"))
                        {
                            templist.Add(Convert.ToInt32(offerRow.OfferID));
                            logger.Debug("Offer {0}; Symbol {1}", offerRow.OfferID, offerRow.Instrument);
                            temp.TryAdd(Convert.ToInt32(offerRow.OfferID), offerRow.Instrument);
                        }
                    }
                }
            }
        }
Ejemplo n.º 11
0
        /// <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;
        }
Ejemplo n.º 12
0
        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);
        }
Ejemplo n.º 13
0
        public void HandleOffers(O2GOffersTable offers)
        {
            var offerIds = new Dictionary <string, string>();

            var rows = new List <O2GOfferTableRow>();

            O2GOfferTableRow row = null;

            var iterator = new O2GTableIterator();

            while (offers.getNextRow(iterator, out row))
            {
                rows.Add(row);

                offerIds.Add(row.Instrument, row.OfferID);
            }

            OnOfferIds?.Invoke(this,
                               new GenericArgs <Dictionary <string, string> >(offerIds));

            rows.ForEach(r => RaiseOnOfferIfValid(r));
        }
Ejemplo n.º 14
0
        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();
                }
            }
        }
Ejemplo n.º 15
0
        private void UnsubscribeEvents(O2GTableManager manager)
        {
            O2GOffersTable offersTable = (O2GOffersTable)manager.getTable(O2GTableType.Offers);

            offersTable.unsubscribeUpdate(O2GTableUpdateType.Update, this);
        }
Ejemplo n.º 16
0
        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();
                }
            }
        }
Ejemplo n.º 17
0
        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());
            }
        }
Ejemplo n.º 18
0
        // **AFTER LOG IN**
        // Background worker for table listeners
        private void priceBW_DoWork(object sender, DoWorkEventArgs e)
        {
            Console.WriteLine("Entered BW");

            mSession.useTableManager(O2GTableManagerMode.Yes, null);

            tableManager  = mSession.getTableManager();
            managerStatus = tableManager.getStatus();

            while (managerStatus == O2GTableManagerStatus.TablesLoading)
            {
                Thread.Sleep(50);
                managerStatus = tableManager.getStatus();
            }
            if (managerStatus == O2GTableManagerStatus.TablesLoadFailed)
            {
                this.Invoke(new MethodInvoker(delegate { actiBox.AppendText("WARNING: LOADING TABLES FAILED!" + Environment.NewLine); }));
                return;
            }
            // Check Accounts Table and Grab Information
            try
            {
                O2GLoginRules loginRules = mSession.getLoginRules();
                Console.WriteLine("Tables are loaded!");
                // Check if Accounts table is loaded automatically
                if (loginRules != null && loginRules.isTableLoadedByDefault(O2GTableType.Accounts))
                {
                    // If table is loaded, use getTableRefreshResponse method
                    O2GResponse accountsResponse             = loginRules.getTableRefreshResponse(O2GTableType.Accounts);
                    O2GResponseReaderFactory responseFactory = mSession.getResponseReaderFactory();
                    if (responseFactory != null)
                    {
                        O2GAccountsTableResponseReader accountsReader = responseFactory.createAccountsTableReader(accountsResponse);

                        for (int i = 0; i < accountsReader.Count; i++)
                        {
                            account      = accountsReader.getRow(i);
                            accountValue = account.Balance;
                            this.Invoke(new MethodInvoker(delegate { accountValueBox.Text = "$" + Convert.ToString(accountValue); }));
                            acctEq = account.Balance;
                            this.Invoke(new MethodInvoker(delegate { accountLevBox.Text = "$" + Convert.ToString(acctEq); }));
                            this.Invoke(new MethodInvoker(delegate { accountEquityBox.Text = "$" + Convert.ToString(acctEq); }));
                            sAccountID  = account.AccountID.ToString();
                            amountLimit = account.AmountLimit;
                            baseSize    = account.BaseUnitSize;
                            if (account.MaintenanceType == "Y")
                            {
                                this.Invoke(new MethodInvoker(delegate { hedgingBox.Text = "Yes"; }));
                                hedgingLong = true;
                                Settings.Default.hedgeLong = true;
                                hedgingShort = true;
                                Settings.Default.hedgeShort = true;
                                this.Invoke(new MethodInvoker(delegate { longCheckBox.Checked = true; }));
                                this.Invoke(new MethodInvoker(delegate { shortCheckBox.Checked = true; }));
                            }
                            else
                            {
                                this.Invoke(new MethodInvoker(delegate { hedgingBox.Text = "No"; }));
                                if (hedgingShort == false)
                                {
                                    hedgingLong = true;
                                    this.Invoke(new MethodInvoker(delegate { longCheckBox.Checked = true; }));
                                    this.Invoke(new MethodInvoker(delegate { shortCheckBox.Checked = false; }));
                                }
                                else
                                {
                                    hedgingShort = true;
                                    this.Invoke(new MethodInvoker(delegate { longCheckBox.Checked = false; }));
                                    this.Invoke(new MethodInvoker(delegate { shortCheckBox.Checked = true; }));
                                }
                            }
                        }
                    }
                }
                else
                {
                    // If table is not loaded, use createRefreshTableRequest method
                    O2GRequestFactory requestFactory = mSession.getRequestFactory();
                    if (requestFactory != null)
                    {
                        O2GRequest request = requestFactory.createRefreshTableRequest(O2GTableType.Accounts);
                        mSession.sendRequest(request);
                        Thread.Sleep(1000);
                    }
                }
            }
            catch (Exception acctErr)
            {
                Console.WriteLine(acctErr);
            }

            // Check if all 20 pairs needed are subscribed to on the account.
            try
            {
                O2GLoginRules loginRules = mSession.getLoginRules();

                if (loginRules != null && loginRules.isTableLoadedByDefault(O2GTableType.Offers))
                {
                    O2GResponse offersResponse = loginRules.getTableRefreshResponse(O2GTableType.Offers);
                    O2GResponseReaderFactory responseFactory = mSession.getResponseReaderFactory();
                    if (responseFactory != null)
                    {
                        O2GOffersTableResponseReader offersReader = responseFactory.createOffersTableReader(offersResponse);

                        for (int i = 0; i < offersReader.Count; i++)
                        {
                            O2GOfferRow offers = offersReader.getRow(i);

                            string checkOffer = offers.OfferID;
                        }
                    }
                }
            }
            catch (Exception mmrErr)
            {
                Console.WriteLine(mmrErr);
            }

            Console.WriteLine("Initializing needed table events.");
            // Initiate Table Getters
            O2GOffersTable offersTable = (O2GOffersTable)tableManager.getTable(O2GTableType.Offers);

            accountsTable = (O2GAccountsTable)tableManager.getTable(O2GTableType.Accounts);
            O2GSummaryTable      summaryTable = (O2GSummaryTable)tableManager.getTable(O2GTableType.Summary);
            O2GClosedTradesTable closedTable  = (O2GClosedTradesTable)tableManager.getTable(O2GTableType.ClosedTrades);

            // Trigger Table Events for Subscription
            offersTable.RowChanged   += new EventHandler <RowEventArgs>(offersTable_RowChanged);
            accountsTable.RowChanged += new EventHandler <RowEventArgs>(accountsTable_RowChanged);
            summaryTable.RowChanged  += new EventHandler <RowEventArgs>(summaryTable_RowChanged);
            closedTable.RowChanged   += new EventHandler <RowEventArgs>(closedTable_RowChanged);

            // Check pair subscription status, and add if needed.

            this.Invoke(new MethodInvoker(delegate { actiBox.AppendText("Connection Established.... Monitoring Pairs..." + Environment.NewLine); }));
            pastTimer.Start();
        }
Ejemplo n.º 19
0
        // **AFTER LOG IN**
        // Background worker for table listeners
        private void priceBW_DoWork(object sender, DoWorkEventArgs e)
        {
            Console.WriteLine("Entered BW");
            // Enable timers.
            pastTimer.Enabled = true;
            pastTimer.Start();
            oneSecTimer.Enabled = true;
            oneSecTimer.Start();

            mSession.useTableManager(O2GTableManagerMode.Yes, null);

            tableManager  = mSession.getTableManager();
            managerStatus = tableManager.getStatus();

            while (managerStatus == O2GTableManagerStatus.TablesLoading)
            {
                Console.WriteLine("Tables are loading...");
                Thread.Sleep(50);
                managerStatus = tableManager.getStatus();
            }
            if (managerStatus == O2GTableManagerStatus.TablesLoadFailed)
            {
                Console.WriteLine("Tabled loading failed");
                this.Invoke(new MethodInvoker(delegate { actiBox.AppendText("WARNING: LOADING TABLES FAILED!" + Environment.NewLine); }));
                return;
            }
            // Check Accounts Table and Grab Information
            try
            {
                O2GLoginRules loginRules = mSession.getLoginRules();
                Console.WriteLine("Tables are loaded!");
                // Check if Accounts table is loaded automatically
                if (loginRules != null && loginRules.isTableLoadedByDefault(O2GTableType.Accounts))
                {
                    Console.WriteLine("Login rules != null");
                    // If table is loaded, use getTableRefreshResponse method
                    O2GResponse accountsResponse             = loginRules.getTableRefreshResponse(O2GTableType.Accounts);
                    O2GResponseReaderFactory responseFactory = mSession.getResponseReaderFactory();
                    if (responseFactory != null)
                    {
                        Console.WriteLine("Grabbing account data....");
                        O2GAccountsTableResponseReader accountsReader = responseFactory.createAccountsTableReader(accountsResponse);

                        for (int i = 0; i < accountsReader.Count; i++)
                        {
                            account      = accountsReader.getRow(i);
                            accountValue = account.Balance;
                            this.Invoke(new MethodInvoker(delegate { accountValueBox.Text = "$" + Convert.ToString(accountValue); }));
                            availLev = account.Balance;
                            this.Invoke(new MethodInvoker(delegate { accountLevBox.Text = "$" + Convert.ToString(availLev); }));
                            sAccountID  = account.AccountID.ToString();
                            amountLimit = account.AmountLimit;
                            baseSize    = account.BaseUnitSize;
                        }
                    }
                }
                else
                {
                    // If table is not loaded, use createRefreshTableRequest method
                    O2GRequestFactory requestFactory = mSession.getRequestFactory();
                    if (requestFactory != null)
                    {
                        O2GRequest request = requestFactory.createRefreshTableRequest(O2GTableType.Accounts);
                        mSession.sendRequest(request);
                        Thread.Sleep(1000);
                    }
                }
            }
            catch (Exception acctErr)
            {
                Console.WriteLine(acctErr);
            }

            // Check if all 20 pairs needed are subscribed to on the account.
            try
            {
                O2GLoginRules loginRules = mSession.getLoginRules();

                if (loginRules != null && loginRules.isTableLoadedByDefault(O2GTableType.Offers))
                {
                    O2GResponse offersResponse = loginRules.getTableRefreshResponse(O2GTableType.Offers);
                    O2GResponseReaderFactory responseFactory = mSession.getResponseReaderFactory();
                    if (responseFactory != null)
                    {
                        Console.WriteLine("Triggering offers row");
                        O2GOffersTableResponseReader offersReader = responseFactory.createOffersTableReader(offersResponse);

                        for (int i = 0; i < offersReader.Count; i++)
                        {
                            O2GOfferRow offers = offersReader.getRow(i);

                            string checkOffer = offers.OfferID;
                        }
                    }
                }
                // Get MMR prices and set position initial cost
                Console.WriteLine("Grabbing MMR");
                this.Invoke(new MethodInvoker(delegate { actiBox.AppendText("Retrieving Pair MMR..." + Environment.NewLine); }));
                O2GTradingSettingsProvider settingResponse = loginRules.getTradingSettingsProvider();
                audcadMMR     = settingResponse.getMMR("AUD/CAD", account);
                audcadInitial = shortLot * audcadMMR;
                audjpyMMR     = settingResponse.getMMR("AUD/JPY", account);
                audjpyInitial = shortLot * audjpyMMR;
                audusdMMR     = settingResponse.getMMR("AUD/USD", account);
                audusdInitial = shortLot * audusdMMR;
                cadjpyMMR     = settingResponse.getMMR("CAD/JPY", account);
                cadjpyInitial = shortLot * cadjpyMMR;
                chfjpyMMR     = settingResponse.getMMR("CHF/JPY", account);
                chfjpyInitial = shortLot * chfjpyMMR;
                euraudMMR     = settingResponse.getMMR("EUR/AUD", account);
                euraudInitial = shortLot * euraudMMR;
                eurcadMMR     = settingResponse.getMMR("EUR/CAD", account);
                eurcadInitial = shortLot * eurcadMMR;
                eurchfMMR     = settingResponse.getMMR("EUR/CHF", account);
                eurchfInitial = shortLot * eurchfMMR;
                eurjpyMMR     = settingResponse.getMMR("EUR/JPY", account);
                eurjpyInitial = shortLot * eurjpyMMR;
                eurusdMMR     = settingResponse.getMMR("EUR/USD", account);
                eurusdInitial = shortLot * eurusdMMR;
                gbpaudMMR     = settingResponse.getMMR("GBP/AUD", account);
                gbpaudInitial = shortLot * gbpaudMMR;
                gbpchfMMR     = settingResponse.getMMR("GBP/CHF", account);
                gbpchfInitial = shortLot * gbpchfMMR;
                gbpjpyMMR     = settingResponse.getMMR("GBP/JPY", account);
                gbpjpyInitial = shortLot * gbpjpyMMR;
                gbpnzdMMR     = settingResponse.getMMR("GBP/NZD", account);
                gbpnzdInitial = shortLot * gbpnzdMMR;
                gbpusdMMR     = settingResponse.getMMR("GBP/USD", account);
                gbpusdInitial = shortLot * gbpusdMMR;
                nzdjpyMMR     = settingResponse.getMMR("NZD/JPY", account);
                nzdjpyInitial = shortLot * nzdjpyMMR;
                nzdusdMMR     = settingResponse.getMMR("NZD/USD", account);
                nzdusdInitial = shortLot * nzdusdMMR;
                usdcadMMR     = settingResponse.getMMR("USD/CAD", account);
                usdcadInitial = shortLot * usdcadMMR;
                usdchfMMR     = settingResponse.getMMR("USD/CHF", account);
                usdchfInitial = shortLot * usdchfMMR;
                usdjpyMMR     = settingResponse.getMMR("USD/JPY", account);
                usdjpyInitial = shortLot * usdjpyMMR;

                // Set highest move to 0
                highestMove = 0;

                // Set all move values to 0;
            }
            catch (Exception mmrErr)
            {
                Console.WriteLine(mmrErr);
            }

            Console.WriteLine("Initializing needed table events.");
            // Initiate Table Getters
            O2GOffersTable offersTable = (O2GOffersTable)tableManager.getTable(O2GTableType.Offers);

            accountsTable = (O2GAccountsTable)tableManager.getTable(O2GTableType.Accounts);
            O2GTradesTable tradesTable = (O2GTradesTable)tableManager.getTable(O2GTableType.Trades);

            //O2GOrdersTable ordersTable = (O2GOrdersTable)tableManager.getTable(O2GTableType.Orders);
            //O2GClosedTradesTable closedTradesTable = (O2GClosedTradesTable)tableManager.getTable(O2GTableType.ClosedTrades);
            //O2GMessagesTable messagesTable = (O2GMessagesTable)tableManager.getTable(O2GTableType.Messages);
            //O2GSummaryTable summaryTable = (O2GSummaryTable)tableManager.getTable(O2GTableType.Summary);


            // Trigger Table Events for Subscription
            offersTable.RowChanged   += new EventHandler <RowEventArgs>(offersTable_RowChanged);
            accountsTable.RowChanged += new EventHandler <RowEventArgs>(accountsTable_RowChanged);
            tradesTable.RowChanged   += new EventHandler <RowEventArgs>(tradesTable_RowChanged);
            //ordersTable.RowChanged += new EventHandler<RowEventArgs>(ordersTable_RowChanged);
            //closedTradesTable.RowChanged += new EventHandler<RowEventArgs>(closedTradesTable_RowChanged);
            //messagesTable.RowChanged += new EventHandler<RowEventArgs>(messagesTable_RowChanged);
            //summaryTable.RowChanged += new EventHandler<RowEventArgs>(summaryTable_RowChanged);

            // Check pair subscription status, and add if needed.

            this.Invoke(new MethodInvoker(delegate { actiBox.AppendText("Connection Established.... Monitoring Pairs..." + Environment.NewLine); }));
            // Start Past Price Timer
            pastTimer.Start();
        }
Ejemplo n.º 20
0
        public void SubscribeEvents(O2GTableManager manager)
        {
            O2GOffersTable offersTable = (O2GOffersTable)manager.getTable(O2GTableType.Offers);

            offersTable.subscribeUpdate(O2GTableUpdateType.Update, this);
        }