Example #1
0
 private static double GetProfitRating(MultiParameter parameter, int peroidNum)
 {
     if (parameter.IsGlobal)
     {
         return(parameter.GlobalRating);
     }
     return(peroidNum <= parameter.PrevPeroidNums ? parameter.PrevPeroidRating : parameter.RestPeroidRating);
 }
Example #2
0
        /// <summary>
        /// 获取倍投收益率。
        /// </summary>
        /// <param name="parameter">倍投参数</param>
        /// <returns>倍投收益率集合</returns>
        public static List<ProfitRate> GetMultiProfitRates(MultiParameter parameter)
        {
            List<ProfitRate> profitRates = new List<ProfitRate>(parameter.PeroidNums);
            for (int i = 1; i <= parameter.PeroidNums; i++)
            {
                double profitRating = GetProfitRating(parameter, i);
                double lastTotalAmount = (i == 1) ? 0 : profitRates[i - 2].CurrentTotalAmount;
                int lastMultiNums = (i == 1) ? parameter.StartMultiNums : profitRates[i - 2].MultiNums;
                int currentMultiNums = GetMultiNums(parameter, lastMultiNums, lastTotalAmount, profitRating);
                if (currentMultiNums == -1) break;

                ProfitRate profitRate = new ProfitRate(i, parameter.Nums, currentMultiNums, parameter.Prize, lastTotalAmount);
                profitRates.Add(profitRate);
            }

            return profitRates;
        }
Example #3
0
        private void btnCompute_Click(object sender, EventArgs e)
        {
            MultiParameter parameter = new MultiParameter();
            parameter.PeroidNums = ConvertHelper.GetInt32(this.txtPeroidNums.Text);
            parameter.Nums = ConvertHelper.GetInt32(this.txtNums.Text);
            parameter.StartMultiNums = ConvertHelper.GetInt32(this.txtStartMultiNums.Text);
            parameter.MaxMultiNums = ConvertHelper.GetInt32(this.txtMaxMultiNums.Text);
            parameter.Prize = ConvertHelper.GetDouble(this.txtPrize.Text);
            parameter.IsGlobal = this.rdGlobalRating.Checked;
            parameter.GlobalRating = ConvertHelper.GetDouble(this.txtGlobalRating.Text) / 100.0;
            parameter.PrevPeroidNums = ConvertHelper.GetInt32(this.txtPrevPeroidNums.Text);
            parameter.PrevPeroidRating = ConvertHelper.GetDouble(this.txtPrevRating.Text) / 100.0;
            parameter.RestPeroidRating = ConvertHelper.GetDouble(this.txtRestRating.Text) / 100.0;
            parameter.MinProfitAmount = this.chkMinProfit.Checked ? ConvertHelper.GetDouble(this.txtMinProfitAmount.Text) : 0.0;

            this.FillListView(ProfitOrLoss.GetMultiProfitRates(parameter));
        }
Example #4
0
        private void btnCompute_Click(object sender, EventArgs e)
        {
            MultiParameter parameter = new MultiParameter();

            parameter.PeroidNums       = ConvertHelper.GetInt32(this.txtPeroidNums.Text);
            parameter.Nums             = ConvertHelper.GetInt32(this.txtNums.Text);
            parameter.StartMultiNums   = ConvertHelper.GetInt32(this.txtStartMultiNums.Text);
            parameter.MaxMultiNums     = ConvertHelper.GetInt32(this.txtMaxMultiNums.Text);
            parameter.Prize            = ConvertHelper.GetDouble(this.txtPrize.Text);
            parameter.IsGlobal         = this.rdGlobalRating.Checked;
            parameter.GlobalRating     = ConvertHelper.GetDouble(this.txtGlobalRating.Text) / 100.0;
            parameter.PrevPeroidNums   = ConvertHelper.GetInt32(this.txtPrevPeroidNums.Text);
            parameter.PrevPeroidRating = ConvertHelper.GetDouble(this.txtPrevRating.Text) / 100.0;
            parameter.RestPeroidRating = ConvertHelper.GetDouble(this.txtRestRating.Text) / 100.0;
            parameter.MinProfitAmount  = this.chkMinProfit.Checked ? ConvertHelper.GetDouble(this.txtMinProfitAmount.Text) : 0.0;

            this.FillListView(ProfitOrLoss.GetMultiProfitRates(parameter));
        }
Example #5
0
        private static int GetMultiNums(MultiParameter parameter, int lastMultiNums, double lastTotalAmount, double profitRating)
        {
            int    multiNums   = lastMultiNums;
            double totalAmount = lastTotalAmount + parameter.Nums * multiNums * 2;
            double totalProfit = parameter.Prize * multiNums - totalAmount;

            while (totalProfit / totalAmount < profitRating || totalProfit < parameter.MinProfitAmount)
            {
                if (multiNums > parameter.MaxMultiNums)
                {
                    return(-1);
                }
                multiNums++;
                totalAmount = lastTotalAmount + parameter.Nums * multiNums * 2;
                totalProfit = parameter.Prize * multiNums - totalAmount;
            }

            return(multiNums);
        }
Example #6
0
        /// <summary>
        /// 获取倍投收益率。
        /// </summary>
        /// <param name="parameter">倍投参数</param>
        /// <returns>倍投收益率集合</returns>
        public static List <ProfitRate> GetMultiProfitRates(MultiParameter parameter)
        {
            List <ProfitRate> profitRates = new List <ProfitRate>(parameter.PeroidNums);

            for (int i = 1; i <= parameter.PeroidNums; i++)
            {
                double profitRating     = GetProfitRating(parameter, i);
                double lastTotalAmount  = (i == 1) ? 0 : profitRates[i - 2].CurrentTotalAmount;
                int    lastMultiNums    = (i == 1) ? parameter.StartMultiNums : profitRates[i - 2].MultiNums;
                int    currentMultiNums = GetMultiNums(parameter, lastMultiNums, lastTotalAmount, profitRating);
                if (currentMultiNums == -1)
                {
                    break;
                }

                ProfitRate profitRate = new ProfitRate(i, parameter.Nums, currentMultiNums, parameter.Prize, lastTotalAmount);
                profitRates.Add(profitRate);
            }

            return(profitRates);
        }
Example #7
0
 private static double GetProfitRating(MultiParameter parameter, int peroidNum)
 {
     if (parameter.IsGlobal) return parameter.GlobalRating;
     return peroidNum <= parameter.PrevPeroidNums ? parameter.PrevPeroidRating : parameter.RestPeroidRating;
 }
Example #8
0
        private static int GetMultiNums(MultiParameter parameter, int lastMultiNums, double lastTotalAmount, double profitRating)
        {
            int multiNums = lastMultiNums;
            double totalAmount = lastTotalAmount + parameter.Nums * multiNums * 2;
            double totalProfit = parameter.Prize * multiNums - totalAmount;

            while (totalProfit / totalAmount < profitRating || totalProfit < parameter.MinProfitAmount)
            {
                if (multiNums > parameter.MaxMultiNums) return -1;
                multiNums++;
                totalAmount = lastTotalAmount + parameter.Nums * multiNums * 2;
                totalProfit = parameter.Prize * multiNums - totalAmount;
            }

            return multiNums;
        }