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); } }
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); }
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(); }
public static bool CheckProfitCondition(CycleCoins cycleCoins, decimal profitThreshold) { return(cycleCoins.Profit >= profitThreshold); }
public static bool CheckSameCoinCondition(CycleCoins cycleCoins) { return(cycleCoins.PremiumCoin.Name != cycleCoins.DiscountCoin.Name); }
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); } } }