Beispiel #1
0
        private void RunProcesses(CycleCoins cycleCoins)
        {
            this.RunProcessesComplete = false;

            Actions.RunProcesses runProcesses = new Actions.RunProcesses();
            runProcesses.OnComplete += RunProcesses_OnComplete;
            runProcesses.Start(cycleCoins, this.Browsers);
            while (!this.RunProcessesComplete)
            {
                Thread.Sleep(10);
            }
        }
Beispiel #2
0
        public static bool CheckAmountCondition(CycleCoins cycleCoins, decimal availablityMultiplier)
        {
            decimal premiumCoinAmount  = cycleCoins.PremiumCoinAmount;
            decimal discountCoinAmount = cycleCoins.DiscountCoinAmount;

            decimal premiumBuyableAmount   = cycleCoins.PremiumBuyableAmount;
            decimal premiumSellableAmount  = cycleCoins.PremiumSellableAmount;
            decimal discountBuyableAmount  = cycleCoins.DiscountBuyableAmount;
            decimal discountSellableAmount = cycleCoins.DiscountSellableAmount;


            return(premiumBuyableAmount >= premiumCoinAmount * availablityMultiplier &&
                   premiumSellableAmount >= premiumCoinAmount * availablityMultiplier &&
                   discountBuyableAmount >= discountCoinAmount * availablityMultiplier &&
                   discountSellableAmount >= discountCoinAmount * availablityMultiplier);
        }
Beispiel #3
0
        public void Start(CycleCoins cycleCoins, Dictionary <string, Chrome> browsers)
        {
            this.Browsers    = browsers;
            this.CycleCoins  = cycleCoins;
            this.CycleResult = new CycleResult();

            new Thread(new ThreadStart(() => // Premium Thread
            {
                PremiumProcess();
                if (this.CycleResult.Count == 4)
                {
                    this.OnComplete(this, new CycleCompleteEventArgs(this.CycleResult));
                }
            })).Start();

            new Thread(new ThreadStart(() => // Discount Thread
            {
                DiscountProcess();
                if (this.CycleResult.Count == 4)
                {
                    this.OnComplete(this, new CycleCompleteEventArgs(this.CycleResult));
                }
            })).Start();
        }
Beispiel #4
0
 public static bool CheckProfitCondition(CycleCoins cycleCoins, decimal profitThreshold)
 {
     return(cycleCoins.Profit >= profitThreshold);
 }
Beispiel #5
0
 public static bool CheckSameCoinCondition(CycleCoins cycleCoins)
 {
     return(cycleCoins.PremiumCoin.Name != cycleCoins.DiscountCoin.Name);
 }
Beispiel #6
0
        public void Start()
        {
            // Read the coins from config and set them up
            this.Coins = SetCoins();
            AttachBrowsers();
            SetBrowsers();

            // Settings
            decimal cycleMoney            = Properties.Settings.Default.CycleMoney;
            decimal profitThreshold       = Properties.Settings.Default.profitThreshold * (decimal)0.01;
            decimal availablityMultiplier = 2;



            while (true)                 // endless loop
            {
                if (this.ShouldRunCycle) // Cycle play
                {
                    Debug.Start();

                    // get prices
                    ParsePrices();
                    if (this.ParsePricesError)
                    {
                        Thread.Sleep(1000);
                        continue;
                    }


                    // find two coins to work with
                    CycleCoins cycleCoins = Actions.CycleCondition.FindCycleCoins(this.Coins, this.Prices);

                    // get amounts and availblities
                    cycleCoins.CalculateAmounts(cycleMoney);
                    double parsePriceElapsed = Debug.End(true);


                    // Check conditions
                    bool conditionMet =
                        Actions.CycleCondition.CheckSameCoinCondition(cycleCoins) &&
                        Actions.CycleCondition.CheckProfitCondition(cycleCoins, profitThreshold) &&
                        Actions.CycleCondition.CheckAmountCondition(cycleCoins, availablityMultiplier);

                    Console.WriteLine("\n-----------------------------------------------------------------------------------"); //
                    Console.WriteLine(String.Format("PremiumCoin:{0}, DiscountCoin:{1}, Profit:{2:P2}, ConditionMet:{4}, Elapsed:{3:0.000}sec", cycleCoins.PremiumCoin.Name, cycleCoins.DiscountCoin.Name, cycleCoins.Profit, parsePriceElapsed, conditionMet));
                    Console.WriteLine("PremiumAmt:{0:0.00000000}, Buyable: {1}, Sellable: {2} | DiscountAmt: {3:0.00000000}, Buyable: {4}, Sellable: {5}", cycleCoins.PremiumCoinAmount, cycleCoins.PremiumBuyableAmount, cycleCoins.PremiumSellableAmount, cycleCoins.DiscountCoinAmount, cycleCoins.DiscountBuyableAmount, cycleCoins.DiscountSellableAmount);
                    Console.WriteLine("-----------------------------------------------------------------------------------\n"); //


                    if (!conditionMet)
                    {
                        Thread.Sleep(1000);
                        continue;
                    }


                    //RunProcesses(cycleCoins);


                    Thread.Sleep(1000);// Test
                }

                else // Cycle stopped
                {
                    Thread.Sleep(1000);
                }
            }
        }