/// <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); }
/// <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); } }
/// <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; }
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; } }
/// <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(); } }
/// <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; }
/// <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; }
/// <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); }
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; } }
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; } }
protected override void OnMarketData(MarketDataEventArgs e) { if (e.MarketDataType == MarketDataType.Ask || e.MarketDataType == MarketDataType.Bid) { tick.bid = GetCurrentBid(1); tick.ask = GetCurrentAsk(1); tickDetector(); } }
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); } }
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; }
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); }
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); }
/// <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; } }
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; } } }
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); } } }
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); } } }
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; } } } }
/// <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; } }
/// <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; } }
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; } }
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; } }
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; } }
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"); }
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; } }
/// <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); }
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; } } }
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); } }
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); } }
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); }
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; } } } }
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)); } }
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; }
/// <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; }
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; }
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(); } }
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; } }
protected override void OnMarketData(MarketDataEventArgs e) { UpdateRiskData(); }
protected override void OnMarketData(MarketDataEventArgs marketDataUpdate) { if (marketDataUpdate.MarketDataType == MarketDataType.Last) { } }
protected override void OnMarketData(MarketDataEventArgs e) { if(e.MarketDataType == MarketDataType.Ask||e.MarketDataType == MarketDataType.Bid){ tick.bid=GetCurrentBid(1); tick.ask=GetCurrentAsk(1); tickDetector(); } }