Esempio n. 1
0
        public bool Initialize(IDataProvider dataProvider, IOrderExecutionProvider orderExectioner)
        {
            lock (this)
            {
                _dataProvider = dataProvider;

                _operationalState = OperationalStateEnum.Initialized;
            }

            //GeneralHelper.SafeEventRaise(OperationalStatusChangedEvent, this);
            return(true);
        }
 /// <summary>
 /// Unhooks Logon and Logout Events for the Order Execution Provider
 /// </summary>
 private void UnhookConnectionStatusEvents(IOrderExecutionProvider orderExecutionProvider)
 {
     try
     {
         orderExecutionProvider.LogonArrived      -= OnLogonEventArrived;
         orderExecutionProvider.LogoutArrived     -= OnLogoutEventArrived;
         orderExecutionProvider.OnLocateMessage   -= OnLocateMessageArrived;
         orderExecutionProvider.OnPositionMessage -= OnPositionMessageArrived;
     }
     catch (Exception exception)
     {
         Logger.Error(exception, _type.FullName, "UnhookConnectionStatusEvents");
     }
 }
Esempio n. 3
0
        public void UnInitialize()
        {
            lock (this)
            {
                _operationalState = OperationalStateEnum.UnInitialized;

                if (_dataProvider != null)
                {
                    //_dataProvider.OperationalStatusChangedEvent -= new GeneralHelper.GenericDelegate<IOperational>(_subItem_OperationalStatusChangedEvent);
                    _dataProvider = null;
                }

                if (_orderExecutionProvider != null)
                {
                    //_orderExecutionProvider.OperationalStatusChangedEvent -= new GeneralHelper.GenericDelegate<IOperational>(_subItem_OperationalStatusChangedEvent);
                    _orderExecutionProvider = null;
                }
            }
            //GeneralHelper.SafeEventRaise(OperationalStatusChangedEvent, this);
        }
        public void UnInitialize()
        {
            lock (this)
            {
                if (_dataProvider != null)
                {
                    _dataProvider.ValuesUpdateEvent -= new ValuesUpdatedDelegate(_provider_ValuesUpdateEvent);
                    _dataProvider = null;
                }

                if (_orderExecutionProvider != null)
                {
                    _orderExecutionProvider.OrderAddedEvent   -= new GeneralHelper.GenericDelegate <Order>(_orderExecutionProvider_OrderUpdate);
                    _orderExecutionProvider.OrderRemovedEvent -= new GeneralHelper.GenericDelegate <Order>(_orderExecutionProvider_OrderUpdate);
                    _orderExecutionProvider.OrderUpdatedEvent -= new GeneralHelper.GenericDelegate <Order>(_orderExecutionProvider_OrderUpdate);

                    _orderExecutionProvider = null;
                }

                _buyDashedPen.Dispose();
                _sellDashedPen.Dispose();
            }
        }
        /// <summary>
        /// Processes the new incoming Order Execution Provider Login requests
        /// </summary>
        /// <param name="login">TradeHub Login object</param>
        /// <param name="applicationId">Unique Application ID</param>
        private void ProcessProviderLogonRequest(Login login, string applicationId)
        {
            try
            {
                List <string> appIds;
                // Check if the requested Execution Provider has already recieved login request
                if (_providersLoginRequestMap.TryGetValue(login.OrderExecutionProvider, out appIds))
                {
                    if (!appIds.Contains(applicationId))
                    {
                        // Update List
                        appIds.Add(applicationId);

                        IOrderExecutionProvider orderExecutionProvider;
                        if (_providersMap.TryGetValue(login.OrderExecutionProvider, out orderExecutionProvider))
                        {
                            if (orderExecutionProvider != null)
                            {
                                if (Logger.IsInfoEnabled)
                                {
                                    Logger.Info("Requested provider: " + login.OrderExecutionProvider + " module successfully loaded",
                                                _type.FullName, "CheckExecutionProviderAvailability");
                                }

                                // If Order Execution Provider is connectd then raise event else wait for the Logon to arrive from Gateway
                                if (orderExecutionProvider.IsConnected())
                                {
                                    // Raise Logon Event
                                    OnLogonEventArrived(login.OrderExecutionProvider);
                                }
                            }
                        }
                    }
                    else
                    {
                        if (Logger.IsInfoEnabled)
                        {
                            Logger.Info("Login request is already entertained for the given App: " + applicationId,
                                        _type.FullName, "ProcessProviderLogonRequest");
                        }
                    }
                }
                else
                {
                    // Get a new instance of the requested OrderExecutionProvider
                    IOrderExecutionProvider orderExecutionProvider = GetExecutionProviderInstance(login.OrderExecutionProvider);
                    if (orderExecutionProvider != null)
                    {
                        appIds = new List <string>();
                        appIds.Add(applicationId);

                        // Register events
                        HookConnectionStatusEvents(orderExecutionProvider);

                        // Start the requested OrderExecutionProvider Service
                        orderExecutionProvider.Start();

                        // Update Internal maps if the requested Login Provider instance doesn't exists
                        UpdateMapsOnNewProviderLogin(login, appIds, orderExecutionProvider);
                    }
                    else
                    {
                        if (Logger.IsInfoEnabled)
                        {
                            Logger.Info("Requested provider: " + login.OrderExecutionProvider + " module not found.",
                                        _type.FullName, "ProcessProviderLogonRequest");
                        }
                    }
                }
            }
            catch (Exception exception)
            {
                Logger.Error(exception, _type.FullName, "ProcessProviderLogonRequest");
            }
        }
        public void UnInitialize()
        {
            lock (this)
            {
                _operationalState = OperationalStateEnum.UnInitialized;

                if (_dataProvider != null)
                {
                    //_dataProvider.OperationalStatusChangedEvent -= new GeneralHelper.GenericDelegate<IOperational>(_subItem_OperationalStatusChangedEvent);
                    _dataProvider = null;
                }

                if (_orderExecutionProvider != null)
                {
                    //_orderExecutionProvider.OperationalStatusChangedEvent -= new GeneralHelper.GenericDelegate<IOperational>(_subItem_OperationalStatusChangedEvent);
                    _orderExecutionProvider = null;
                }
            }
            //GeneralHelper.SafeEventRaise(OperationalStatusChangedEvent, this);
        }
        public bool Initialize(IDataProvider dataProvider, IOrderExecutionProvider orderExectioner)
        {
            lock (this)
            {
                _dataProvider = dataProvider;

                _operationalState = OperationalStateEnum.Initialized;
            }

            //GeneralHelper.SafeEventRaise(OperationalStatusChangedEvent, this);
            return true;
        }
        public void UnInitialize()
        {
            lock (this)
            {
                if (_dataProvider != null)
                {
                    _dataProvider.ValuesUpdateEvent -= new ValuesUpdatedDelegate(_provider_ValuesUpdateEvent);
                    _dataProvider = null;
                }

                if (_orderExecutionProvider != null)
                {
                    _orderExecutionProvider.OrderAddedEvent -= new GeneralHelper.GenericDelegate<Order>(_orderExecutionProvider_OrderUpdate);
                    _orderExecutionProvider.OrderRemovedEvent -= new GeneralHelper.GenericDelegate<Order>(_orderExecutionProvider_OrderUpdate);
                    _orderExecutionProvider.OrderUpdatedEvent -= new GeneralHelper.GenericDelegate<Order>(_orderExecutionProvider_OrderUpdate);

                    _orderExecutionProvider = null;
                }

                _buyDashedPen.Dispose();
                _sellDashedPen.Dispose();
            }
        }
        public void Initialize(IDataProvider dataProvider, IOrderExecutionProvider orderExecutionProvider)
        {
            lock (this)
            {
                _dataProvider = dataProvider;
                _dataProvider.ValuesUpdateEvent += new ValuesUpdatedDelegate(_provider_ValuesUpdateEvent);

                _orderExecutionProvider = orderExecutionProvider;
                if (_orderExecutionProvider != null)
                {
                    _orderExecutionProvider.OrderAddedEvent += new GeneralHelper.GenericDelegate<Order>(_orderExecutionProvider_OrderUpdate);
                    _orderExecutionProvider.OrderRemovedEvent += new GeneralHelper.GenericDelegate<Order>(_orderExecutionProvider_OrderUpdate);
                    _orderExecutionProvider.OrderUpdatedEvent += new GeneralHelper.GenericDelegate<Order>(_orderExecutionProvider_OrderUpdate);
                }

                ComponentResourceManager resources = new ComponentResourceManager(typeof(ProviderTradeChartSeries));
                _imageDown = ((Image)(resources.GetObject("imageDown")));
                _imageUp = ((Image)(resources.GetObject("imageUp")));
                _imageCross = ((Image)(resources.GetObject("imageCross")));

                _buyDashedPen.DashPattern = new float[] { 5, 5 };
                _buyDashedPen.DashStyle = System.Drawing.Drawing2D.DashStyle.Custom;

                _priceLevelPen.DashPattern = new float[] { 3, 3 };
                _priceLevelPen.DashStyle = System.Drawing.Drawing2D.DashStyle.Custom;

                _sellDashedPen.DashPattern = new float[] { 5, 5 };
                _sellDashedPen.DashStyle = System.Drawing.Drawing2D.DashStyle.Custom;
            }
        }