Пример #1
0
        public static void Main(string[] args)
        {
            log4net.Config.XmlConfigurator.Configure();

            if (args.Length < 1)
            {
                Console.Out.WriteLine("Arguments are: <numberOfEvents>");
                Environment.Exit(-1);
            }

            int events;

            try {
                events = Int32.Parse(args[0]);
            } catch (NullReferenceException) {
                Console.Out.WriteLine("Invalid numberOfEvents:" + args[0]);
                Environment.Exit(-2);
                return;
            }

            // Prime a few assemblies into memory
            StockTick  tempA = new StockTick(null, 0.0);
            PriceLimit tempB = new PriceLimit(null, null, 0.0);

            // Run the sample
            AutoIdSimMain autoIdSimMain = new AutoIdSimMain(events, "AutoIDSim");

            autoIdSimMain.Run();
        }
Пример #2
0
        public static void Main(string[] args)
        {
            LoggerNLog.BasicConfig();
            LoggerNLog.Register();

            if (args.Length < 1)
            {
                Console.Out.WriteLine("Arguments are: <numberOfEvents>");
                Environment.Exit(-1);
            }

            int events;

            try {
                events = int.Parse(args[0]);
            } catch (NullReferenceException) {
                Console.Out.WriteLine("Invalid numberOfEvents:" + args[0]);
                Environment.Exit(-2);
                return;
            }

            // Prime a few assemblies into memory
            var tempA = new StockTick(null, 0.0);
            var tempB = new PriceLimit(null, null, 0.0);

            // Run the sample
            var autoIdSimMain = new AutoIdSimMain(events, "AutoIDSim");

            autoIdSimMain.Run();
        }
Пример #3
0
 public LimitAlert(StockTick tick,
                   PriceLimit limit,
                   double initialPrice)
 {
     Tick         = tick;
     PriceLimit   = limit;
     InitialPrice = initialPrice;
 }
Пример #4
0
 public StockTickerAlertListener(
     EPRuntime runtime,
     PriceLimit limit,
     StockTick initialPriceTick,
     StockTickerResultListener stockTickerResultListener)
 {
     _limit                     = limit;
     _initialPriceTick          = initialPriceTick;
     _stockTickerResultListener = stockTickerResultListener;
 }
Пример #5
0
        public StockTickerMonitor(EPServiceProvider epService, PriceLimit limit,
                                  StockTickerResultListener stockTickerResultListener)
        {
            _epService = epService;
            _limit     = limit;
            _stockTickerResultListener = stockTickerResultListener;

            String expressionText = "every pricelimit=PriceLimit" +
                                    "(UserId='" + limit.UserId + "'," +
                                    "StockSymbol='" + limit.StockSymbol + "')";

            _newLimitListener         = epService.EPAdministrator.CreatePattern(expressionText);
            _newLimitListener.Events += HandleNewLimitEvent;

            expressionText                = "tick=StockTick(StockSymbol='" + limit.StockSymbol + "')";
            _initialPriceListener         = epService.EPAdministrator.CreatePattern(expressionText);
            _initialPriceListener.Events += HandleInitialPriceEvent;
        }
Пример #6
0
        public PriceLimit[] MakeLimits(String userName,
                                       int numBeans,
                                       double limit_pct_lower_boundary,
                                       double limit_pct_upper_boundary)
        {
            var limitBeans = new PriceLimit[numBeans];

            for (int i = 0; i < numBeans; i++)
            {
                String stockSymbol = "SYM_" + i;

                double diff     = limit_pct_upper_boundary - limit_pct_lower_boundary;
                double limitPct = limit_pct_lower_boundary + (_random.NextDouble() * diff);

                limitBeans[i] = new PriceLimit(userName, stockSymbol, To1tenthPrecision(limitPct));
            }

            return(limitBeans);
        }
Пример #7
0
        public StockTick MakeStockTick(PriceLimit limitBean, StockTick initialPrice)
        {
            String stockSymbol = limitBean.StockSymbol;
            double range       = initialPrice.Price * limitBean.LimitPct / 100;
            double price       = (initialPrice.Price - range + (range * 2 * _random.NextDouble()));

            double priceReducedPrecision = To1tenthPrecision(price);

            if (priceReducedPrecision < (initialPrice.Price - range))
            {
                priceReducedPrecision = initialPrice.Price;
            }

            if (priceReducedPrecision > (initialPrice.Price + range))
            {
                priceReducedPrecision = initialPrice.Price;
            }

            return(new StockTick(stockSymbol, priceReducedPrecision));
        }
Пример #8
0
        public StockTick MakeStockTick(PriceLimit limitBean,
                                       StockTick initialPrice)
        {
            var stockSymbol = limitBean.StockSymbol;
            var range       = initialPrice.Price * limitBean.LimitPct / 100;
            var price       = initialPrice.Price - range + range * 2 * _random.NextDouble();

            var priceReducedPrecision = To1tenthPrecision(price);

            if (priceReducedPrecision < initialPrice.Price - range)
            {
                priceReducedPrecision = initialPrice.Price;
            }

            if (priceReducedPrecision > initialPrice.Price + range)
            {
                priceReducedPrecision = initialPrice.Price;
            }

            return(new StockTick(stockSymbol, priceReducedPrecision));
        }
Пример #9
0
        private void HandleInitialPriceEvent(Object sender, UpdateEventArgs e)
        {
            var        tick  = (StockTick)e.NewEvents[0].Get("tick");
            PriceLimit limit = _limit;

            _initialPriceListener = null;

            double limitPct   = limit.LimitPct;
            double upperLimit = tick.Price * (1.0 + (limitPct / 100.0));
            double lowerLimit = tick.Price * (1.0 - (limitPct / 100.0));

            if (Log.IsDebugEnabled)
            {
                Log.Debug(".update Received initial tick, stock=" + tick.StockSymbol +
                          "  price=" + tick.Price +
                          "  limit.LimitPct=" + limitPct +
                          "  lowerLimit=" + lowerLimit +
                          "  upperLimit=" + upperLimit);
            }

            var listener =
                new StockTickerAlertListener(_epService,
                                             limit,
                                             tick,
                                             _stockTickerResultListener);

            String expressionText = "every tick=StockTick" +
                                    "(StockSymbol='" + limit.StockSymbol +
                                    "', Price < " + lowerLimit + ")";

            _lowPriceListener         = _epService.EPAdministrator.CreatePattern(expressionText);
            _lowPriceListener.Events += listener.Update;

            expressionText = "every tick=StockTick" +
                             "(StockSymbol='" + limit.StockSymbol + "', Price > " +
                             upperLimit + ")";
            _highPriceListener         = _epService.EPAdministrator.CreatePattern(expressionText);
            _highPriceListener.Events += listener.Update;
        }
Пример #10
0
        public StockTickerMonitor(
            EPRuntime runtime,
            PriceLimit limit,
            StockTickerResultListener stockTickerResultListener)
        {
            _runtime = runtime;
            _limit   = limit;
            _stockTickerResultListener = stockTickerResultListener;

            var expressionText = "every Pricelimit=PriceLimit" +
                                 "(UserId='" +
                                 limit.UserId +
                                 "'," +
                                 "StockSymbol='" +
                                 limit.StockSymbol +
                                 "')";

            _newLimitListener         = runtime.DeployStatement(expressionText);
            _newLimitListener.Events += HandleNewLimitEvent;

            expressionText                = "tick=StockTick(StockSymbol='" + limit.StockSymbol + "')";
            _initialPriceListener         = runtime.DeployStatement(expressionText);
            _initialPriceListener.Events += HandleInitialPriceEvent;
        }
Пример #11
0
 public StockTickerAlertListener(EPServiceProvider epService, PriceLimit limit, StockTick initialPriceTick, StockTickerResultListener stockTickerResultListener)
 {
     _limit                     = limit;
     _initialPriceTick          = initialPriceTick;
     _stockTickerResultListener = stockTickerResultListener;
 }
Пример #12
0
 private void SendEvent(PriceLimit @event)
 {
     _priceLimitSender.SendEvent(@event);
 }