Exemplo n.º 1
0
 private void OnNewTrade(object sender, TradeEventArgs args)
 {
     if (this.HandleMarketData(args.Provider, args.Instrument))
     {
         this.metaStrategyBase.SetNewTrade(args);
     }
 }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
 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));
     }
 }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
 public void Add(TradeEventArgs args)
 {
     lock (this.lockObject)
     {
         this.GetProviderCounter((IProvider)((IntradayEventArgs)args).Provider).AddTrade(((IntradayEventArgs)args).Instrument);
         this.Trades.Increment();
     }
 }
Exemplo n.º 6
0
 private void ProviderManager_NewTrade(object sender, TradeEventArgs args)
 {
     lock (this)
     {
         ++this.countTrade;
         ++this.countMarketDataTotal;
     }
 }
Exemplo n.º 7
0
        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;
            }
        }
Exemplo n.º 8
0
        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
            });
        }
Exemplo n.º 9
0
 public void SaveTrade(TradeEventArgs args)
 {
     if (args.Exchange == ExchangeName.Bitmex)
     {
         _dbRepo.SaveBitmexTrade(args);
     }
     else
     {
         _dbRepo.SaveTrade(args);
     }
 }
Exemplo n.º 10
0
 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);
         }
     }
 }
Exemplo n.º 11
0
        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
            });
        }
Exemplo n.º 12
0
 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);
     }
 }
Exemplo n.º 13
0
        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
            });
        }
Exemplo n.º 14
0
        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);
                }
            }
        }
Exemplo n.º 15
0
 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;
     }));
 }
Exemplo n.º 16
0
        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);
                //}
            }
        }
Exemplo n.º 17
0
        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));
        }
Exemplo n.º 18
0
        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;
        }
Exemplo n.º 19
0
 private static void Display(TradeEventArgs args)
 => Program.Display(args.Trade);
Exemplo n.º 20
0
 private void plotBoughtStock(object sender, TradeEventArgs args)
 {
     buyPoints.Add(new StockData(args.Data.closingPrice, args.Data.date));
 }
Exemplo n.º 21
0
 private void plotSoldStock(object sender, TradeEventArgs args)
 {
     propertyChanger.CurrentBalance = args.Balance.ToString();
     sellPoints.Add(new StockData(args.Data.closingPrice, args.Data.date));
 }
Exemplo n.º 22
0
 private void YGKFrq1UXP(object obj0, TradeEventArgs obj1)
 {
     this.Y18FFPmDy5((Quote)null, obj1.Trade, (Bar)null);
 }
Exemplo n.º 23
0
 private void ProviderManager_NewTrade(object sender, TradeEventArgs args)
 {
     this.counter.Add(args);
 }
Exemplo n.º 24
0
 private void OnNewTrade(object sender, TradeEventArgs args)
 {
     this.Process(null, args.Trade, null);
 }
Exemplo n.º 25
0
 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));
 }
Exemplo n.º 28
0
 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()));
 }
Exemplo n.º 30
0
 public void Result(object sender, TradeEventArgs e)
 {
     Console.WriteLine($"Bank: {this.Name}");
     Console.WriteLine(e.Message);
 }