Esempio n. 1
0
 public static BetToAssociateGvVM ToBetToAssociateGvVM(BetToDisplayGvVM betToDisplayGvVM)
 {
     return(new BetToAssociateGvVM
     {
         Id = betToDisplayGvVM.Id,
         LocalTimestamp = betToDisplayGvVM.LocalTimestamp,
         TipsterName = betToDisplayGvVM.TipsterName,
         LeagueName = betToDisplayGvVM.LeagueName,
         MatchHomeName = betToDisplayGvVM.MatchHomeName,
         MatchAwayName = betToDisplayGvVM.MatchAwayName,
         MatchId = betToDisplayGvVM.MatchId
     });
 }
Esempio n. 2
0
 public static BetRequest ToBetRequest(BetToDisplayGvVM betToDisplayGvVm)
 {
     return(new BetRequest
     {
         Date = betToDisplayGvVm.LocalTimestamp.ToUTC(),
         Discipline = betToDisplayGvVm.Discipline,
         LeagueName = betToDisplayGvVm.LeagueName,
         MatchHomeName = betToDisplayGvVm.MatchHomeName,
         MatchAwayName = betToDisplayGvVm.MatchAwayName,
         PickChoice = betToDisplayGvVm.PickChoice,
         PickValue = betToDisplayGvVm.PickValue,
         Stake = betToDisplayGvVm.Stake,
         MatchId = betToDisplayGvVm.MatchId
     });
 }
Esempio n. 3
0
        public static BetToDisplayGvVM ToBetToDisplayGvVM(DbBet dbBet)
        {
            var betToDisplayVM = new BetToDisplayGvVM();
            var matchResult    = MatchConverter.ToMatchResultResponse(dbBet.OriginalMatchResultString);

            betToDisplayVM.IsAssociatedWithArbitraryData = dbBet.MatchId != null;

            betToDisplayVM.Id                  = dbBet.Id;
            betToDisplayVM.BetResult           = (dbBet.BetResult ?? dbBet.OriginalBetResult).ToEnum <BetResult>();
            betToDisplayVM.IsBetResultOriginal = dbBet.BetResult == null;
            betToDisplayVM.Odds                = dbBet.Odds;

            betToDisplayVM.TipsterName    = dbBet.Tipster?.Name;
            betToDisplayVM.TipsterWebsite = dbBet.Tipster?.Link?.UrlToDomain();

            betToDisplayVM.MatchHomeName           = dbBet.Match?.Home?.Name ?? dbBet.OriginalHomeName;
            betToDisplayVM.IsMatchHomeNameOriginal = dbBet.Match?.Home?.Name == null;
            betToDisplayVM.MatchAwayName           = dbBet.Match?.Away?.Name ?? dbBet.OriginalAwayName;
            betToDisplayVM.IsMatchAwayNameOriginal = dbBet.Match?.Away?.Name == null;
            betToDisplayVM.SetUnparsedMatchString(dbBet.OriginalHomeName, dbBet.OriginalAwayName);
            betToDisplayVM.MatchHomeScore           = dbBet.Match?.HomeScore ?? matchResult.HomeScore;
            betToDisplayVM.IsMatchHomeScoreOriginal = dbBet.Match?.HomeScore == null;
            betToDisplayVM.MatchAwayScore           = dbBet.Match?.AwayScore ?? matchResult.AwayScore;
            betToDisplayVM.IsMatchAwayScoreOriginal = dbBet.Match?.AwayScore == null;
            betToDisplayVM.LocalTimestamp           = (dbBet.Match?.Date ?? dbBet.OriginalDate).ToExtendedTime().ToLocal();
            betToDisplayVM.IsLocalTimestampOriginal = dbBet.Match?.Date == null;
            betToDisplayVM.Discipline           = dbBet.Match?.League?.Discipline?.Name.ToEnum <DisciplineType>() ?? dbBet.OriginalDiscipline?.ToEnum <DisciplineType>();
            betToDisplayVM.IsDisciplineOriginal = dbBet.Match?.League?.Discipline == null;
            betToDisplayVM.LeagueName           = dbBet.Match?.League?.Name ?? dbBet.OriginalLeagueName;
            betToDisplayVM.IsLeagueNameOriginal = dbBet.Match?.League == null;

            betToDisplayVM.PickChoice = dbBet.Pick.Choice.ToEnum <PickChoice>();
            betToDisplayVM.PickValue  = dbBet.Pick.Value;
            betToDisplayVM.SetUnparsedPickString(dbBet.OriginalPickString);

            betToDisplayVM.MatchId = dbBet.MatchId;
            betToDisplayVM.TriedAssociateWithMatch = dbBet.TriedAssociateWithMatch != null && dbBet.TriedAssociateWithMatch >= 1;

            return(betToDisplayVM);
        }
Esempio n. 4
0
        public static BetToDisplayGvVM CopyBetToDisplayGvVM(BetToDisplayGvVM oldBetToDisplayGvVM)
        {
            var betToDisplayVM = new BetToDisplayGvVM();

            betToDisplayVM.IsAssociatedWithArbitraryData = oldBetToDisplayGvVM.IsAssociatedWithArbitraryData;

            betToDisplayVM.Id                      = oldBetToDisplayGvVM.Id;
            betToDisplayVM.BetResult               = oldBetToDisplayGvVM.BetResult;
            betToDisplayVM.IsBetResultOriginal     = oldBetToDisplayGvVM.IsBetResultOriginal;
            betToDisplayVM.Odds                    = oldBetToDisplayGvVM.Odds;
            betToDisplayVM.TipsterName             = oldBetToDisplayGvVM.TipsterName;
            betToDisplayVM.TipsterWebsite          = oldBetToDisplayGvVM.TipsterWebsite;
            betToDisplayVM.MatchHomeName           = oldBetToDisplayGvVM.MatchHomeName;
            betToDisplayVM.IsMatchHomeNameOriginal = oldBetToDisplayGvVM.IsMatchHomeNameOriginal;
            betToDisplayVM.MatchAwayName           = oldBetToDisplayGvVM.MatchAwayName;
            betToDisplayVM.IsMatchAwayNameOriginal = oldBetToDisplayGvVM.IsMatchAwayNameOriginal;
            var teamSeparator       = " - ";
            var unparsedMatchString = oldBetToDisplayGvVM.GetUnparsedMatchString();

            betToDisplayVM.SetUnparsedMatchString(unparsedMatchString.BeforeFirst(teamSeparator), unparsedMatchString.AfterFirst(teamSeparator));
            betToDisplayVM.MatchHomeScore           = oldBetToDisplayGvVM.MatchHomeScore;
            betToDisplayVM.IsMatchHomeScoreOriginal = oldBetToDisplayGvVM.IsMatchHomeScoreOriginal;
            betToDisplayVM.MatchAwayScore           = oldBetToDisplayGvVM.MatchAwayScore;
            betToDisplayVM.IsMatchAwayScoreOriginal = oldBetToDisplayGvVM.IsMatchAwayScoreOriginal;
            betToDisplayVM.LocalTimestamp           = oldBetToDisplayGvVM.LocalTimestamp;
            betToDisplayVM.IsLocalTimestampOriginal = oldBetToDisplayGvVM.IsLocalTimestampOriginal;
            betToDisplayVM.Discipline           = oldBetToDisplayGvVM.Discipline;
            betToDisplayVM.IsDisciplineOriginal = oldBetToDisplayGvVM.IsDisciplineOriginal;
            betToDisplayVM.LeagueName           = oldBetToDisplayGvVM.LeagueName;
            betToDisplayVM.IsLeagueNameOriginal = oldBetToDisplayGvVM.IsLeagueNameOriginal;

            betToDisplayVM.PickChoice = oldBetToDisplayGvVM.PickChoice;
            betToDisplayVM.PickValue  = oldBetToDisplayGvVM.PickValue;
            betToDisplayVM.SetUnparsedPickString(oldBetToDisplayGvVM.GetUnparsedPickString());
            betToDisplayVM.MatchId = oldBetToDisplayGvVM.MatchId;

            betToDisplayVM.TriedAssociateWithMatch = oldBetToDisplayGvVM.TriedAssociateWithMatch;

            return(betToDisplayVM);
        }
Esempio n. 5
0
        private void ApplyStakingForIndividual()
        {
            var betsVM                   = new List <BetToDisplayGvVM>();
            var currNr                   = 1;
            var currentBudget            = Budget;
            var previousBudget           = Budget;
            var maxBudget                = Budget;
            var areLost                  = new List <bool>();
            BetToDisplayGvVM previousBet = null;

            foreach (var bet in FilteredBets)
            {
                var betVM     = bet.Copy();
                var currStake = CalculateStakeChangedWithBudget(currentBudget, previousBudget, maxBudget);

                if (previousBet != null)
                {
                    var isPrevLost = IsLost(currentBudget, previousBudget, maxBudget);
                    areLost.Add(isPrevLost);
                    var maxOrPrevBudget = GetBudgetForRef(previousBudget, maxBudget);
                    var lostInARow      = areLost.AsEnumerable().Reverse().TakeWhile(b => b).Count();
                    var wonInARow       = areLost.AsEnumerable().Reverse().TakeWhile(b => !b).Count();
                    var lostMoney       = maxOrPrevBudget - currentBudget;

                    currStake = CalculateStake(currStake, isPrevLost, betsVM.LastOrNull(), lostInARow, wonInARow, lostMoney, betVM.Odds, 1, currentBudget);
                }

                previousBudget = currentBudget; // przed uzyskaniem profitu lub straty
                maxBudget      = Math.Max(currentBudget, maxBudget);
                previousBet    = betVM;
                betVM.Stake    = currStake;
                betVM.Nr       = currNr++;
                betVM.CalculateProfit(currStake, ref currentBudget);
                betsVM.Add(betVM);
            }

            LosesCounter = GetLosesCounter(areLost);
            WinsCounter  = GetWinsCounter(areLost);
            Bets         = betsVM;
        }
Esempio n. 6
0
        private double CalculateStake(double currStake, bool isLost, BetToDisplayGvVM previousBet, int lostInARow, int wonInARow, double lostMoney, double totalOdds, int groupSize, double budget)
        {
            if (previousBet == null)
            {
                return(currStake);
            }

            if (StakingTypeOnLose == StakingTypeOnLose.Flat && StakingTypeOnWin == StakingTypeOnWin.Flat)
            {
                currStake = new FlatFlatStaking(isLost, currStake, previousBet.Stake, ResetStake).Apply();
            }
            else if (StakingTypeOnLose == StakingTypeOnLose.Add && StakingTypeOnWin == StakingTypeOnWin.Flat)
            {
                currStake = new AddFlatStaking(isLost, currStake, previousBet.Stake, ResetStake, LoseCoefficient, lostInARow, groupSize).Apply();
            }
            else if (StakingTypeOnLose == StakingTypeOnLose.Subtract && StakingTypeOnWin == StakingTypeOnWin.Flat)
            {
                currStake = new SubtractFlatStaking(isLost, currStake, previousBet.Stake, ResetStake, LoseCoefficient, lostInARow, groupSize).Apply();
            }
            else if (StakingTypeOnLose == StakingTypeOnLose.Multiply && StakingTypeOnWin == StakingTypeOnWin.Flat)
            {
                currStake = new MultiplyFlatStaking(isLost, currStake, previousBet.Stake, ResetStake, LoseCoefficient, lostInARow, groupSize).Apply();
            }
            else if (StakingTypeOnLose == StakingTypeOnLose.Divide && StakingTypeOnWin == StakingTypeOnWin.Flat)
            {
                currStake = new DivideFlatStaking(isLost, currStake, previousBet.Stake, ResetStake, LoseCoefficient, lostInARow, groupSize).Apply();
            }
            else if (StakingTypeOnLose == StakingTypeOnLose.CoverPercentOfLoses && StakingTypeOnWin == StakingTypeOnWin.Flat)
            {
                currStake = new CoverPercentOfLosesFlatStaking(isLost, currStake, previousBet.Stake, ResetStake, LoseCoefficient, lostMoney, totalOdds, groupSize).Apply();
            }
            else if (StakingTypeOnLose == StakingTypeOnLose.UsePercentOfBudget && StakingTypeOnWin == StakingTypeOnWin.Flat)
            {
                currStake = new PercentOfBudgetFlatStaking(isLost, currStake, previousBet.Stake, ResetStake, LoseCoefficient, budget, totalOdds, groupSize).Apply();
            }

            else if (StakingTypeOnLose == StakingTypeOnLose.Flat && StakingTypeOnWin == StakingTypeOnWin.Add)
            {
                currStake = new FlatAddStaking(isLost, currStake, previousBet.Stake, ResetStake, WinCoefficient, wonInARow, groupSize).Apply();
            }
            else if (StakingTypeOnLose == StakingTypeOnLose.Add && StakingTypeOnWin == StakingTypeOnWin.Add)
            {
                currStake = new AddAddStaking(isLost, currStake, previousBet.Stake, ResetStake, LoseCoefficient, WinCoefficient, lostInARow, wonInARow, groupSize).Apply();
            }
            else if (StakingTypeOnLose == StakingTypeOnLose.Subtract && StakingTypeOnWin == StakingTypeOnWin.Add)
            {
                currStake = new SubtractAddStaking(isLost, currStake, previousBet.Stake, ResetStake, LoseCoefficient, WinCoefficient, lostInARow, wonInARow, groupSize).Apply();
            }
            else if (StakingTypeOnLose == StakingTypeOnLose.Multiply && StakingTypeOnWin == StakingTypeOnWin.Add)
            {
                currStake = new MultiplyAddStaking(isLost, currStake, previousBet.Stake, ResetStake, LoseCoefficient, WinCoefficient, lostInARow, wonInARow, groupSize).Apply();
            }
            else if (StakingTypeOnLose == StakingTypeOnLose.Divide && StakingTypeOnWin == StakingTypeOnWin.Add)
            {
                currStake = new DivideAddStaking(isLost, currStake, previousBet.Stake, ResetStake, LoseCoefficient, WinCoefficient, lostInARow, wonInARow, groupSize).Apply();
            }
            else if (StakingTypeOnLose == StakingTypeOnLose.CoverPercentOfLoses && StakingTypeOnWin == StakingTypeOnWin.Add)
            {
                currStake = new CoverPercentOfLosesAddStaking(isLost, currStake, previousBet.Stake, ResetStake, LoseCoefficient, WinCoefficient, lostInARow, wonInARow, lostMoney, totalOdds, groupSize).Apply();
            }
            else if (StakingTypeOnLose == StakingTypeOnLose.UsePercentOfBudget && StakingTypeOnWin == StakingTypeOnWin.Add)
            {
                currStake = new PercentOfBudgetAddStaking(isLost, currStake, previousBet.Stake, ResetStake, LoseCoefficient, WinCoefficient, lostInARow, wonInARow, budget, totalOdds, groupSize).Apply();
            }

            else if (StakingTypeOnLose == StakingTypeOnLose.Flat && StakingTypeOnWin == StakingTypeOnWin.Subtract)
            {
                currStake = new FlatSubtractStaking(isLost, currStake, previousBet.Stake, ResetStake, WinCoefficient, wonInARow, groupSize).Apply();
            }
            else if (StakingTypeOnLose == StakingTypeOnLose.Add && StakingTypeOnWin == StakingTypeOnWin.Subtract)
            {
                currStake = new AddSubtractStaking(isLost, currStake, previousBet.Stake, ResetStake, LoseCoefficient, WinCoefficient, lostInARow, wonInARow, groupSize).Apply();
            }
            else if (StakingTypeOnLose == StakingTypeOnLose.Subtract && StakingTypeOnWin == StakingTypeOnWin.Subtract)
            {
                currStake = new SubtractSubtractStaking(isLost, currStake, previousBet.Stake, ResetStake, LoseCoefficient, WinCoefficient, lostInARow, wonInARow, groupSize).Apply();
            }
            else if (StakingTypeOnLose == StakingTypeOnLose.Multiply && StakingTypeOnWin == StakingTypeOnWin.Subtract)
            {
                currStake = new MultiplySubtractStaking(isLost, currStake, previousBet.Stake, ResetStake, LoseCoefficient, WinCoefficient, lostInARow, wonInARow, groupSize).Apply();
            }
            else if (StakingTypeOnLose == StakingTypeOnLose.Divide && StakingTypeOnWin == StakingTypeOnWin.Subtract)
            {
                currStake = new DivideSubtractStaking(isLost, currStake, previousBet.Stake, ResetStake, LoseCoefficient, WinCoefficient, lostInARow, wonInARow, groupSize).Apply();
            }
            else if (StakingTypeOnLose == StakingTypeOnLose.CoverPercentOfLoses && StakingTypeOnWin == StakingTypeOnWin.Subtract)
            {
                currStake = new CoverPercentOfLosesSubtractStaking(isLost, currStake, previousBet.Stake, ResetStake, LoseCoefficient, WinCoefficient, lostInARow, wonInARow, lostMoney, totalOdds, groupSize).Apply();
            }
            else if (StakingTypeOnLose == StakingTypeOnLose.UsePercentOfBudget && StakingTypeOnWin == StakingTypeOnWin.Subtract)
            {
                currStake = new PercentOfBudgetSubtractStaking(isLost, currStake, previousBet.Stake, ResetStake, LoseCoefficient, WinCoefficient, lostInARow, wonInARow, budget, totalOdds, groupSize).Apply();
            }

            else if (StakingTypeOnLose == StakingTypeOnLose.Flat && StakingTypeOnWin == StakingTypeOnWin.Multiply)
            {
                currStake = new FlatMultiplyStaking(isLost, currStake, previousBet.Stake, ResetStake, WinCoefficient, wonInARow, groupSize).Apply();
            }
            else if (StakingTypeOnLose == StakingTypeOnLose.Add && StakingTypeOnWin == StakingTypeOnWin.Multiply)
            {
                currStake = new AddMultiplyStaking(isLost, currStake, previousBet.Stake, ResetStake, LoseCoefficient, WinCoefficient, lostInARow, wonInARow, groupSize).Apply();
            }
            else if (StakingTypeOnLose == StakingTypeOnLose.Subtract && StakingTypeOnWin == StakingTypeOnWin.Multiply)
            {
                currStake = new SubtractMultiplyStaking(isLost, currStake, previousBet.Stake, ResetStake, LoseCoefficient, WinCoefficient, lostInARow, wonInARow, groupSize).Apply();
            }
            else if (StakingTypeOnLose == StakingTypeOnLose.Multiply && StakingTypeOnWin == StakingTypeOnWin.Multiply)
            {
                currStake = new MultiplyMultiplyStaking(isLost, currStake, previousBet.Stake, ResetStake, LoseCoefficient, WinCoefficient, lostInARow, wonInARow, groupSize).Apply();
            }
            else if (StakingTypeOnLose == StakingTypeOnLose.Divide && StakingTypeOnWin == StakingTypeOnWin.Multiply)
            {
                currStake = new DivideMultiplyStaking(isLost, currStake, previousBet.Stake, ResetStake, LoseCoefficient, WinCoefficient, lostInARow, wonInARow, groupSize).Apply();
            }
            else if (StakingTypeOnLose == StakingTypeOnLose.CoverPercentOfLoses && StakingTypeOnWin == StakingTypeOnWin.Multiply)
            {
                currStake = new CoverPercentOfLosesMultiplyStaking(isLost, currStake, previousBet.Stake, ResetStake, LoseCoefficient, WinCoefficient, lostInARow, wonInARow, lostMoney, totalOdds, groupSize).Apply();
            }
            else if (StakingTypeOnLose == StakingTypeOnLose.UsePercentOfBudget && StakingTypeOnWin == StakingTypeOnWin.Multiply)
            {
                currStake = new PercentOfBudgetMultiplyStaking(isLost, currStake, previousBet.Stake, ResetStake, LoseCoefficient, WinCoefficient, lostInARow, wonInARow, budget, totalOdds, groupSize).Apply();
            }

            else if (StakingTypeOnLose == StakingTypeOnLose.Flat && StakingTypeOnWin == StakingTypeOnWin.Divide)
            {
                currStake = new FlatDivideStaking(isLost, currStake, previousBet.Stake, ResetStake, WinCoefficient, wonInARow, groupSize).Apply();
            }
            else if (StakingTypeOnLose == StakingTypeOnLose.Add && StakingTypeOnWin == StakingTypeOnWin.Divide)
            {
                currStake = new AddDivideStaking(isLost, currStake, previousBet.Stake, ResetStake, LoseCoefficient, WinCoefficient, lostInARow, wonInARow, groupSize).Apply();
            }
            else if (StakingTypeOnLose == StakingTypeOnLose.Subtract && StakingTypeOnWin == StakingTypeOnWin.Divide)
            {
                currStake = new SubtractDivideStaking(isLost, currStake, previousBet.Stake, ResetStake, LoseCoefficient, WinCoefficient, lostInARow, wonInARow, groupSize).Apply();
            }
            else if (StakingTypeOnLose == StakingTypeOnLose.Multiply && StakingTypeOnWin == StakingTypeOnWin.Divide)
            {
                currStake = new MultiplyDivideStaking(isLost, currStake, previousBet.Stake, ResetStake, LoseCoefficient, WinCoefficient, lostInARow, wonInARow, groupSize).Apply();
            }
            else if (StakingTypeOnLose == StakingTypeOnLose.Divide && StakingTypeOnWin == StakingTypeOnWin.Divide)
            {
                currStake = new DivideDivideStaking(isLost, currStake, previousBet.Stake, ResetStake, LoseCoefficient, WinCoefficient, lostInARow, wonInARow, groupSize).Apply();
            }
            else if (StakingTypeOnLose == StakingTypeOnLose.CoverPercentOfLoses && StakingTypeOnWin == StakingTypeOnWin.Divide)
            {
                currStake = new CoverPercentOfLosesDivideStaking(isLost, currStake, previousBet.Stake, ResetStake, LoseCoefficient, WinCoefficient, lostInARow, wonInARow, lostMoney, totalOdds, groupSize).Apply();
            }
            else if (StakingTypeOnLose == StakingTypeOnLose.UsePercentOfBudget && StakingTypeOnWin == StakingTypeOnWin.Divide)
            {
                currStake = new PercentOfBudgetDivideStaking(isLost, currStake, previousBet.Stake, ResetStake, LoseCoefficient, WinCoefficient, lostInARow, wonInARow, budget, totalOdds, groupSize).Apply();
            }

            else if (StakingTypeOnLose == StakingTypeOnLose.Flat && StakingTypeOnWin == StakingTypeOnWin.UsePercentOfBudget)
            {
                currStake = new FlatPercentOfBudgetStaking(isLost, currStake, previousBet.Stake, ResetStake, WinCoefficient, budget, totalOdds, groupSize).Apply();
            }
            else if (StakingTypeOnLose == StakingTypeOnLose.Add && StakingTypeOnWin == StakingTypeOnWin.UsePercentOfBudget)
            {
                currStake = new AddPercentOfBudgetStaking(isLost, currStake, previousBet.Stake, ResetStake, LoseCoefficient, WinCoefficient, lostInARow, wonInARow, budget, totalOdds, groupSize).Apply();
            }
            else if (StakingTypeOnLose == StakingTypeOnLose.Subtract && StakingTypeOnWin == StakingTypeOnWin.UsePercentOfBudget)
            {
                currStake = new SubtractPercentOfBudgetStaking(isLost, currStake, previousBet.Stake, ResetStake, LoseCoefficient, WinCoefficient, lostInARow, wonInARow, budget, totalOdds, groupSize).Apply();
            }
            else if (StakingTypeOnLose == StakingTypeOnLose.Multiply && StakingTypeOnWin == StakingTypeOnWin.UsePercentOfBudget)
            {
                currStake = new MultiplyPercentOfBudgetStaking(isLost, currStake, previousBet.Stake, ResetStake, LoseCoefficient, WinCoefficient, lostInARow, wonInARow, budget, totalOdds, groupSize).Apply();
            }
            else if (StakingTypeOnLose == StakingTypeOnLose.Divide && StakingTypeOnWin == StakingTypeOnWin.UsePercentOfBudget)
            {
                currStake = new DividePercentOfBudgetStaking(isLost, currStake, previousBet.Stake, ResetStake, LoseCoefficient, WinCoefficient, lostInARow, wonInARow, budget, totalOdds, groupSize).Apply();
            }
            else if (StakingTypeOnLose == StakingTypeOnLose.CoverPercentOfLoses && StakingTypeOnWin == StakingTypeOnWin.UsePercentOfBudget)
            {
                currStake = new CoverPercentOfLosesPercentOfBudgetStaking(isLost, currStake, previousBet.Stake, ResetStake, LoseCoefficient, WinCoefficient, budget, totalOdds, groupSize).Apply();
            }
            else if (StakingTypeOnLose == StakingTypeOnLose.UsePercentOfBudget && StakingTypeOnWin == StakingTypeOnWin.UsePercentOfBudget)
            {
                currStake = new PercentOfBudgetPercentOfBudgetStaking(isLost, currStake, previousBet.Stake, ResetStake, LoseCoefficient, WinCoefficient, budget, totalOdds, groupSize).Apply();
            }

            else
            {
                throw new Exception("Niezaimplementowane");
            }

            return(MaxStake.Eq(0.0) ? currStake : Math.Min(currStake, MaxStake));
        }