public AbnormalInstrument(SourceQuotation firstAbnormalItem, AbnormalQuotationManager abnormalQuotationManager, PriceRangeCheckRule priceRangeCheckRule)
 {
     this._InstrumentId = firstAbnormalItem.InstrumentId;
     this._TimeoutCount = 0;
     this._WaitQueue = new Queue<SourceQuotation>();
     this._WaitQueue.Enqueue(firstAbnormalItem);
     this._AbnormalQuotationManager = abnormalQuotationManager;
     this._PriceRangeCheckRule = priceRangeCheckRule;
 }
        public void Start(int quotationListenPort)
        {
            this._ConfigMetadata.Load();
            this._AbnormalQuotationManager = new AbnormalQuotationManager(this._ConfigMetadata.PriceRangeCheckRules, this._LastQuotationManager);
            this._DerivativeController = new DerivativeController(this._ConfigMetadata.DerivativeRelations, this._LastQuotationManager);

            this._SourceController.Start();
            this._LastQuotationManager.LastAccepted.Initialize(this._ConfigMetadata.LastQuotations);
            this._QuotationReceiver = new QuotationReceiver(quotationListenPort);
            this._QuotationReceiver.Start(this);
        }