示例#1
0
        public bool Setup(string _cookie, int _multiplier, double _loss_margin, double _win_margin, double _percent_bet, BettingSystem _bettingSystem, double _stake, bool _slowMode, double _dryRunAmount)
        {
            dryRun = _dryRunAmount > 0;

            multiplier = _multiplier < min_multiplier ? min_multiplier : _multiplier;
            multiplier = _multiplier > max_multiplier ? max_multiplier : _multiplier;

            cookie = _cookie;

            if (dryRun)
            {
                Dry.SetAmount(_dryRunAmount);
                Dry.Run(_multiplier);
            }
            else
            {
                codeEvaler = new CodeEvaler();
                codeEvaler.Run();
            }

            loss_margin = _loss_margin;
            win_margin  = _win_margin;

            percent_bet   = _percent_bet;
            bettingSystem = _bettingSystem;
            slowMode      = _slowMode;

            if (_stake == 0)
            {
                usePercentBet = true;

                Console.WriteLine("You're using '{8}' strategy with a multiplier of {0}, starting at {1:F8} BTC, a loss margin of {2:P0} or {3:F8} BTC, a win margin of {4:P0} or {5:F8} BTC and a minimum bet of {6:P2} or {7:F8} BTC.",
                                  multiplier, start, loss_margin, loss_margin * start, win_margin, (1 + win_margin) * start, percent_bet, percent_bet * money < min_bet ? min_bet : percent_bet * money, Enum.GetName(bettingSystem.GetType(), bettingSystem));
            }
            else
            {
                usePercentBet = false;
                base_stake    = _stake;

                Console.WriteLine("You're using '{7}' strategy with a multiplier of {0}, starting at {1:F8} BTC, a loss margin of {2:P0} or {3:F8} BTC, a win margin of {4:P0} or {5:F8} BTC and a minimum bet of {6:F8} BTC.",
                                  multiplier, start, loss_margin, loss_margin * start, win_margin, (1 + win_margin) * start, base_stake, Enum.GetName(bettingSystem.GetType(), bettingSystem));
            }

            Console.Write("\nPress \"n\" to stop or any other key to continue: ");
            if (Console.ReadLine().ToLower() == "n")
            {
                Console.WriteLine(" Stopped game by user.\n");
                return(false);
            }

            Think();
            return(true);
        }
        public BonusPairsAgent(int min_bet, int max_bet, double ev_cutoff, BettingSystem betting_system)
        {
            this.min_bet        = min_bet;
            this.max_bet        = max_bet;
            this.current_bet    = max_bet;
            this.ev_cutoff      = ev_cutoff;
            this.betting_system = betting_system;

            this.shoe = new Shoe(8);

            game_logger = new GameLogger();

            InitializeRound();
        }
示例#3
0
 public void UpdateBettingModeInstance(BettingSystem bettingMode)
 {
     if (bettingMode == BettingSystem.Martingale)
         _CurrentBettingModeInstance = new MartingaleBetting();
     else if (bettingMode == BettingSystem.LastNumberBetting)
         _CurrentBettingModeInstance = new LastNumberBetting();
     else if (bettingMode == BettingSystem.SingleStreakBetting)
         _CurrentBettingModeInstance = new SingleStreakBetting();
     else if (bettingMode == BettingSystem.TendencyBetting)
         _CurrentBettingModeInstance = new TendencyBetting();
     else if (bettingMode == BettingSystem.NumberNegligence)
         _CurrentBettingModeInstance = new NumberNegligenceBetting();
     else if (bettingMode == BettingSystem.JustLastNumber)
         _CurrentBettingModeInstance = new JustLastNumberBetting();
 }
示例#4
0
        static void MakeTestRun(int run_number, Random random, int targetRuns, double ev_cutoff, BettingSystem betting_system, ResetSystem reset)
        {
            Console.WriteLine(run_number + " - EV cutoff " + ev_cutoff + " " + betting_system);
            TextWriter deal_file = new StreamWriter(string.Format("expected{0}.txt", run_number));
            TextWriter roll_file = new StreamWriter(string.Format("roll{0}.txt", run_number));

            double pp_multiplier = 0;

            Rules rules = new Rules {
                Decks = 8, MinBet = 100, MaxBet = 20000, Splits = 3
            };

            //OptStrategy b = new OptStrategy(10000, ev_cutoff, pp_multiplier);
            BasicStrategy b = new BasicStrategy(20000, ev_cutoff, pp_multiplier, betting_system);

            Game game = new Game(rules, b, pp_multiplier, random);

            int start_roll = 20000 * 100;

            //game.PlayerMoney = 10000000; // 100000$
            game.PlayerMoney = start_roll;
            double expected_money = (double)game.PlayerMoney;

            game.Bet = 100;             // 1$

            double lowest = TotalMoney(game), highest = TotalMoney(game);
            int    runs = 0;

            double total_big_bet_ev = 0;
            double total_big_bet    = 0;
            int    num_big_bets     = 0;
            int    resets           = 0;

            int reset_counter = 0;

            bool written_200k = false;

            while (true)
            {
                double total_money = TotalMoney(game);

                if (total_money < lowest)
                {
                    lowest = total_money;
                }
                if (total_money > highest)
                {
                    highest = total_money;
                }

                if (runs % 5000 == 0)
                {
                    Console.WriteLine(runs + " " + (double)game.PlayerMoney / 100.0 + "$" + " pp: " + game.PartyPoints + " expected: " + expected_money / 100.0 + "$");
                    Console.WriteLine("lowest: " + (double)lowest + "$" + " highest: " + (double)highest + "$");
                    Console.WriteLine("Total: ${0}", game.PlayerMoney / 100.0);
                    Console.WriteLine("Expected: ${0}", expected_money / 100.0);

                    /*Console.WriteLine("Average big bet: {0:0.00} ({1:0.0000})",
                     *      (total_big_bet / 100.0) / num_big_bets,
                     *      (total_big_bet_ev / 100.0) / num_big_bets);
                     * Console.WriteLine("Resets {0} ({1:0.000}%)", resets, resets / (double)runs);
                     */
                    Console.WriteLine();
                }

                if (game.PlayerMoney <= 0)
                {
                    deal_file.WriteLine(expected_money / 100.0);
                    roll_file.WriteLine(game.PlayerMoney / 100.0);

                    Write200kResult(0);
                    WriteFinalResult(0);

                    break;
                }

                if (runs % 1000 == 0)
                {
                    //file.WriteLine(string.Format("{0} {1} {2} {3} {4} {5}", runs, game.PlayerMoney / 100.0, game.PartyPoints, total_money, lowest, highest));

                    deal_file.WriteLine(expected_money / 100.0);
                    roll_file.WriteLine(game.PlayerMoney / 100.0);

                    if (runs >= targetRuns)
                    {
                        if (!written_200k)
                        {
                            Write200kResult(game.PlayerMoney / 100.0);
                            written_200k = true;
                        }

                        if (game.PlayerMoney >= start_roll)
                        {
                            WriteFinalResult(game.PlayerMoney / 100.0);
                            break;
                        }
                    }

                    //if (game.party_points >= 20000) break;
                }

                if (reset_counter > 0)
                {
                    reset_counter--;
                    runs++;
                    continue;
                }
                if (reset != null && reset.Reset(52 * game.Rules.Decks - game.Shoe.Count, b.ShoeEV()))
                {
                    resets++;
                    runs++;
                    reset_counter = 1;
                    game.ResetShoe();

                    continue;
                }


                b.CurrentRoll = game.PlayerMoney;

                Shoe shoe = new Shoe(8);
                shoe.Clear();
                shoe.Add(game.Shoe);

                game.StartRound();
                game.DealRound();

                Card p1 = game.PlayerHandSet[0][0],
                     p2 = game.PlayerHandSet[0][1],
                     d  = game.DealerHand[0];

                shoe.Remove(p1);
                shoe.Remove(p2);
                shoe.Remove(d);

                BjEval.Eval.CacheDealerProbs(d.PointValue, shoe.ToArray());
                double deal_ev = BjEval.Eval.DealEv(
                    p1.PointValue,
                    p2.PointValue,
                    d.PointValue,
                    shoe.ToArray(),
                    game.Bet);

                //Console.WriteLine("EV: {0} {1} {2} {3} {4}", p1.PointValue, p2.PointValue, d.PointValue, shoe.CardCount, deal_ev);

                expected_money += deal_ev * game.Bet;

                if (game.Bet > 100)
                {
                    total_big_bet    += game.Bet;
                    total_big_bet_ev += game.Bet * deal_ev;
                    num_big_bets++;
                }

                runs++;
            }

            deal_file.Close();
            roll_file.Close();

            b.Stop();
        }
示例#5
0
        public static void Main(string[] args)
        {
            Console.WriteLine("Welcome to the automatic freebitco.in multiplier.\nLet's begin ;-)\n");

            int           multiplier    = 2;
            double        loss_margin   = 0.7f;
            double        win_margin    = 0.3f;
            double        percent_bet   = 0.01f;
            double        stake         = 0;
            bool          slowMode      = false;
            double        dryRunAmount  = 0;
            string        cookie        = "";
            BettingSystem bettingSystem = BettingSystem.Martingale;

            try
            {
                if (args.Length > 0)
                {
                    for (int i = 0; i < args.Length; i++)
                    {
                        switch (args[i])
                        {
                        case "-x":
                            if (i < args.Length - 1 && args[i + 1] != null)
                            {
                                multiplier = int.Parse(args[i + 1]);
                            }
                            break;

                        case "-m":
                            if (i < args.Length - 1 && args[i + 1] != null)
                            {
                                bettingSystem = (BettingSystem)int.Parse(args[i + 1]);
                            }
                            break;

                        case "-l":
                            if (i < args.Length - 1 && args[i + 1] != null)
                            {
                                loss_margin = double.Parse(args[i + 1]) / 100;
                            }
                            break;

                        case "-w":
                            if (i < args.Length - 1 && args[i + 1] != null)
                            {
                                win_margin = double.Parse(args[i + 1]) / 100;
                            }
                            break;

                        case "-p":
                            if (i < args.Length - 1 && args[i + 1] != null)
                            {
                                percent_bet = double.Parse(args[i + 1]) / 100;
                            }
                            break;

                        case "-b":
                            if (i < args.Length - 1 && args[i + 1] != null)
                            {
                                if (!double.TryParse(args[i + 1], out stake) && args[i + 1].ToLower() == "min")
                                {
                                    stake = 0.00000001f;
                                }
                            }
                            break;

                        case "-s":
                            slowMode = true;
                            break;

                        case "-d":
                            if (i < args.Length - 1 && args[i + 1] != null)
                            {
                                dryRunAmount = double.Parse(args[i + 1]);
                            }
                            break;

                        case "-c":
                            if (i < args.Length - 1 && args[i + 1] != null)
                            {
                                cookie = args[i + 1];
                            }
                            break;

                        case "-h":
                            Console.WriteLine("Use the following options:\n -c \"cookie\" [none]\t\tSet the cookie that needs to be used. Use double quotes to wrap the entire string and seperate values with a semicolon.\n -l Number   [70]\t\tPercent of starting amount least to reach (loss).\n -w Number   [30]\t\tPercent of profit most to reach (win).\n -b Number   [0]  or min\tSet the game's minimum bet. Use 'min' for 0.00000001 BTC. (Overrides any percent bet, -p).\n -p Number   [1]\t\tSet the game's minimum bet based on percentage of total money.\n -m Number   [1]\t\tSet the game's betting strategy. Use 1 For Martingale, 2 for Anti-Martingale, 3 for Fixed bet or 4 for Minimal bet.\n -d Number   [0]\t\tSimulate the game (dry run).\n -s      \t\t\tGo slowly, confirming each bet.\n -h      \t\t\tShow this help.");
                            return;
                        }
                    }
                }

                if (!CleverBet.Instance.Setup(cookie, multiplier, loss_margin, win_margin, percent_bet, bettingSystem, stake, slowMode, dryRunAmount))
                {
                    return;
                }

                Console.WriteLine();

                Console.CancelKeyPress += Console_CancelKeyPress;

                while (CleverBet.Instance.CanBet())
                {
                    CleverBet.Instance.Bet();
                    CleverBet.Instance.Think();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("An error occured, {0}", ex.Message);
            }

            Console.WriteLine(CleverBet.Instance.GetResults());
        }
示例#6
0
 public BasicStrategy(int max_bet, double ev_cutoff, double pp_multiplier, BettingSystem betting_system)
     : this(max_bet, ev_cutoff, pp_multiplier)
 {
     this.betting_system = betting_system;
 }
        public bool Setup(string _cookie, int _multiplier, double _loss_margin, double _win_margin, double _percent_bet, BettingSystem _bettingSystem, double _stake, bool _slowMode, double _dryRunAmount)
        {
            dryRun = _dryRunAmount > 0;

            multiplier = _multiplier < min_multiplier ? min_multiplier : _multiplier;
            multiplier = _multiplier > max_multiplier ? max_multiplier : _multiplier;

            cookie = _cookie;

            if (dryRun)
            {
                Dry.SetAmount(_dryRunAmount);
                Dry.Run(_multiplier);
            }
            else
            {
                codeEvaler = new CodeEvaler();
                codeEvaler.Run();
            }

            loss_margin = _loss_margin;
            win_margin = _win_margin;

            percent_bet = _percent_bet;
            bettingSystem = _bettingSystem;
            slowMode = _slowMode;

            if (_stake == 0)
            {
                usePercentBet = true;

                Console.WriteLine("You're using '{8}' strategy with a multiplier of {0}, starting at {1:F8} BTC, a loss margin of {2:P0} or {3:F8} BTC, a win margin of {4:P0} or {5:F8} BTC and a minimum bet of {6:P2} or {7:F8} BTC.",
                    multiplier, start, loss_margin, loss_margin * start, win_margin, (1 + win_margin) * start, percent_bet, percent_bet * money < min_bet ? min_bet : percent_bet * money, Enum.GetName(bettingSystem.GetType(), bettingSystem));
            }
            else
            {
                usePercentBet = false;
                base_stake = _stake;

                Console.WriteLine("You're using '{7}' strategy with a multiplier of {0}, starting at {1:F8} BTC, a loss margin of {2:P0} or {3:F8} BTC, a win margin of {4:P0} or {5:F8} BTC and a minimum bet of {6:F8} BTC.",
                    multiplier, start, loss_margin, loss_margin * start, win_margin, (1 + win_margin) * start, base_stake, Enum.GetName(bettingSystem.GetType(), bettingSystem));
            }

            Console.Write("\nPress \"n\" to stop or any other key to continue: ");
            if (Console.ReadLine().ToLower() == "n")
            {
                Console.WriteLine(" Stopped game by user.\n");
                return false;
            }

            Think();
            return true;
        }