Пример #1
0
        public override void OnQuote(Quote quote)
        {
            server.SetData(TOPIC_QUOTE_BID,
                Instrument.ToString(),
                1,
                quote.Bid
                );

            server.SetData(TOPIC_QUOTE_BID_SIZE,
                Instrument.ToString(),
                1,
                quote.BidSize
                );

            server.SetData(TOPIC_QUOTE_ASK,
                Instrument.ToString(),
                1,
                quote.Ask
                );

            server.SetData(TOPIC_QUOTE_ASK_SIZE,
                Instrument.ToString(),
                1,
                quote.AskSize
                );
        }
Пример #2
0
 public override void OnQuote(Quote quote)
 {
     // 插件3.8.2.1 中开始可用,是将Quote数据中的深度数据取出
     if (DataConvert.TryConvert(quote, ref DepthMarketData))
     {
         Console.WriteLine("OnQuote " + DepthMarketData.LastPrice);
         Console.WriteLine("OnQuote " + DepthMarketData.UpperLimitPrice);
     }
 }
Пример #3
0
        public static bool TryConvert(Quote quote, ref DFITCDepthMarketDataField DepthMarketData)
        {
            if (quoteField == null)
            {
                quoteField = typeof(Quote).GetField("quote", BindingFlags.NonPublic | BindingFlags.Instance);
            }

            XSpeedQuote q = quoteField.GetValue(quote) as XSpeedQuote;
            if (null != q)
            {
                DepthMarketData = q.DepthMarketData;
                return true;
            }
            return false;
        }
Пример #4
0
 public override void OnQuote(Quote quote)
 {
     // 只要有报价就会生成,数量约为两个合约Quote之和
     //if(Instrument == Instrument2)
     {
         if (Instrument1.Quote != null
                 && Instrument2.Quote != null)
         {
             double Ask = Instrument1.Quote.Ask - Instrument2.Quote.Bid;
             int AskSize = Math.Min(Instrument1.Quote.AskSize, Instrument2.Quote.BidSize);
             double Bid = Instrument1.Quote.Bid - Instrument2.Quote.Ask;
             int BidSize = Math.Min(Instrument1.Quote.BidSize, Instrument2.Quote.AskSize);
             Quote q = new Quote(Clock.Now, Bid, BidSize, Ask, AskSize);
             DataManager.Add(Instrument3, q);
         }
     }
 }
Пример #5
0
        public static bool TryConvert(Quote quote, ref CThostFtdcDepthMarketDataField DepthMarketData)
        {
#if OQ
            if (quoteField == null)
            {
                quoteField = typeof(Quote).GetField("quote", BindingFlags.NonPublic | BindingFlags.Instance);
            }

            CTPQuote q = quoteField.GetValue(quote) as CTPQuote;
#elif QD
            CTPQuote q = quote as CTPQuote;
#endif
            if (null != q)
            {
                DepthMarketData = q.DepthMarketData;
                return true;
            }
            return false;
        }
Пример #6
0
        public override void OnQuote(Quote quote)
        {
            if (!quote.DateTime.IsWithinRegularTradingHours(Instrument.Type))
            {
                return;
            }

            CurrentAskPrice = quote.Ask;
            CurrentBidPrice = quote.Bid;

            //LoggingUtility.WriteInfoFormat(this, "Current Bid={0:c}, Ask={1:c}", CurrentBidPrice, CurrentAskPrice);
        }
        protected void SaveData(Instrument instrument, Quote quote)
        {
            DataManager.Add(instrument, quote);

            DataManager.Flush();
        }
Пример #8
0
		public static void Add(Instrument instrument, Quote quote)
		{
			SmartQuant.Instruments.Instrument instrument2 = Map.OQ_SQ_Instrument[instrument] as SmartQuant.Instruments.Instrument;
			SmartQuant.Instruments.DataManager.Add(instrument2, quote.quote);
		}
Пример #9
0
        public override void OnQuote(Quote quote)
        {
            //lock(this)
            {
                Process();
            }

            // 如果只有Quote数据,如何更新?
            // 那就会不用这个目标仓位助手了
            //if(!DataRequests.HasTradeRequest)
            //{ 
            //}
        }
Пример #10
0
		public void Add(Quote quote)
		{
			this.series.Add(quote.quote);
		}
Пример #11
0
 public override Quote FilterQuote(OpenQuant.API.Quote quote, string symbol)
 {
     // 接收所有报价
     return(quote);
 }
Пример #12
0
 public void EmitQuote(Quote quote)
 {
   this.EmitQuote(this.Instrument, quote);
 }
Пример #13
0
 public override void OnQuote(Quote quote)
 {
     if (StrategyMode.Simulation != Mode)
         DataManager.Add(Instrument, quote);
 }
        public void ProcessQuote(Quote quote)
        {
            try
            {

                if (!IsItOkToHandleQuote(quote))
                {
                    return;
                }

                if (GetCurrentDateTime() >= CurrentValidityDateTime && !AreAllLegsCompleted)
                {
                    LoggingUtility.WriteTraceFormat(this, "Processing quote: {0}", quote);
                }

                CurrentQuoteRef = quote;

                SaveData(Instrument, quote);

                CurrentAskPrice = quote.Ask;
                CurrentBidPrice = quote.Bid;

                AttempOrder();
            }
            catch (Exception ex)
            {
                LoggingUtility.WriteError(this, ex, "Error in ProcessQuote");
            }
            finally
            {
                CurrentQuoteRef = null;
            }
        }
Пример #15
0
		public virtual Quote FilterQuote(Quote quote, string symbol)
		{
			return quote;
		}
Пример #16
0
        public override void OnQuote(Quote quote)
        {
            PublishQuote(quote);

            base.OnQuote(quote);
        }
Пример #17
0
        private void PublishQuote(Quote quote)
        {
            string topic = Instrument.Symbol.ToUpperInvariant();
            OnQuoteMessage message = new OnQuoteMessage {Quote = ConvertQuote(quote), Instrument = ConvertInstrument()};

            Bus.Publish(message, topic);
        }
Пример #18
0
 public virtual void OnQuote(Quote quote)
 {
 }
        public override void OnQuote(Quote quote)
        {
            try
            {

                if (!quote.IsWithinRegularTradingHours(Instrument.Type))
                {
                    LoggingUtility.WriteTraceFormat(this,
                                "Discarding quote outside of trading hours. {0}", quote);
                    return;
                }

                if (!QuoteClientEnabled)
                {
                    LoggingUtility.WriteTraceFormat(this,
                                "Processing native quote. {0}", quote);

                    ProcessQuote(quote);
                }
                else
                {
                    LoggingUtility.WriteTraceFormat(this,
                                "Discarding native quote. {0}", quote);
                }

                base.OnQuote(quote);
            }
            catch (Exception ex)
            {
                LoggingUtility.WriteError(this, ex, "Error in OnQuote");
            }
        }
Пример #20
0
 public override void OnQuote(Quote quote)
 {
     Process();
 }
Пример #21
0
 public void EmitQuote(Instrument instrument, Quote quote)
 {
   if (!(this.MarketDataProvider.provider is ISimulationMarketDataProvider))
     return;
   (this.MarketDataProvider.provider as ISimulationMarketDataProvider).EmitQuote((IFIXInstrument) instrument.instrument, quote.quote);
 }
        protected bool IsItOkToHandleQuote(Quote quote)
        {
            if (!quote.IsWithinRegularTradingHours(Instrument.Type))
            {
                LoggingUtility.WriteTraceFormat(this, "Quote is not within regular trading hours: {0}", quote);
                return false;
            }

            return true;
        }
Пример #23
0
        private SpiderQuote ConvertQuote(Quote originalQuote)
        {
            SpiderQuote spiderQuote = new SpiderQuote()
            {
                DateTime = originalQuote.DateTime,
                Ask = originalQuote.Ask,
                Bid = originalQuote.Bid,
                AskSize = originalQuote.AskSize,
                BidSize = originalQuote.BidSize
            };

            return spiderQuote;
        }