Пример #1
0
		/// <summary>
		/// Called on each incoming market data tick.
		/// </summary>
		/// <param name="e"></param>
		protected override void OnMarketData(MarketDataEventArgs e)
		{
			if (e.MarketDataType != MarketDataType.Last)
				return;

			Text = e.Time.ToString(Cbi.Globals.CurrentCulture.DateTimeFormat.LongTimePattern);
		}
Пример #2
0
        /// <summary>
        /// Called on each incoming market data tick.
        /// </summary>
        /// <param name="e"></param>
        protected override void OnMarketData(MarketDataEventArgs e)
        {
            double price = 0;

            if (position == null)
            {
                Value = 0;
            }
            else if (position.Instrument.MasterInstrument.InstrumentType == InstrumentType.Currency || !Cbi.Position.UseLastPrice4PL)
            {
                if (e.MarketDataType == MarketDataType.Bid && position.MarketPosition == MarketPosition.Long)
                {
                    price = e.Price;
                }
                else if (e.MarketDataType == MarketDataType.Ask && position.MarketPosition == MarketPosition.Short)
                {
                    price = e.Price;
                }
                else
                {
                    return;
                }

                Value = position.GetProfitLoss(price, Strategy.PerformanceUnit.Currency);
            }
            else if (e.MarketDataType == MarketDataType.Last)
            {
                Value = position.GetProfitLoss(e.Price, Strategy.PerformanceUnit.Currency);
            }
        }
Пример #3
0
		/// <summary>
		/// Called on each incoming market data tick.
		/// </summary>
		/// <param name="e"></param>
		protected override void OnMarketData(MarketDataEventArgs e)
		{
			if (e.MarketDataType != MarketDataType.Last)
				return;

			Value = e.Price;
		}
Пример #4
0
        public override void calculate_signals(Object sender, MarketDataEventArgs args)
        {
            try
            {
                AppEvent appEvent = eventManager.storeEventQueue[stgName].Take();
                if (appEvent.Type.Equals(AppEventType.TickerPrice))
                {
                    AppTickPriceEvent tickPriceEvent = (AppTickPriceEvent)appEvent;
                    updateTick(tickPriceEvent);
                }
                //else
                //    return;

                //updateTick(tick);
                if (!MDManager.isDataReady())
                {
                    return;
                }
                if (!dataIsReady)
                {
                    log.Info("Data is Ready.");
                }
                dataIsReady = true;
                series1     = MDManager.getTimeBarSeries();
                checkOpenOrderCompleted(series1);
                checkExitOrderCompleted(series1);
                //cutLossTrade(series1 );
                exitTradeStrategy(series1);
                enterTradeStrategy(series1);
            }
            catch (InvalidOperationException e)
            {
                return;
            }
        }
Пример #5
0
		/// <summary>
		/// Called on each incoming market data tick.
		/// </summary>
		/// <param name="e"></param>
		protected override void OnMarketData(MarketDataEventArgs e)
		{
			if (e.MarketDataType != MarketDataType.DailyVolume)
				return;

			Value = e.Volume;
		}
        protected override void OnMarketData(MarketDataEventArgs e)
        {
            if (RealTime == Switch.ON)
            {
                Price = e.Price;

                OrderAction();
            }
        }
Пример #7
0
        /// <summary>
        /// Called on each incoming market data tick.
        /// </summary>
        /// <param name="e"></param>
        protected override void OnMarketData(MarketDataEventArgs e)
        {
            if (e.MarketDataType != MarketDataType.DailyVolume)
            {
                return;
            }

            Value = e.Volume;
        }
Пример #8
0
        /// <summary>
        /// Called on each incoming market data tick.
        /// </summary>
        /// <param name="e"></param>
        protected override void OnMarketData(MarketDataEventArgs e)
        {
            if (e.MarketDataType != MarketDataType.Bid)
            {
                return;
            }

            Value = e.Price;
        }
Пример #9
0
        /// <summary>
        /// Called on each incoming market data tick.
        /// </summary>
        /// <param name="e"></param>
        protected override void OnMarketData(MarketDataEventArgs e)
        {
            if (e.MarketDataType != MarketDataType.Last)
            {
                return;
            }

            Text = e.Time.ToString(Cbi.Globals.CurrentCulture.DateTimeFormat.LongTimePattern);
        }
Пример #10
0
 protected override void OnMarketData(MarketDataEventArgs e)
 {
     // Print some data to the Output window
     if (e.MarketDataType == MarketDataType.Last)
     {
         //Print("Last = " + e.Price + " " + e.Volume);
         lastTradeVol = e.Volume;
     }
 }
Пример #11
0
 protected override void OnMarketData(MarketDataEventArgs e)
 {
     if (e.MarketDataType == MarketDataType.Last)
     {
         Values[0][0] = ask = e.Ask;
         Values[1][0] = bid = e.Bid;
         Values[2][0] = last = e.Price;
     }
 }
Пример #12
0
 protected override void OnMarketData(MarketDataEventArgs e)
 {
     if (e.MarketDataType == MarketDataType.Ask || e.MarketDataType == MarketDataType.Bid)
     {
         tick.bid = GetCurrentBid(1);
         tick.ask = GetCurrentAsk(1);
         tickDetector();
     }
 }
Пример #13
0
 protected override void OnMarketData(MarketDataEventArgs e)
 {
     if (e.MarketDataType == MarketDataType.Ask)
     {
         base.DrawLine("ask", false, 0, e.Price, -3, e.Price, Color.Red, DashStyle.Solid, 1);
     }
     else if (e.MarketDataType == MarketDataType.Bid)
     {
         base.DrawLine("bid", false, 0, e.Price, -3, e.Price, Color.Green, DashStyle.Solid, 1);
     }
 }
Пример #14
0
        protected override void OnMarketData(MarketDataEventArgs e)
        {
            if (e.MarketDataType != MarketDataType.Last)
            {
                return;
            }

            Values[0][0] = e.Ask;
            Values[1][0] = e.Bid;
            Values[2][0] = e.Price;
        }
Пример #15
0
        protected override void OnMarketData(MarketDataEventArgs e)
        {
            // Print some data to the Output window
            //if (e.MarketDataType == MarketDataType.Last)
            //	Print("Last=" + e.Price + " " + e.Volume);

            //else if (e.MarketDataType == MarketDataType.Ask)
            //	Print("Ask=" + e.Price + " " + e.Volume);
            //else if (e.MarketDataType == MarketDataType.Bid)
            //	Print("Bid=" + e.Price + " " + e.Volume);
        }
Пример #16
0
		protected override void OnMarketData(MarketDataEventArgs e)
		{
    		// Print some data to the Output window
    		//if (e.MarketDataType == MarketDataType.Last) 
          	//	Print("Last=" + e.Price + " " + e.Volume);
 
    		//else if (e.MarketDataType == MarketDataType.Ask)
         	//	Print("Ask=" + e.Price + " " + e.Volume);
    		//else if (e.MarketDataType == MarketDataType.Bid)
         	//	Print("Bid=" + e.Price + " " + e.Volume);
		}
Пример #17
0
		/// <summary>
		/// Called on each incoming market data tick.
		/// </summary>
		/// <param name="e"></param>
		protected override void OnMarketData(MarketDataEventArgs e)
		{
			if (e.MarketDataType != MarketDataType.Last || e.MarketData.LastClose == null)
				return;

			switch (Unit)
			{
				case Strategy.PerformanceUnit.Currency:		Value = (e.Price - e.MarketData.LastClose.Price) * Instrument.MasterInstrument.PointValue;	break;
				case Strategy.PerformanceUnit.Points:		Value = (e.Price - e.MarketData.LastClose.Price);											break;	
				default:									Value = (e.Price - e.MarketData.LastClose.Price) / e.MarketData.LastClose.Price;			break;
			}
		}
Пример #18
0
 protected override void OnMarketData(MarketDataEventArgs e)
 {
     if (e.MarketDataType == MarketDataType.Last)
     {
         if (e.Price >= e.Ask)
         {
             buys += e.Volume;
         }
         else if (e.Price <= e.Bid)
         {
             sells += e.Volume;
         }
     }
 }
Пример #19
0
 protected override void OnMarketData(MarketDataEventArgs e)
 {
     if (e.MarketDataType == MarketDataType.Last)
     {
         if (e.Price >= e.Ask)
         {
             buys += (Instrument.MasterInstrument.InstrumentType == Cbi.InstrumentType.CryptoCurrency ? Core.Globals.ToCryptocurrencyVolume(e.Volume) : e.Volume);
         }
         else if (e.Price <= e.Bid)
         {
             sells += (Instrument.MasterInstrument.InstrumentType == Cbi.InstrumentType.CryptoCurrency ? Core.Globals.ToCryptocurrencyVolume(e.Volume) : e.Volume);
         }
     }
 }
 protected override void OnMarketData(MarketDataEventArgs e)
 {
     if (e.MarketDataType == MarketDataType.Last)
     {
         if (e.Price >= e.Ask)
         {
             myProfile.AddAskVolume(e.Price, e.Volume);
         }
         else if (e.Price <= e.Bid)
         {
             myProfile.AddBidVolume(e.Price, e.Volume);
         }
     }
 }
Пример #21
0
        protected override void OnMarketData(MarketDataEventArgs marketDataUpdate)
        {
            // Workaround for market replay backfilling all of replay sessions data(as historical data)
            // Replay should only backfill history up to replay time, so make sure any historical ticks
            // are before the current replay time.
            if ((Connection.PlaybackConnection != null) &&
                (State == State.Historical) &&
                (marketDataUpdate.Time >= Connection.PlaybackConnection.Now))
            {
                if (PrintDebug)
                {
                    Print("Filter Hit - MarketDataEvent Time :" + marketDataUpdate.Time.ToString() +
                          " Playback Time: " + Connection.PlaybackConnection.Now.ToString() +
                          " Event Type: " + marketDataUpdate.MarketDataType +
                          " State: " + State);
                }
                return;
            }

            // Reset for every session
            if (sessionIterator.IsNewSession(marketDataUpdate.Time, false))
            {
                if (PrintDebug)
                {
                    Print("NewSession: " + marketDataUpdate.Time.ToString());
                }
                totalShares  = 0;
                totalDollars = 0;
                sessionIterator.GetNextSession(marketDataUpdate.Time, false);
            }

            // Check session time
            if (!sessionIterator.IsInSession(marketDataUpdate.Time, false, true))
            {
                return;
            }

            // Is this a trade(not bid or ask)
            if (marketDataUpdate.MarketDataType == MarketDataType.Last)
            {
                totalShares  += marketDataUpdate.Volume;
                totalDollars += marketDataUpdate.Volume * marketDataUpdate.Price;
                Vwap[0]       = totalDollars / totalShares;
                if (PrintDebug)
                {
                    Print(marketDataUpdate.Time.ToString() + " Session total shares: " + totalShares.ToString() + " " + State);
                }
            }
        }
Пример #22
0
        protected override void OnMarketData(MarketDataEventArgs e)
        {
            if (e.MarketDataType == MarketDataType.Last)
            {
                if (e.Price == e.MarketData.Ask.Price)
                {
                    askLast = askLast + e.Volume;

                    if (cummLastTrade.ContainsKey(e.Price))
                    {
                        LastTrade updateAskTrade = new LastTrade()
                        {
                            CumulativeAsk = cummLastTrade[e.Price].CumulativeAsk + e.Volume,
                            CumulativeBid = cummLastTrade[e.Price].CumulativeBid
                        };
                        cummLastTrade[e.Price] = updateAskTrade;
                    }
                    else
                    {
                        LastTrade insertAskTrade = new LastTrade()
                        {
                            CumulativeAsk = e.Volume,
                        };
                        cummLastTrade[e.Price] = insertAskTrade;
                    }
                }
                if (e.Price == e.MarketData.Bid.Price)
                {
                    if (cummLastTrade.ContainsKey(e.Price))
                    {
                        bidLast = bidLast + e.Volume;
                        LastTrade updateBidTrade = new LastTrade()
                        {
                            CumulativeBid = cummLastTrade[e.Price].CumulativeBid + e.Volume,
                            CumulativeAsk = cummLastTrade[e.Price].CumulativeAsk
                        };
                        cummLastTrade[e.Price] = updateBidTrade;
                    }
                    else
                    {
                        LastTrade insertBidTrade = new LastTrade()
                        {
                            CumulativeBid = e.Volume,
                        };
                        cummLastTrade[e.Price] = insertBidTrade;
                    }
                }
            }
        }
Пример #23
0
        /// <summary>
        /// Called on each incoming market data tick.
        /// </summary>
        /// <param name="e"></param>
        protected override void OnMarketData(MarketDataEventArgs e)
        {
            if (e.MarketDataType != MarketDataType.Last || e.MarketData.LastClose == null)
            {
                return;
            }

            switch (Unit)
            {
            case Strategy.PerformanceUnit.Currency:         Value = (e.Price - e.MarketData.LastClose.Price) * Instrument.MasterInstrument.PointValue;      break;

            case Strategy.PerformanceUnit.Points:           Value = (e.Price - e.MarketData.LastClose.Price);                                                                                       break;

            default:                                                                        Value = (e.Price - e.MarketData.LastClose.Price) / e.MarketData.LastClose.Price;                        break;
            }
        }
Пример #24
0
        /// <summary>
        /// Called on each incoming real time market data event
        /// </summary>
        protected override void OnMarketData(MarketDataEventArgs e)
        {
            if (e.MarketDataType != MarketDataType.Last || e.MarketData.Ask == null || e.MarketData.Bid == null)
            {
                return;
            }

            if (e.Price >= e.MarketData.Ask.Price)
            {
                buys += e.Volume;
            }
            else if (e.Price <= e.MarketData.Bid.Price)
            {
                sells += e.Volume;
            }
        }
Пример #25
0
        protected override sealed void OnMarketData(MarketDataEventArgs e)
        {
            DateTime t;

            if (useMillisec)
            {
                ComputeTimeOffset(e.Time);
                t = DateTime.Now.AddMilliseconds(timeoffset);
            }
            else
            {
                t = e.Time;
            }

            if (!initBidAsk)
            {
                initBidAsk = (ask > bid);
            }

            if ((e.MarketDataType == MarketDataType.Last))
            {
                GMktDataTimeTicks = e.Time.Ticks;

                if (writeData && writeOK && writable && initBidAsk)
                {
                    writeOK  = fm.RecordTick(t, bid, ask, e.Price, (int)e.Volume);
                    firstRec = true;
                }

                UpdateBeginEndTime();

                if (disableTime || ((GMktDataTimeTicks >= BeginTimeTicks) && (GMktDataTimeTicks < EndTimeTicks)))
                {
                    tickQueue.Enqueue(new Gom.MarketDataType(t, Gom.Utils.GetIntTickType(bid, ask, e.Price), e.Price, (int)e.Volume));
                }
            }

            else if (e.MarketDataType == MarketDataType.Ask)
            {
                ask = e.Price;
            }

            else if (e.MarketDataType == MarketDataType.Bid)
            {
                bid = e.Price;
            }
        }
Пример #26
0
        protected override sealed void OnMarketData(MarketDataEventArgs e)
        {
            DateTime t;

            if (useMillisec)
            {
                _ComputeTimeOffset(e.Time);
                t = DateTime.Now.AddMilliseconds(_timeOffset);
            }
            else
            {
                t = e.Time;
            }

            if (!_initBidAsk)
            {
                _initBidAsk = (_ask > _bid);
            }

            if ((e.MarketDataType == MarketDataType.Last))
            {
                _mktDataTimeTicks = e.Time.Ticks;

                if (_writeData && _writeOK && _writable && _initBidAsk)
                {
                    _writeOK  = _fm.RecordTick(t, _bid, _ask, e.Price, (int)e.Volume);
                    _firstRec = true;
                }

                _UpdateBeginEndTime();

                if (_disableTime || ((_mktDataTimeTicks >= _beginTimeTicks) && (_mktDataTimeTicks < _endTimeTicks)))
                {
                    _tickQueue.Enqueue(new GMarketDataType(t, GUtils.GetIntTickType(_bid, _ask, e.Price), e.Price, (int)e.Volume));
                }
            }
            else if (e.MarketDataType == MarketDataType.Ask)
            {
                _ask = e.Price;
            }

            else if (e.MarketDataType == MarketDataType.Bid)
            {
                _bid = e.Price;
            }
        }
Пример #27
0
        protected override void OnMarketData(MarketDataEventArgs e)
        {
            if (e.MarketDataType == MarketDataType.Ask)
            {
                askPrice = e.Price;
                return;
            }
            if (e.MarketDataType == MarketDataType.Bid)
            {
                bidPrice = e.Price;
                return;
            }
            if (e.MarketDataType != MarketDataType.Last || ChartControl == null || askPrice == 0 || bidPrice == 0)
            {
                return;
            }

            if (Bars != null && !Bars.Session.InSession(DateTime.Now, Bars.Period, true, Bars.BarsType))
            {
                return;
            }

            double price  = e.Price;
            long   volume = e.Volume;

            if (!volumeInfo.ContainsKey(price))
            {
                volumeInfo.Add(price, new VolumeInfoItem());
            }

            VolumeInfoItem volumeInfoItem = volumeInfo[price];

            if (price >= askPrice)
            {
                volumeInfoItem.up += volume;
            }
            else
            if (price <= bidPrice)
            {
                volumeInfoItem.down += volume;
            }
            else
            {
                volumeInfoItem.neutral += volume;
            }
        }
Пример #28
0
        public override void calculate_signals_impl(Object sender, MarketDataEventArgs args)
        {
            AppEvent appEvent = eventManager.storeEventQueue[stgName].Take();
            var      watch    = Stopwatch.StartNew();

            if (appEvent.Type.Equals(AppEventType.TickerPrice))
            {
                AppTickPriceEvent tickPriceEvent = (AppTickPriceEvent)appEvent;
                updateTick(tickPriceEvent);
            }
            else if (appEvent.Type.Equals(AppEventType.DailyReset))
            {
                stgDailyReset();
                return;
            }
            else
            {
                return;
            }

            if (!MDManager.isDataReady())
            {
                return;
            }

            if (!dataIsReady)
            {
                log.Info("Data is Ready.");
            }
            dataIsReady = true;
            Series <DateTime, MarketDataElement> seriesSelected = MDManager.getTimeBarSeries();

            cacluateRanges();
            calculateCurrentMax(seriesSelected);
            checkStgExitOrderCompleted(seriesSelected);
            checkStgEnterOrderCompleted(seriesSelected);
            exitTradeStrategy(seriesSelected);
            dayEndCloseTrade(seriesSelected);
            enterTradeStrategy(seriesSelected);
            watch.Stop();
            double ticks = watch.ElapsedTicks;

            log.Info("[Strategy] calculate_signals_impl running for = " + watch.ElapsedTicks * 1000000 / Stopwatch.Frequency + " micro second");
        }
Пример #29
0
        public override void calculate_signals_impl(Object sender, MarketDataEventArgs args)
        {
            try
            {
                AppEvent appEvent = eventManager.storeEventQueue[stgName].Take();
                var      watch    = Stopwatch.StartNew();
                if (appEvent.Type.Equals(AppEventType.TickerPrice))
                {
                    AppTickPriceEvent tickPriceEvent = (AppTickPriceEvent)appEvent;
                    updateTick(tickPriceEvent);
                }
                else
                {
                    return;
                }

                //updateTick(tick);
                if (!MDManager.isDataReady())
                {
                    return;
                }
                if (!dataIsReady)
                {
                    log.Info("Data is Ready.");
                }
                dataIsReady = true;

                series1 = MDManager.getTimeBarSeries();
                checkStgEnterOrderCompleted(series1);
                checkStgExitOrderCompleted(series1);
                cutLossTrade(series1);
                exitTradeStrategy(series1);
                enterTradeStrategy(series1);
                // log.Info("[Strategy] day end close running for = " + watch.ElapsedMilliseconds + " millsecond");
                watch.Stop();
                double ticks = watch.ElapsedTicks;
                log.Info("[Strategy] calculate_signals_impl running for = " + watch.ElapsedTicks * 1000000 / Stopwatch.Frequency + " micro second");
            }
            catch (InvalidOperationException e)
            {
                return;
            }
        }
Пример #30
0
		/// <summary>
		/// Called on each incoming market data tick.
		/// </summary>
		/// <param name="e"></param>
		protected override void OnMarketData(MarketDataEventArgs e)
		{
			double price = 0;
			if (position == null)
				Value = 0;
            else if (position.Instrument.MasterInstrument.InstrumentType == InstrumentType.Currency || !Cbi.Position.UseLastPrice4PL)
			{
				if (e.MarketDataType == MarketDataType.Bid && position.MarketPosition == MarketPosition.Long)
					price = e.Price;
				else if (e.MarketDataType == MarketDataType.Ask && position.MarketPosition == MarketPosition.Short)
					price = e.Price;
				else
					return;

				Value = position.GetProfitLoss(price, Strategy.PerformanceUnit.Currency);
			}
			else if (e.MarketDataType == MarketDataType.Last)
				Value = position.GetProfitLoss(e.Price, Strategy.PerformanceUnit.Currency);
		}
Пример #31
0
 protected override void OnMarketData(MarketDataEventArgs e)
 {
     if (e.MarketDataType == MarketDataType.Bid)
     {
         if (e.Price > lastBid)
         {
             lastBid = e.Price;
             lastAsk = e.Price + myTickSize;
         }
     }
     else if (e.MarketDataType == MarketDataType.Ask)
     {
         if (e.Price < lastAsk)
         {
             lastAsk = e.Price;
             lastBid = e.Price - myTickSize;
         }
     }
 }
Пример #32
0
                protected override void OnMarketData(MarketDataEventArgs e)
                {
                        if (e.MarketDataType == MarketDataType.Bid)
                        {
                                double quoteDrift = 0;
                                if ((_LastBidPrice != e.Price) && (_LastTradePrice > 0))
                                {
                                        quoteDrift = (_LastAskPrice - _LastTradePrice) + (e.Price -
_LastTradePrice);
                                        AddQuoteData(e.Price,quoteDrift, quote.drift, CurrentBar);
                                }

                                AddQuoteData(e.Price, e.Volume, quote.bid, CurrentBar);
                                _LastBidPrice = e.Price;
                        }

                        if (e.MarketDataType == MarketDataType.Ask)
                        {
                                double quoteDrift = 0;
                                 if ((_LastAskPrice != e.Price) && (_LastTradePrice > 0))
                                {
                                        quoteDrift =  (e.Price - _LastTradePrice) + (_LastBidPrice -
_LastTradePrice);
                                        AddQuoteData(e.Price,quoteDrift, quote.drift, CurrentBar);
                                }

                                AddQuoteData(e.Price, e.Volume, quote.ask, CurrentBar);
                                _LastAskPrice = e.Price;
                        }

                        if  (e.MarketDataType == MarketDataType.Last)
                        {
                                AddQuoteData(e.Price, e.Volume, quote.last, CurrentBar);
                                _LastTradePrice = e.Price;

                                if (e.Price <= _LastBidPrice)
                                        AddQuoteData(e.Price, e.Volume, quote.lastAtBid, CurrentBar);

                                if (e.Price >= _LastAskPrice)
                                        AddQuoteData(e.Price, e.Volume, quote.lastAtAsk, CurrentBar);
                        }
                }
Пример #33
0
                protected override void OnMarketData(MarketDataEventArgs e)
                {
                        if (e.MarketDataType == MarketDataType.Bid)
                        {
                                double quoteDrift = 0;
                                if ((_LastBidPrice != e.Price) && (_LastTradePrice > 0))
                                {
                                        quoteDrift = (_LastAskPrice - _LastTradePrice) + (e.Price -
_LastTradePrice);
                                        AddQuoteData(e.Price,quoteDrift, quote.drift, CurrentBar);
                                }

                                AddQuoteData(e.Price, e.Volume, quote.bid, CurrentBar);
                                _LastBidPrice = e.Price;
                        }

                        if (e.MarketDataType == MarketDataType.Ask)
                        {
                                double quoteDrift = 0;
                                 if ((_LastAskPrice != e.Price) && (_LastTradePrice > 0))
                                {
                                        quoteDrift =  (e.Price - _LastTradePrice) + (_LastBidPrice -
_LastTradePrice);
                                        AddQuoteData(e.Price,quoteDrift, quote.drift, CurrentBar);
                                }

                                AddQuoteData(e.Price, e.Volume, quote.ask, CurrentBar);
                                _LastAskPrice = e.Price;
                        }

                        if  (e.MarketDataType == MarketDataType.Last)
                        {
                                AddQuoteData(e.Price, e.Volume, quote.last, CurrentBar);
                                _LastTradePrice = e.Price;

                                if (e.Price <= _LastBidPrice)
                                        AddQuoteData(e.Price, e.Volume, quote.lastAtBid, CurrentBar);

                                if (e.Price >= _LastAskPrice)
                                        AddQuoteData(e.Price, e.Volume, quote.lastAtAsk, CurrentBar);
                        }
                }
Пример #34
0
        public override void calculate_signals_impl(Object sender, MarketDataEventArgs args)
        {
            AppEvent appEvent = eventManager.storeEventQueue[stgName].Take();

            if (appEvent.Type.Equals(AppEventType.TickerPrice))
            {
                AppTickPriceEvent tickPriceEvent = (AppTickPriceEvent)appEvent;
                updateTick(tickPriceEvent);
            }
            else if (appEvent.Type.Equals(AppEventType.DailyReset))
            {
                stgDailyReset();
                return;
            }
            else
            {
                return;
            }

            if (!MDManager.isDataReady())
            {
                return;
            }

            if (!dataIsReady)
            {
                log.Info("Data is Ready.");
            }
            dataIsReady = true;
            Series <DateTime, MarketDataElement> seriesSelected = MDManager.getTimeBarSeries();

            calculateExtreme(seriesSelected);
            cancelInvalidSignalOrder();
            cacluateRanges();
            calculateCurrentMax(seriesSelected);
            checkStgExitOrderCompleted(seriesSelected);
            checkStgEnterOrderCompleted(seriesSelected);
            exitTradeStrategy(seriesSelected);
            dayEndCloseTrade(seriesSelected);
            enterTradeStrategy(seriesSelected);
        }
Пример #35
0
        private void FireInstrumentChanged(object sender, MarketDataEventArgs e)
        {
            Instrument instrument = (Instrument)e.Data;

            //
            //  Find all account positions that have this instrument and fire
            //  position changed.
            //

            foreach (AccountPosition account_position in AccountPositions)
            {
                foreach (InstrumentPosition instrument_position in account_position.InstrumentPositions)
                {
                    if (instrument_position.InstrumentId.Equals(instrument.Id))
                    {
                        dispatcher.PositionChangedCallback(
                            new PositionEventArgs(account_position));

                        break;
                    }
                }
            }
        }
Пример #36
0
 protected override void OnMarketData(MarketDataEventArgs e)
 {
     if(!active)
         return;
     if(e.MarketDataType == MarketDataType.Ask||e.MarketDataType == MarketDataType.Bid){
         processTick(GetCurrentAsk(1),GetCurrentBid(1),GetCurrentAsk(2),GetCurrentBid(2));
     }
 }
Пример #37
0
	    protected override void OnMarketData(MarketDataEventArgs e)
		{
            if (e.MarketDataType == MarketDataType.Ask)
            {
                askPrice = e.Price;
                return;
            }
		    if (e.MarketDataType == MarketDataType.Bid)
		    {
		        bidPrice = e.Price;
		        return;
		    }
		    if (e.MarketDataType != MarketDataType.Last || ChartControl == null || askPrice == 0 || bidPrice == 0)
		        return;

		    if (Bars != null && !Bars.Session.InSession(DateTime.Now, Bars.Period, true, Bars.BarsType))
				return;

			double	price	= e.Price;
			long	volume	= e.Volume;

			if (!volumeInfo.ContainsKey(price))
				volumeInfo.Add(price, new VolumeInfoItem());

			VolumeInfoItem volumeInfoItem = volumeInfo[price];

			if (price >= askPrice) 
				volumeInfoItem.up += volume;
			else 
                if (price <= bidPrice)
				    volumeInfoItem.down += volume;
			    else
				    volumeInfoItem.neutral += volume;
		}
Пример #38
0
        /// <summary>
        /// Called on each incoming real time market data event
        /// </summary>
        protected override void OnMarketData(MarketDataEventArgs e)
        {
            if (e.MarketDataType != MarketDataType.Last || e.MarketData.Ask == null || e.MarketData.Bid == null)
                return;

            if (e.Price >= e.MarketData.Ask.Price)
                buys += e.Volume;
            else if (e.Price <= e.MarketData.Bid.Price)
                sells += e.Volume;
        }
Пример #39
0
		protected override sealed void OnMarketData(MarketDataEventArgs e)
		{
			DateTime t;

			if (useMillisec)
			{
				ComputeTimeOffset(e.Time);
				t = DateTime.Now.AddMilliseconds(timeoffset);
			}
			else
				t = e.Time;
			
			if (!initBidAsk)
				initBidAsk = (ask > bid);

			if ((e.MarketDataType == MarketDataType.Last))
			{
				GMktDataTimeTicks = e.Time.Ticks;

				if (writeData && writeOK && writable && initBidAsk)
				{
					writeOK = fm.RecordTick(t, bid, ask, e.Price, (int)e.Volume);
					firstRec=true;
				}

				UpdateBeginEndTime();

				if (disableTime || ((GMktDataTimeTicks >= BeginTimeTicks) && (GMktDataTimeTicks < EndTimeTicks)))
					tickQueue.Enqueue(new Gom.MarketDataType(t, Gom.Utils.GetIntTickType(bid, ask, e.Price), e.Price, (int)e.Volume));
			}

			else if (e.MarketDataType == MarketDataType.Ask)
				ask = e.Price;

			else if (e.MarketDataType == MarketDataType.Bid)
				bid = e.Price;

		}
Пример #40
0
		protected override void OnMarketData(MarketDataEventArgs e){
		//extra chance for stops - on bid and ask updates	
			if(virgin)
				return;
			if(e.MarketDataType == MarketDataType.Ask||e.MarketDataType == MarketDataType.Bid){	
				tick.bid=GetCurrentBid(1);
				tick.ask=GetCurrentAsk(1);
				tickDetector();
			}
			
		}
Пример #41
0
		protected override void OnMarketData(MarketDataEventArgs e)
		{
   			// Print some data to the Output window
    		if (e.MarketDataType == MarketDataType.Last){
         		//Print("Last = " + e.Price + " " + e.Volume);
				lastTradeVol = e.Volume;
			}

		}
Пример #42
0
         protected override void OnMarketData(MarketDataEventArgs e)
 {
                 UpdateRiskData();
         }
 protected override void OnMarketData(MarketDataEventArgs marketDataUpdate)
 {
     if (marketDataUpdate.MarketDataType == MarketDataType.Last)
     {
     }
 }
Пример #44
0
 protected override void OnMarketData(MarketDataEventArgs e)
 {
     if(e.MarketDataType == MarketDataType.Ask||e.MarketDataType == MarketDataType.Bid){
         tick.bid=GetCurrentBid(1);
         tick.ask=GetCurrentAsk(1);
         tickDetector();
     }
 }