Esempio n. 1
0
        static async Task Main(string[] args)
        {
            var quitSignalled = new TaskCompletionSource <bool>();

            Console.CancelKeyPress += new ConsoleCancelEventHandler((sender, eventArgs) => {
                quitSignalled.SetResult(true);
                eventArgs.Cancel = true; // Prevent program from quitting right away
            });

            TriggerList tl = new TriggerList();

            RabbitHelper.CreateConsumer(RunCommands, tl);

            Console.WriteLine("Twig running...");
            Console.WriteLine("Press Ctrl-C to exit.");

            while (true)
            {
                var completed = await Task.WhenAny(quitSignalled.Task, Task.Delay(20000));

                Console.WriteLine("Polling");

                if (completed == quitSignalled.Task)
                {
                    break;
                }

                var tasks = tl.Keys.Select(async sym => {
                    if (tl[sym].ContainsKey("BUY"))
                    {
                        Trigger t = tl[sym]["BUY"].Max;
                        if (t != null)
                        {
                            tl.CheckBuy(sym, await QuoteHelper.GetQuote(t.User, sym, t.Tid));
                        }
                    }
                    if (tl[sym].ContainsKey("SELL"))
                    {
                        Trigger t = tl[sym]["SELL"].Min;
                        if (t != null)
                        {
                            tl.CheckSell(sym, await QuoteHelper.GetQuote(t.User, sym, t.Tid));
                        }
                    }
                    return;
                });
                await Task.WhenAll(tasks);
            }

            Console.WriteLine("Quitting...");
            Console.WriteLine("Done.");
            Environment.Exit(0);
        }
Esempio n. 2
0
        public void CheckSell(string Symbol, decimal StockPrice)
        {
            var SellStock = this[Symbol]["SELL"];

            while (SellStock.Count > 0 && SellStock.Min.Price <= StockPrice)
            {
                var sell = SellStock.Min;

                JObject twigTrigger = new JObject();
                JObject twigParams  = new JObject();
                twigTrigger.Add("usr", sell.User);
                twigTrigger.Add("cmd", "COMMIT_SELL_TRIGGER");
                twigTrigger.Add("queue", sell.Queue);
                twigParams.Add("stock", Symbol);
                twigParams.Add("price", StockPrice);
                twigTrigger.Add("params", twigParams);
                RabbitHelper.PushTrigger(twigTrigger);

                SellStock.Remove(sell);
            }
        }
Esempio n. 3
0
        public void CheckBuy(string Symbol, decimal StockPrice)
        {
            var BuyStock = this[Symbol]["BUY"];

            while (BuyStock.Count > 0 && BuyStock.Max.Price >= StockPrice)
            {
                var buy = BuyStock.Max;

                JObject twigTrigger = new JObject();
                JObject twigParams  = new JObject();
                twigTrigger.Add("usr", buy.User);
                twigTrigger.Add("cmd", "COMMIT_BUY_TRIGGER");
                twigTrigger.Add("queue", buy.Queue);
                twigParams.Add("stock", Symbol);
                twigParams.Add("price", StockPrice);
                twigTrigger.Add("params", twigParams);
                RabbitHelper.PushTrigger(twigTrigger);

                BuyStock.Remove(buy);
            }
        }