コード例 #1
0
        /// <summary>
        /// Money Manager checks if the shoe or session should end based on stop loss, take profit, and bankroll
        /// Note that NextBet is committed here, because it is needed for the bankroll check.
        /// The call to betProgression advances the progression, if any.
        /// </summary>
        /// <param name="score"></param>
        /// <param name="betProgression"></param>
        /// <param name="mmShoe"></param>
        /// <param name="mmBankroll"></param>
        /// <returns></returns>
        private bool MoneyManager(decimal shoeTotalScore, decimal sessionTotalScore, BetProgressionCore betProgression, MoneyManagementShoe mmShoe, MoneyManagementBankroll mmBankroll)
        {
            if (mmShoe(shoeTotalScore))
            {
                return(true);
            }

            NextBet = betProgression(LastBetResult);
            if (mmBankroll(sessionTotalScore, NextBet))
            {
                return(true);
            }

            return(false);
        }
コード例 #2
0
ファイル: BetProgressions.cs プロジェクト: davejlin/autobetic
        private void SetBetProgression()
        {
            ResetBetLastUnitToBaseUnit();

            switch (_betProgressionType)
            {
            case BetProgressionTypes.FlatBet:
            {
                BetProgressionCore = BetProgression_FlatBet_Method;
            }
            break;

            case BetProgressionTypes.Martingale:
            {
                BetProgressionCore = BetProgression_Martingale_Method;
            }
            break;

            case BetProgressionTypes.DAlembert:
            {
                BetProgressionCore = BetProgression_DAlembert_Method;
            }
            break;

            case BetProgressionTypes.Parlay:
            {
                BetProgressionCore = BetProgression_Custom_Method;
            }
            break;

            case BetProgressionTypes.Custom:
            {
                BetProgressionCore = BetProgression_Custom_Method;
            }
            break;

            case BetProgressionTypes.Fibonacci:
            {
                BetProgressionCore = BetProgression_Fibonnaci_Method;
            }
            break;

            case BetProgressionTypes.Labouchere:
            {
                BetProgressionCore = BetProgression_Labouchere_Method;
            }
            break;

            case BetProgressionTypes.OscarsGrind:
            {
                BetProgressionCore = BetProgression_OscarsGrind_Method;
            }
            break;

            default:
            {
                BetProgressionCore = BetProgression_No_Method;
            }
            break;
            }
        }
コード例 #3
0
        private OutcomesBaccaratCoup StrategyCore_Follow(int i, List <ResultBaccaratCoup> results, ScoreBaccarat scoreShoe, decimal sessionTotalScore, BetProgressionCore betProgression, MoneyManagementShoe mmShoe, MoneyManagementBankroll mmBankroll)
        {
            if (i < Follow_Length)
            {
                Follow_BetPlacement = OutcomesBaccaratCoup.None;
                return(OutcomesBaccaratCoup.Continue);
            }

            int j = 1;
            OutcomesBaccaratCoup lastOutcome = results[i - j].OutcomeCoup;

            for (; j < Follow_Length; j++)
            {
                if (results[i - j - 1].OutcomeCoup != lastOutcome)
                {
                    break;
                }
            }

            if (j == Follow_Length)
            {
                if (lastOutcome != OutcomesBaccaratCoup.T)
                {
                    Follow_BetPlacement = lastOutcome;
                }
            }

            if (Follow_BetPlacement != OutcomesBaccaratCoup.None)
            {
                if (MoneyManager(scoreShoe.TotalScore, sessionTotalScore, betProgression, mmShoe, mmBankroll))
                {
                    return(OutcomesBaccaratCoup.Break);
                }

                ResultBaccaratCoup result = results[i];

                OutcomesBaccaratCoup betPlacement = Follow_BetPlacement;

                result.CoupBet.BetPlacement = betPlacement;
                result.CoupBet.UnitBet      = NextBet;

                OutcomesBaccaratCoup outcome = result.OutcomeCoup;

                if (outcome == betPlacement)
                {
                    if (outcome == OutcomesBaccaratCoup.B)
                    {
                        scoreShoe.ScoreBankerWin(NextBet);
                    }
                    else if (outcome == OutcomesBaccaratCoup.P)
                    {
                        scoreShoe.ScorePlayerWin(NextBet);
                    }
                    else if (outcome == OutcomesBaccaratCoup.T)
                    {
                        scoreShoe.ScoreTieWin(NextBet);
                    }

                    result.OutcomeBet = OutcomesLastCoupBet.Win;
                    LastBetResult     = result.OutcomeBet;
                }
                else
                {
                    if (outcome == OutcomesBaccaratCoup.T)
                    {
                        if (CustomPattern_BetPlacement != OutcomesBaccaratCoup.T)
                        {
                            result.OutcomeBet = OutcomesLastCoupBet.Push;
                            LastBetResult     = result.OutcomeBet;
                        }
                    }
                    else
                    {
                        scoreShoe.ScoreLoss(NextBet, betPlacement);

                        result.OutcomeBet = OutcomesLastCoupBet.Loss;
                        LastBetResult     = result.OutcomeBet;
                    }
                }
            }

            return(Follow_BetPlacement);
        }
コード例 #4
0
        private OutcomesBaccaratCoup StrategyCore_OppositeN(int i, List <ResultBaccaratCoup> results, ScoreBaccarat scoreShoe, decimal sessionTotalScore, BetProgressionCore betProgression, MoneyManagementShoe mmShoe, MoneyManagementBankroll mmBankroll)
        {
            if (i < CustomOpposite_Length)
            {
                return(OutcomesBaccaratCoup.Continue);
            }

            OutcomesBaccaratCoup outcomeN = results[i - CustomOpposite_Length].OutcomeCoup;

            if (outcomeN == OutcomesBaccaratCoup.T)
            {
                return(OutcomesBaccaratCoup.Continue);
            }

            if (MoneyManager(scoreShoe.TotalScore, sessionTotalScore, betProgression, mmShoe, mmBankroll))
            {
                return(OutcomesBaccaratCoup.Break);
            }

            ResultBaccaratCoup result = results[i];

            OutcomesBaccaratCoup betPlacement;

            if (outcomeN == OutcomesBaccaratCoup.B)
            {
                betPlacement = OutcomesBaccaratCoup.P;
            }
            else
            {
                betPlacement = OutcomesBaccaratCoup.B;
            }

            result.CoupBet.BetPlacement = betPlacement;
            result.CoupBet.UnitBet      = NextBet;

            OutcomesBaccaratCoup outcome = result.OutcomeCoup;

            if (betPlacement == outcome)
            {
                if (outcome == OutcomesBaccaratCoup.B)
                {
                    scoreShoe.ScoreBankerWin(NextBet);
                }
                else
                {
                    scoreShoe.ScorePlayerWin(NextBet);
                }

                result.OutcomeBet = OutcomesLastCoupBet.Win;
                LastBetResult     = OutcomesLastCoupBet.Win;
            }
            else
            {
                if (outcome == OutcomesBaccaratCoup.T)
                {
                    result.OutcomeBet = OutcomesLastCoupBet.Push;
                    LastBetResult     = OutcomesLastCoupBet.Push;
                }
                else
                {
                    scoreShoe.ScoreLoss(NextBet, betPlacement);

                    result.OutcomeBet = OutcomesLastCoupBet.Loss;
                    LastBetResult     = OutcomesLastCoupBet.Loss;
                }
            }

            return(betPlacement);
        }
コード例 #5
0
        private OutcomesBaccaratCoup StrategyCore_TieAlways(int i, List <ResultBaccaratCoup> results, ScoreBaccarat scoreShoe, decimal sessionTotalScore, BetProgressionCore betProgression, MoneyManagementShoe mmShoe, MoneyManagementBankroll mmBankroll)
        {
            if (MoneyManager(scoreShoe.TotalScore, sessionTotalScore, betProgression, mmShoe, mmBankroll))
            {
                return(OutcomesBaccaratCoup.Break);
            }

            ResultBaccaratCoup result = results[i];

            OutcomesBaccaratCoup betPlacement = OutcomesBaccaratCoup.T;

            result.CoupBet.BetPlacement = betPlacement;
            result.CoupBet.UnitBet      = NextBet;

            OutcomesBaccaratCoup outcome = result.OutcomeCoup;

            if (outcome == OutcomesBaccaratCoup.T)
            {
                scoreShoe.ScoreTieWin(NextBet);

                result.OutcomeBet = OutcomesLastCoupBet.Win;
                LastBetResult     = OutcomesLastCoupBet.Win;
            }
            else
            {
                scoreShoe.ScoreLoss(NextBet, betPlacement);

                result.OutcomeBet = OutcomesLastCoupBet.Loss;
                LastBetResult     = OutcomesLastCoupBet.Loss;
            }

            return(betPlacement);
        }
コード例 #6
0
        private OutcomesBaccaratCoup StrategyCore_None(int i, List <ResultBaccaratCoup> results, ScoreBaccarat scoreShoe, decimal sessionTotalScore, BetProgressionCore betProgression, MoneyManagementShoe mmShoe, MoneyManagementBankroll mmBankroll)
        {
            if (MoneyManager(scoreShoe.TotalScore, sessionTotalScore, betProgression, mmShoe, mmBankroll))
            {
                return(OutcomesBaccaratCoup.Break);
            }

            ResultBaccaratCoup result = results[i];

            OutcomesBaccaratCoup betPlacement = OutcomesBaccaratCoup.None;

            result.CoupBet.BetPlacement = betPlacement;
            result.CoupBet.UnitBet      = NextBet;

            return(betPlacement);
        }