示例#1
0
        //
        #endregion//Private Methods


        #region Service Event Handlers
        // *****************************************************************
        // ****                     Event Handlers                     ****
        // *****************************************************************
        private void TTService_ServiceStateChanged(object sender, EventArgs eventArgs)
        {
            if (m_IsShuttingDown)
            {
                return;
            }
            if (eventArgs is TTServices.TTApiService.ServiceStatusChangeEventArgs)
            {
                TTServices.TTApiService.ServiceStatusChangeEventArgs e = (TTServices.TTApiService.ServiceStatusChangeEventArgs)eventArgs;
                if (e.IsConnected)
                {
                    m_PriceListener = new PriceListener("PriceListener", Log);
                    m_PriceListener.InstrumentsFound        += new EventHandler(PriceListener_InstrumentsFound);
                    m_PriceListener.ProcessPriceChangeEvents = new PriceListener.ProcessPriceChangeDelegate(PriceListener_ProcessMarketEvents);
                    m_PriceListener.Start();

                    m_FillListener         = new FillListener("FillListener");
                    m_FillListener.Log     = Log;
                    m_FillListener.Filled += new EventHandler(FillListener_Filled);
                    m_FillListener.Start();

                    m_OrderListener          = new OrderListenerMsgr("OrderListener", Log);
                    m_OrderListener.Message += new EventHandler(OrderListener_Message);
                    m_OrderListener.Start();
                }
                else
                {
                }
            }
        }// TTServices_ServiceStateChanged()
示例#2
0
        //
        //
        #endregion//Constructors


        #region Properties
        // *****************************************************************
        // ****                     Properties                          ****
        // *****************************************************************
        //
        //
        #endregion//Properties


        #region Public Methods
        // *****************************************************************
        // ****                     Public Methods                      ****
        // *****************************************************************
        //
        //
        //
        //
        //
        //
        #endregion//Public Methods


        #region Private Methods
        // *****************************************************************
        // ****                     Private Methods                     ****
        // *****************************************************************
        //

        //
        private void Shutdown()
        {
            m_IsShuttingDown = true;
            if (m_Writer != null)
            {
                m_Writer.RequestStop();
                m_Writer = null;
            }
            if (m_TTService != null)
            {
                m_TTService.Dispose();
                m_TTService = null;
            }
            if (m_PriceListener != null)
            {
                m_PriceListener.Dispose();
                m_PriceListener = null;
            }
            if (m_FillListener != null)
            {
                m_FillListener.Dispose();
                m_FillListener = null;
            }
            if (m_OrderListener != null)
            {
                m_OrderListener.Dispose();
                m_OrderListener = null;
            }
            if (Log != null)
            {
                Log.RequestStop();
                Log = null;
            }
        }
示例#3
0
 public void UnOnserve(PriceListener listener)
 {
     lock (this) {
         listeners -= listener;
         if (listeners.GetInvocationList().Length == 1)
         {
             client.Dispose();
             oandaApi.Dispose();
             listeners = null;
         }
     }
 }
示例#4
0
 public void Observe(PriceListener listener)
 {
     lock (this) {
         if (listeners == null)
         {
             oandaApi  = new OandaAPI();
             listeners = delegate { };
             client    = oandaApi.GetPrices(ReceivePrice, instrument);
         }
         listeners += listener;
     }
 }
示例#5
0
 public void unsubscribePrice(PriceListener priceListener)
 {
     if (priceListeners.Contains(priceListener))
         priceListeners.Remove(priceListener);
 }
示例#6
0
 public void subscribePrice(PriceListener priceListener)
 {
     if (!priceListeners.Contains(priceListener))
         priceListeners.Add(priceListener);
 }