private void OnNewTrade(object sender, TradeEventArgs args) { if (this.HandleMarketData(args.Provider, args.Instrument)) { this.metaStrategyBase.SetNewTrade(args); } }
public void Update(object info) { if (info is null) { throw new ArgumentNullException(nameof(info)); } var stockInfo = (StockInfo)info; if (stockInfo.Euro > 40) { TradeEventArgs bankEvent = new TradeEventArgs($"Bank sells euros. Euro rate: {stockInfo.Euro}", stockInfo.Euro); OnSell(bankEvent); } else { TradeEventArgs bankEvent = new TradeEventArgs($"Bank is buying euros. Euro rate: {stockInfo.Euro}", stockInfo.Euro); OnBuy(bankEvent); } if (stockInfo.USD > 30) { TradeEventArgs bankEvent = new TradeEventArgs($"Broker sells euros. USD rate: {stockInfo.USD}", stockInfo.USD); OnSell(bankEvent); } else { TradeEventArgs bankEvent = new TradeEventArgs($"Broker is buying euros. USD rate: {stockInfo.USD}", stockInfo.USD); OnBuy(bankEvent); } }
private void OnTradeReceived(object sender, TradeEventArgs args) { try { DbRepositoryService dbRepo = null; var s = sender as BaseWebSocketExchange; if (s != null) { dbRepo = (DbRepositoryService)s.Log.DbRepository; } else { if (sender is BitstampExchange) { dbRepo = (DbRepositoryService)((BitstampExchange)sender).Log.DbRepository; } else { dbRepo = (DbRepositoryService)((BitmexExchange)sender).Log.DbRepository; } } dbRepo.SaveTrade(args); } catch (Exception ex) { _log.WriteError(String.Format("[{0}] {1} {2}", ex.GetType(), ex.Message, ex.StackTrace)); } }
protected virtual void OnNewTrade(object sender, TradeEventArgs args) { if (((IntradayEventArgs)args).Provider != this.marketDataProvider) { return; } QuoteViewRow quoteViewRow; bool flag; lock (this.lockObject) flag = this.quoteRows.TryGetValue(((IntradayEventArgs)args).Instrument, out quoteViewRow); if (!flag) { return; } if (this.eventQueue.Enabled) { this.eventQueue.Enqueue(new MarketDataUpdateItem((MarketDataViewRow)quoteViewRow, null, args.Trade, null)); } else { quoteViewRow.Update((Quote)null, args.Trade, null); } this.instrumentPad.OnNewTrade(sender, args); }
public void Add(TradeEventArgs args) { lock (this.lockObject) { this.GetProviderCounter((IProvider)((IntradayEventArgs)args).Provider).AddTrade(((IntradayEventArgs)args).Instrument); this.Trades.Increment(); } }
private void ProviderManager_NewTrade(object sender, TradeEventArgs args) { lock (this) { ++this.countTrade; ++this.countMarketDataTotal; } }
internal void EmitQuoteTrade(object sender, UpdateMessageEventArgs args) { IQFeedDataRequestRecord rr = htL1WatchedSymbols[args.Message.Symbol] as IQFeedDataRequestRecord; /* * if (SmartQuant.TraceLevel.Verbose == trace) { * string s; * s = string.Format(" sym='{0}',lst='{1}',vol='{2}',bid='{3}',ask='{4}',bsz='{5}',asz='{6}',typ='{7}'", * args.Message.Symbol, args.Message.Last, args.Message.LastSize, * args.Message.Bid, args.Message.Ask, args.Message.BidSize, args.Message.Type ); * Console.WriteLine(s); * } */ switch (args.Message.Type) { case "a": case "b": if (null != NewQuote) { QuoteEventArgs q = new QuoteEventArgs( new Quote( rr.GetUniqueTimeStamp(), args.Message.Bid, args.Message.BidSize, args.Message.Ask, args.Message.AskSize), rr.instrument, this); NewQuote(this, q); } break; case "t": case "T": Trade trade = new Trade( rr.GetUniqueTimeStamp(), args.Message.Last, args.Message.LastSize); if (null != NewTrade) { TradeEventArgs t = new TradeEventArgs(trade, rr.instrument, this); NewTrade(this, t); } if (null != factory) { factory.OnNewTrade(rr.instrument, trade); } break; case "o": break; default: break; } }
public override void SubscribeTrades(TradeEventArgs tradeEventArgs) { if (Strategy == null) { return; } var strategyNotification = new StrategyNotification { Name = Strategy.Name, NotificationLevel = NotificationLevel.Trade }; string message; try { var previousLastTrade = tradeCache.GetLastTrade(); ITrade[] trades; MovingAverageTrade[] movingAverageTrades; if (previousLastTrade == null) { trades = (from t in tradeEventArgs.Trades orderby t.Time, t.Id select t).ToArray(); movingAverageTrades = tradeCache.AddRange(trades); } else { trades = (from t in tradeEventArgs.Trades where t.Time > previousLastTrade.Time && t.Id > previousLastTrade.Id orderby t.Time, t.Id select t).ToArray(); movingAverageTrades = tradeCache.AddRange(trades); } var lastTrade = tradeCache.GetLastTrade(); if (!suspend) { PlaceOrder(lastTrade); } message = JsonConvert.SerializeObject(movingAverageTrades); } catch (Exception ex) { message = JsonConvert.SerializeObject(ex); } strategyNotification.Message = message; StrategyTradeNotification(new StrategyNotificationEventArgs { StrategyNotification = strategyNotification }); }
public void SaveTrade(TradeEventArgs args) { if (args.Exchange == ExchangeName.Bitmex) { _dbRepo.SaveBitmexTrade(args); } else { _dbRepo.SaveTrade(args); } }
private void OnNewTrade(object sender, TradeEventArgs e) { lock (this.dataLock) { Position position = this.positions[(Instrument)e.Instrument]; if (position != null) { position.EmitValueChanged(); this.EmitValueChanged(position); } } }
public virtual void SubscribeTrades(TradeEventArgs tradeEventArgs) { var message = JsonConvert.SerializeObject(tradeEventArgs.Trades); var strategyNotification = new StrategyNotification { Name = Strategy.Name, Message = message, NotificationLevel = NotificationLevel.Trade }; StrategyTradeNotification(new StrategyNotificationEventArgs { StrategyNotification = strategyNotification }); }
internal void EmitNewTrade(TradeEventArgs e) { if (this.Trade.Price != 0.0 && this.Trade.Price != e.Trade.Price) { this.Change = e.Trade.Price - this.Trade.Price; } this.Trade = e.Trade; if (this.NewTrade != null) { this.NewTrade(this, e); } }
public virtual void SubscribeTrades(TradeEventArgs tradeEventArgs) { if (tradeEventArgs == null) { throw new ArgumentNullException(nameof(tradeEventArgs)); } var message = JsonConvert.SerializeObject(tradeEventArgs.Trades); var strategyNotification = new StrategyNotification { Name = Strategy.Name, Message = message, NotificationLevel = NotificationLevel.Trade }; StrategyTradeNotification(new StrategyNotificationEventArgs { StrategyNotification = strategyNotification }); }
private void marketDataProvider_NewTrade(object sender, TradeEventArgs args) { FreeQuant.Instruments.Instrument instrument = args.Instrument as FreeQuant.Instruments.Instrument; List <StrategyRunner> list = (List <StrategyRunner>)null; if (!this.instrumentTable.TryGetValue(instrument, out list)) { return; } foreach (StrategyRunner strategyRunner in list) { if (strategyRunner.Enabled) { strategyRunner.SetNewTrade(instrument, args.Trade); } } }
private void OnNewTrade(object sender, TradeEventArgs args) { if (!this.isRunning || !this.cbxTrades.Checked) { return; } this.queue.Enqueue((Action)(() => { Instrument local_0 = ((IntradayEventArgs)args).Instrument as Instrument; InstrumentRow local_1 = this.instruments[local_0] as InstrumentRow; if (local_1 == null) { return; } local_0.Add(args.Trade); ++local_1.Trades; })); }
internal void EmitTradeSummary(object sender, SummaryMessageEventArgs args) { IQFeedDataRequestRecord rr = htL1WatchedSymbols[args.Message.Symbol] as IQFeedDataRequestRecord; if (null != TradeSummary) { //if (0 < args.Message.Last) { TradeEventArgs t = new TradeEventArgs(new Trade( rr.GetUniqueTimeStamp(), args.Message.Last, args.Message.LastSize ), rr.instrument, this); TradeSummary(this, t); //} //else { // Console.WriteLine("*** IQFeedProvider tradesummary dLast is {0} ***", args.Message.Last); //} } }
private static void OnNewTrade(object sender, TradeEventArgs e) { Instrument instrument = e.Instrument as Instrument ?? InstrumentManager.Instruments[e.Instrument.Symbol, e.Provider.Name]; if (instrument == null) { return; } Trade trade = e.Trade; if (DataManager.tradeArrayLength != 0) { TradeArray tradeArray = DataManager.tradeArrayList[instrument]; tradeArray.Add(trade); if (DataManager.tradeArrayLength != -1 && tradeArray.Count > DataManager.tradeArrayLength) { tradeArray.RemoveAt(0); } } instrument.EmitNewTrade(new TradeEventArgs(trade, instrument, e.Provider)); }
public void OnNewTrade(object sender, TradeEventArgs args) { if (((IntradayEventArgs)args).Instrument != this.instrument) { return; } if (((DataArray)DataManager.Trades[this.instrument]).Count == 1 && ((DataArray)DataManager.Quotes[this.instrument]).Count == 0) { this.isFirstTime = true; } DateTime lastDateTime = ((DataArray)DataManager.Trades[this.instrument]).LastDateTime; int num = ((DataArray)DataManager.Trades[this.instrument]).Count - 2; while (num >= 0 && DataManager.Trades[this.instrument][num].DateTime == lastDateTime) { --num; } if (num < 0) { return; } // DataManager.Trades[this.instrument][num].DateTime; if (lastDateTime >= this.lastUpdateDate) { if (this.isFirstTime) { this.pad.SetRangeX((double)(((DataArray)DataManager.Trades[this.instrument]).LastDateTime.Ticks - 9000000000L), (double)((DataArray)DataManager.Trades[this.instrument]).LastDateTime.Ticks); this.isFirstTime = false; } else { this.pad.SetRangeX((double)((DataArray)DataManager.Trades[this.instrument]).LastDateTime.Ticks + this.pad.XMin - (double)this.lastUpdateDate.Ticks, (double)((DataArray)DataManager.Trades[this.instrument]).LastDateTime.Ticks + (this.pad.XMax - (double)this.lastUpdateDate.Ticks)); } } this.lastUpdateDate = lastDateTime; }
private static void Display(TradeEventArgs args) => Program.Display(args.Trade);
private void plotBoughtStock(object sender, TradeEventArgs args) { buyPoints.Add(new StockData(args.Data.closingPrice, args.Data.date)); }
private void plotSoldStock(object sender, TradeEventArgs args) { propertyChanger.CurrentBalance = args.Balance.ToString(); sellPoints.Add(new StockData(args.Data.closingPrice, args.Data.date)); }
private void YGKFrq1UXP(object obj0, TradeEventArgs obj1) { this.Y18FFPmDy5((Quote)null, obj1.Trade, (Bar)null); }
private void ProviderManager_NewTrade(object sender, TradeEventArgs args) { this.counter.Add(args); }
private void OnNewTrade(object sender, TradeEventArgs args) { this.Process(null, args.Trade, null); }
private void OnTrade(object sender, TradeEventArgs e) { OnTrade(sender, e, CurrencyName.XRP); }
private void DrawPriceChart(TradeEventArgs e = null) { var candles = zedPrice.GraphPane.CurveList["candle"]; if (candles == null) { return; } StockPt point = null; var points = (StockPointList)candles.Points; if (e == null) { _currentTime = CurrentDate; var date = CurrentDate; var c = _controller.GetBitstampCandle(date, CurrencyName.BTC, TickPeriodMinutes.PeriodMinutes); point = new StockPt(new XDate(date).XLDate, c.High, c.Low, c.Open, c.Close, 0); } else { if (points.Count == 0) { return; } var pt = points.Last(); points.RemoveAt(points.Count - 1); if (_currentTime.HasValue) { _currentTime = CurrentDate; } if (e.Price > pt.High) { pt.High = e.Price; } if (e.Price < pt.Low) { pt.Low = e.Price; } point = new StockPt(new XDate(_currentTime.Value).XLDate, pt.High, pt.Low, pt.Open, e.Price, 0); } points.Add(point); Scale xScale = zedPrice.GraphPane.XAxis.Scale; if (_tickCount > xScale.Max - xScale.MajorStep) { xScale.Max = _tickCount + xScale.MajorStep; xScale.Min = xScale.Max - XScaleMax; } _tickCount++; //var elapsedMinutes = DateTime.UtcNow.Hour * 60 + DateTime.UtcNow.Minute; // temp!! //SetTimeAxis(elapsedMinutes - 30); SetPriceAxes(point.High - MinPriceOffset, point.High + MaxPriceOffset); DrawPriceLine(point.Close); UpdateZedControl(); }
internal void OnBitstampTradeReceived(object s, TradeEventArgs e) { //_mainWnd.ChangeControl(() => DrawPriceChart(e)); }
protected void OnTrade(object sender, TradeEventArgs e, CurrencyName instrument) { e.Instrument1 = instrument; _tradeHandler(((IExchange)sender).GetExchangeName(), e); }
public void WhenTradeUpdated(object sender, TradeEventArgs e) { OnPublicChannelTradeUpdated?.Invoke(this, new PublicChannelEventArgs(e.Trade.ToString())); }
public void Result(object sender, TradeEventArgs e) { Console.WriteLine($"Bank: {this.Name}"); Console.WriteLine(e.Message); }