示例#1
0
        public bool SellCondition(
            ref SimulationVariable simulationVariable,
            ref DataList dataList,
            ref BasicFinancialReportListModel financialdata, int j)
        {
            if (simulationVariable.HasBuy && dataList.TechData[j].ReturnOnInvestment > 0)
            {
                CountRaiseDays++;
            }
            else if (dataList.TechData[j].ReturnOnInvestment != 0 || simulationVariable.HasBuy)
            {
                CountRaiseDays = 0;
            }

            simulationVariable.MoveStopLossPercentage = Acc;
            if (
                (simulationVariable.Accumulation > 6) ||// && dataList.TechData[j].ReturnOnInvestment < 4)
                simulationVariable.Accumulation < -5 ||
                CountRaiseDays == 5
                )
            {
                CountRaiseDays = 0;
                return(true);
            }
            return(false);
        }
示例#2
0
        double LatestYearValuation(ref BasicFinancialReportListModel financialdata)
        {
            double returnValuation = 0;

            if (financialdata.FinancialDataList[financialdata.BasicFinancialInt].Date.Year <= 2007)
            {
                if (financialdata.BasicFinancialInt >= 1)
                {
                    returnValuation = Valuation(financialdata.FinancialDataList[financialdata.BasicFinancialInt])
                                      + Valuation(financialdata.FinancialDataList[financialdata.BasicFinancialInt - 1]);
                }
            }
            else
            {
                if (financialdata.BasicFinancialInt >= 3)
                {
                    returnValuation = Valuation(financialdata.FinancialDataList[financialdata.BasicFinancialInt])
                                      + Valuation(financialdata.FinancialDataList[financialdata.BasicFinancialInt - 1])
                                      + Valuation(financialdata.FinancialDataList[financialdata.BasicFinancialInt - 2])
                                      + Valuation(financialdata.FinancialDataList[financialdata.BasicFinancialInt - 3]);
                }
            }

            return(returnValuation);
        }
示例#3
0
        int CountKeepingRaise(ref BasicFinancialReportListModel financialdata, string field)
        {
            int count    = 1;
            int counting = financialdata.BasicFinancialInt;

            for (int i = financialdata.BasicFinancialInt; i > 0; i--)
            {
                PropertyInfo propertyNext = financialdata.FinancialDataList[i].GetType().GetProperty(field);
                double?      valueNext    = (double?)propertyNext.GetValue(financialdata.FinancialDataList[i]);

                PropertyInfo propertyPre = financialdata.FinancialDataList[i - 1].GetType().GetProperty(field);
                double?      valuePre    = (double?)propertyNext.GetValue(financialdata.FinancialDataList[i - 1]);

                if (valueNext > valuePre)
                {
                    count++;
                }
                else
                {
                    break;
                }
            }


            return(count);
        }
示例#4
0
        double?AccumulationYoY(ref BasicFinancialReportListModel financialdata, string field)
        {
            int counting = financialdata.BasicFinancialInt;

            if (counting < 8)
            {
                return(-1000);
            }

            double?valueNext = 0;
            double?valuePre  = 0;

            for (int i = 0; i < 4; i++)
            {
                PropertyInfo propertyNext = financialdata.FinancialDataList[counting - i].GetType().GetProperty(field);
                valueNext += (double?)propertyNext.GetValue(financialdata.FinancialDataList[counting - i]);
            }

            for (int i = 4; i < 8; i++)
            {
                PropertyInfo propertyPre = financialdata.FinancialDataList[counting - i].GetType().GetProperty(field);
                valuePre += (double?)propertyPre.GetValue(financialdata.FinancialDataList[counting - i]);
            }

            double?yoy = ((valueNext / valuePre) - 1) * 100;

            return(yoy);
        }
        public bool BuyCondition(
            ref SimulationVariable simulationVariable,
            ref DataList dataList,
            ref BasicFinancialReportListModel financialdata, int j)
        {
            if (
                dataList.ReturnValue("CountRaiseinDays-20", j) > 12

                )
            {
                return(true);
            }

            return(false);
        }
示例#6
0
        void UpdateOutputData(ref BasicFinancialReportListModel financialdata)
        {
            double latestYearValuation = LatestYearValuation(ref financialdata);

            double[] BeforeYearValuationArray = new double[4];
            BeforeYearValuationArray[0] = BeforeYearValuation(ref financialdata, 1);
            BeforeYearValuationArray[1] = BeforeYearValuation(ref financialdata, 2);
            BeforeYearValuationArray[2] = BeforeYearValuation(ref financialdata, 3);
            BeforeYearValuationArray[3] = BeforeYearValuation(ref financialdata, 4);

            InitialData.OutputData.Evaluation_1Year = System.Math.Round(latestYearValuation, 2);
            InitialData.OutputData.Evaluation_2Year = System.Math.Round(BeforeYearValuationArray[0], 2);
            InitialData.OutputData.Evaluation_3Year = System.Math.Round(BeforeYearValuationArray[1], 2);
            InitialData.OutputData.Evaluation_4Year = System.Math.Round(BeforeYearValuationArray[2], 2);
            InitialData.OutputData.Evaluation_5Year = System.Math.Round(BeforeYearValuationArray[3], 2);
        }
 public bool SellCondition(
     ref SimulationVariable simulationVariable,
     ref DataList dataList,
     ref BasicFinancialReportListModel financialdata, int j)
 {
     simulationVariable.MoveStopLossPercentage = Acc;
     if (simulationVariable.Accumulation < -1
         //(dataList.ReturnValue("CountRaiseinDays-20", j) > 9 && simulationVariable.Accumulation > 1)
         //|| (dataList.ReturnValue("CountRaiseinDays-20", j) > 9 && simulationVariable.Accumulation < -2)
         || simulationVariable.Accumulation > 1
         )
     {
         return(true);
     }
     return(false);
 }
示例#8
0
        double?YoY(ref BasicFinancialReportListModel financialdata, string field)
        {
            int counting = financialdata.BasicFinancialInt;

            if (counting < 4)
            {
                return(-1000);
            }

            PropertyInfo propertyNext = financialdata.FinancialDataList[counting].GetType().GetProperty(field);
            double?      valueNext    = (double?)propertyNext.GetValue(financialdata.FinancialDataList[counting]);

            PropertyInfo propertyPre = financialdata.FinancialDataList[counting - 4].GetType().GetProperty(field);
            double?      valuePre    = (double?)propertyNext.GetValue(financialdata.FinancialDataList[counting - 4]);

            double?yoy = ((valueNext / valuePre) - 1) * 100;

            return(yoy);
        }
示例#9
0
        bool ValuationConditionSatisfied(ref BasicFinancialReportListModel financialdata, int countRefYear)
        {
            UpdateOutputData(ref financialdata);

            bool condiotionsatisfied = true;

            if (LatestYearValuation(ref financialdata) > BeforeYearValuation(ref financialdata, 1) * ValuationLatestParameter)
            {
                if (countRefYear == 4)
                {
                    if (BeforeYearValuation(ref financialdata, 2) > BeforeYearValuation(ref financialdata, 3) * ValuationParameter &&
                        BeforeYearValuation(ref financialdata, 3) > BeforeYearValuation(ref financialdata, 4) * ValuationParameter)
                    {
                        return(true);
                    }

                    if (BeforeYearValuation(ref financialdata, 1) > BeforeYearValuation(ref financialdata, 2) * ValuationParameter &&
                        BeforeYearValuation(ref financialdata, 3) > BeforeYearValuation(ref financialdata, 4) * ValuationParameter)
                    {
                        return(true);
                    }
                }

                for (int i = 1; i <= countRefYear - 1; i++)
                {
                    // if it is not satfified condition . test every year
                    if (BeforeYearValuation(ref financialdata, i) < BeforeYearValuation(ref financialdata, i + 1) * ValuationParameter)
                    {
                        condiotionsatisfied = false;
                        break;
                    }
                }
            }
            else
            {
                condiotionsatisfied = false;
            }

            return(condiotionsatisfied);
        }
示例#10
0
        double BeforeYearValuation(ref BasicFinancialReportListModel financialdata, int previousYear)
        {
            int    referenceYear   = financialdata.FinancialDataList[financialdata.BasicFinancialInt].Date.Year - previousYear;
            double returnValuation = 0;
            int    countRef        = (referenceYear >= 2008) ? 4 : 2;
            int    count           = 0;

            for (int i = financialdata.BasicFinancialInt; i >= 0; i--)
            {
                if (financialdata.FinancialDataList[i].Date.Year == referenceYear)
                {
                    returnValuation += Valuation(financialdata.FinancialDataList[i]);
                    count++;
                }

                if (count == countRef)
                {
                    break;
                }
            }

            return(returnValuation);
        }
示例#11
0
        public bool BuyCondition(
            ref SimulationVariable simulationVariable,
            ref DataList dataList,
            ref BasicFinancialReportListModel financialdata, int j)
        {
            if (!simulationVariable.HasBuy && dataList.TechData[j].ReturnOnInvestment > 0)
            {
                CountRaiseDays++;
            }
            else if (dataList.TechData[j].ReturnOnInvestment != 0 || simulationVariable.HasBuy)
            {
                CountRaiseDays = 0;
            }


            if (
                CountRaiseDays == 4
                )
            {
                return(true);
            }

            return(false);
        }
示例#12
0
 public bool SellCondition(ref SimulationVariable simulationVariable, ref DataList dataList, ref BasicFinancialReportListModel financialdata, int j)
 {
     simulationVariable.MoveStopLossPercentage = 5;
     if (simulationVariable.Accumulation > Acc ||
         simulationVariable.Accumulation < -5
         )//|| simulationVariable.ConditionSatifiedMoveStopLoss("MoveStopLossPercentage"))//simulationVariable.ConditionSatifiedMoveStopLoss("MoveStopLossPercentage"))// || dataList.CoditionSatified("MinValue-1", "MinValue-10", j))
     {
         return(true);
     }
     return(false);
 }
示例#13
0
        //double IStrategy.Acc { get { return Acc; } set => this.Acc = Acc; }

        public bool BuyCondition(ref SimulationVariable simulationVariable, ref DataList dataList, ref BasicFinancialReportListModel financialdata, int j)
        {
            if (dataList.CoditionSatified("MoveAverageValue-1", "BollingerBandsDown-20", j) &&
                dataList.CoditionSatified("BollingerBandsDown-20", "MoveAverageValue-1", j - 1) &&
                dataList.CoditionSatifiedIsBiggerValue("MoveAverageValue-30", j, 200)
                //&& double.Parse(dataList.TechData[j].ClosePrice.ToString()) * double.Parse(dataList.TechData[j].Volume.ToString()) > 10000
                )    //&& dataList.CoditionSatified("BollingerBandsDown-5", "MoveAverageValue-1", j) && financialdata.ComparerFinancial("QCashFlowPerShare",3,4))
                     //   if (dataList.CoditionSatified("MoveAverageValue-1", "MoveAverageValue-20", j)
                     //&& dataList.CoditionSatified("MoveAverageValue-20", "MoveAverageValue-1", j - 1)
                     //       )
            {
                return(true);
            }
            return(false);
        }
        public bool SellCondition(ref SimulationVariable simulationVariable, ref DataList dataList, ref BasicFinancialReportListModel financialdata, int j)
        {
            bool fin = financialdata.ComparerFinancial("QEarningPerShare", 0, 1, false);

            if (
                (simulationVariable.Accumulation > Acc ||
                 simulationVariable.Accumulation < -Acc) &&
                (dataList.TechData[j].Date.Month == 1 || dataList.TechData[j].Date.Month == 2 || dataList.TechData[j].Date.Month == 3))
            {
                return(true);
            }

            return(false);
        }
        public bool BuyCondition(ref SimulationVariable simulationVariable, ref DataList dataList, ref BasicFinancialReportListModel financialdata, int j)
        {
            if (!simulationVariable.HasBuy && dataList.TechData[j].ReturnOnInvestment < 0)
            {
                CountDropDays++;
            }
            else if (dataList.TechData[j].ReturnOnInvestment != 0 || simulationVariable.HasBuy)
            {
                CountDropDays = 0;
            }

            if (
                dataList.ReturnValue("MinValue-10", j) == double.Parse(dataList.TechData[j].Volume.ToString()) &&
                (dataList.TechData[j].Date.Month == 7 || dataList.TechData[j].Date.Month == 8) &&
                dataList.CoditionSatified("BollingerBandsDown-20", "MoveAverageValue-1", j)) //&& dataList.CoditionSatified("BollingerBandsDown-5", "MoveAverageValue-1", j) && financialdata.ComparerFinancial("QCashFlowPerShare",3,4))
            {
                return(true);
            }

            return(false);
        }
        public bool SellCondition(ref SimulationVariable simulationVariable, ref DataList dataList, ref BasicFinancialReportListModel financialdata, int j)
        {
            if (simulationVariable.HasBuy && dataList.TechData[j].ReturnOnInvestment > 0)
            {
                CountDropDays++;
            }
            else if (dataList.TechData[j].ReturnOnInvestment != 0 || simulationVariable.HasBuy)
            {
                CountDropDays = 0;
            }


            if (
                (simulationVariable.Accumulation > StopLossAndRaise) ||
                simulationVariable.Accumulation < -StopLossAndRaise ||
                CountDropDays == Acc

                )
            {
                CountDropDays = 0;
                return(true);
            }

            return(false);
        }
示例#17
0
        public bool SellCondition(ref SimulationVariable simulationVariable, ref DataList dataList, ref BasicFinancialReportListModel financialdata, int j)
        {
            //return true;
            //if (j < 0 || dataList.TechData.Count - j <= 0 || financialdata.RevenueInt - 1 < 0 || financialdata.RevenueInt >= financialdata.RevenueList.Count)
            //    return false;

            if (
                //dataList.TechData[j].Date.Month ==6 || dataList.TechData[j].Date.Month==9 || dataList.TechData[j].Date.Month==12 || dataList.TechData[j].Date.Month==4
                simulationVariable.Accumulation > 20 || simulationVariable.Accumulation < -20
                )
            {
                return(true);
            }

            return(false);
        }
        public bool SellCondition(ref SimulationVariable simulationVariable, ref DataList dataList, ref BasicFinancialReportListModel financialdata, int j)
        {
            if (simulationVariable.Accumulation > 4 ||
                simulationVariable.Accumulation < -4 ||
                (simulationVariable.HaveStockDayContainHoliday > 20 && simulationVariable.Accumulation > 1)
                )
            {
                return(true);
            }

            return(false);
        }
        public bool BuyCondition(ref SimulationVariable simulationVariable, ref DataList dataList, ref BasicFinancialReportListModel financialdata, int j)
        {
            if (!simulationVariable.HasBuy && dataList.TechData[j].ReturnOnInvestment > 0)
            {
                CountRaiseDays++;
            }
            else if (dataList.TechData[j].ReturnOnInvestment != 0 || simulationVariable.HasBuy)
            {
                CountRaiseDays = 0;
            }


            //if (PreStartBuy && dataList.TechData[j].ReturnOnInvestment < 0)
            //{
            //    StartBuy = true;
            //}
            //else if (PreStartBuy && dataList.TechData[j].ReturnOnInvestment > 0)
            //{
            //    PreStartBuy = false;
            //}

            if (CountRaiseDays == CountRaiseDaysParameter)
            {
                StartBuy = true;
            }



            if (StartBuy
                //|| dataList.ReturnValue("CountRaiseinDays-20", j) > 6
                )
            {
                PreStartBuy = false;
                StartBuy    = false;
                return(true);
            }

            return(false);
        }
        public bool SellCondition(ref SimulationVariable simulationVariable, ref DataList dataList, ref BasicFinancialReportListModel financialdata, int j)
        {
            //if ((simulationVariable.Accumulation > Acc)//&& dataList.ReturnValue("MoveAverageValue-20", j) < dataList.ReturnValue("MoveAverageValue-1", j) * 1.1)
            //    || (simulationVariable.Accumulation < -StopLoss)// //|| simulationVariable.MaxRatio > 5
            //                                             //|| (simulationVariable.HaveStockDayContainHoliday > 20 && simulationVariable.Accumulation > 1)
            //     )
            return(true);

            return(false);
        }
 public bool BuyCondition(ref SimulationVariable simulationVariable, ref DataList dataList, ref BasicFinancialReportListModel financialdata, int j)
 {
     if (
         dataList.CoditionSatified("MoveAverageValue-1", "BollingerBandsDown-20", j) &&
         dataList.CoditionSatified("BollingerBandsDown-20", "MoveAverageValue-1", j - 1)
         )
     {
         return(true);
     }
     return(false);
 }
        public bool BuyCondition(ref SimulationVariable simulationVariable, ref DataList dataList, ref BasicFinancialReportListModel financialdata, int j)
        {
            if (dataList.CoditionSatified("MoveAverageValue-1", "MoveAverageValue-30", j, Times: 2) &&
                dataList.CoditionSatified("MoveAverageValue-1", "MoveAverageValue-30", j, 3, false) &&
                dataList.TechData[j].ReturnOnInvestment >= 5 &&
                dataList.TechData[j].ReturnOnInvestment <= 6
                //&& dataList.TechData[j].ClosePrice >= 20
                //&& dataList.TechData[j].Date.Month != 3
                //&& dataList.TechData[j].Date.Month != 4

                //&& dataList.TechData[j].Date.Month != 6

                && dataList.TechData[j].Date.Month == Acc


                //&& (dataList.TechData[j].ClosePrice>=40 || dataList.TechData[j].ClosePrice <= 20)
                && dataList.CoditionSatifiedIsBiggerValue("MoveAverageValue-30", j, 1400) &&
                !dataList.CoditionSatifiedIsBiggerValue("MoveAverageValue-30", j, 7400)
                )
            {
                return(true);
            }

            return(false);
        }
 public bool SellCondition(ref SimulationVariable simulationVariable, ref DataList dataList, ref BasicFinancialReportListModel financialdata, int j)
 {
     simulationVariable.MoveStopLossPercentage = Acc;
     if ((simulationVariable.Accumulation > 7 && dataList.TechData[j].ReturnOnInvestment < 2) ||
         simulationVariable.Accumulation < -7 ||
         (simulationVariable.HaveStockDay > 16 && simulationVariable.Accumulation < -2) ||
         (simulationVariable.HaveStockDay > 15 && simulationVariable.Accumulation > 1 && dataList.TechData[j].ReturnOnInvestment < 2)
         )
     {
         return(true);
     }
     return(false);
 }
        public bool BuyCondition(ref SimulationVariable simulationVariable, ref DataList dataList, ref BasicFinancialReportListModel financialdata, int j)
        {
//            if (financialdata.RevenueInt - 2 < 0 || financialdata.BasicFinancialInt <= 0 || financialdata.BasicFinancialInt - 20 <= 0 ||j<30) return false;

//            financialdata.InitialDate(dataList.TechData[j].Date);

//            double? CFC_Yearly = 0;
//            double? CFC_5Year = 0;
//            double? QCashFlowFromOperatingAction = 0;
//            double? QNetIncome = 0;
//            double? LongTermLiability = 0;
//            double? TotalLiability = 0;

//            double? QCashFlow_QNetIncome = 0;
//            int count = 0;
//            int countY = 1;

//            for (int i = financialdata.BasicFinancialInt; i > financialdata.BasicFinancialInt - 20; i--)
//            {

//                QCashFlowFromOperatingAction += financialdata.FinancialDataList[i].QCashFlowFromOperatingAction;
//                QNetIncome += financialdata.FinancialDataList[i].QNetIncome;

//                countY++;
//                if(countY%4==0)
//                {
//                    QCashFlow_QNetIncome += (QCashFlowFromOperatingAction/ QNetIncome);
//                    QCashFlowFromOperatingAction = 0;
//                    QNetIncome = 0;
//                }

//                if (count < 4)
//                {
//                    CFC_Yearly += financialdata.FinancialDataList[i].QCashFlowFromOperatingAction - financialdata.FinancialDataList[i].QCashFlowfromInvestmentAction;
//                    LongTermLiability += financialdata.FinancialDataList[i].QLong_TermLiabilities;
//                    TotalLiability += financialdata.FinancialDataList[i].QTotalLiabilities;
//                    count++;
//                }
//                CFC_5Year += financialdata.FinancialDataList[i].QCashFlowFromOperatingAction - financialdata.FinancialDataList[i].QCashFlowfromInvestmentAction;
//            }

//            QCashFlow_QNetIncome = QCashFlow_QNetIncome / 5;

//            if (dataList.TechData[j].CashYieldRate >= 5 &&
//                financialdata.RevenueList[financialdata.RevenueInt].YoYPercentage_MonthlySale > 0 &&
//                financialdata.RevenueList[financialdata.RevenueInt - 1].YoYPercentage_MonthlySale > 0 &&



//                 financialdata.FinancialDataList[financialdata.BasicFinancialInt].QLong_TermLiabilities / financialdata.FinancialDataList[financialdata.BasicFinancialInt].QTotalLiabilities < 0.3 &&
//                 //LongTermLiability/TotalLiability<0.3&&

//                 QCashFlowFromOperatingAction / QNetIncome >= 1 &&
//                 //QCashFlow_QNetIncome>=1&&



//                 financialdata.ComparerFinancial("QReturnonEquityPercentage_A", 20, 4, false, true) &&
//                 financialdata.ComparerFinancial("QReturnonEquityPercentage_A", 15, 20, false, true) &&

//                 CFC_5Year > 0 &&
//                 CFC_Yearly > 0 &&

//                 financialdata.ComparerFinancial("QNetIncomePercentage", 10, 20, Yearly: true) && //稅後淨利率
//                 financialdata.ComparerFinancial("QNetIncomePercentage", 10, 4, Yearly: true)
//                 //financialdata.ComparerFinancial("QNetIncomePercentage", 20, 4, true, Yearly: true)

//                 //&& dataList.CoditionSatifiedIsBiggerValue( "MoveAverageValue-30",j ,500)
//                 //&& dataList.CoditionSatified("BollingerBandsDown-20", "MoveAverageValue-1", j - 1)
//                 //&& dataList.CoditionSatified("MoveAverageValue-1", "BollingerBandsDown-20", j)
//)// && financialdata.ComparerFinancial("QCashFlowPerShare",3,4))
            return(true);

            return(false);
        }
        public bool SellCondition(ref SimulationVariable simulationVariable, ref DataList dataList, ref BasicFinancialReportListModel financialdata, int j)
        {
            //if (j < 0 || dataList.TechData.Count - j <= 0 || financialdata.RevenueInt - 1 < 0 || financialdata.RevenueInt >= financialdata.RevenueList.Count)
            //    return false;

            if (
                //dataList.TechData[j].CashYieldRate <= 2.5
                //|| financialdata.RevenueList[financialdata.RevenueInt].YoYPercentage_MonthlySale < -20
                //|| (financialdata.RevenueList[financialdata.RevenueInt].YoYPercentage_MonthlySale < -10 && financialdata.RevenueList[financialdata.RevenueInt - 1].YoYPercentage_MonthlySale < -10)
                simulationVariable.Accumulation > 20 || //|| !ValuationConditionSatisfied(ref financialdata, valuationParameter)
                simulationVariable.Accumulation < -20

                )
            {
                return(true);
            }

            return(false);
        }
        public bool BuyCondition(ref SimulationVariable simulationVariable, ref DataList dataList, ref BasicFinancialReportListModel financialdata, int j)
        {
            if (!simulationVariable.HasBuy && dataList.TechData[j].ReturnOnInvestment < 0)
            {
                CountDropDays++;
            }
            else if (dataList.TechData[j].ReturnOnInvestment != 0 || simulationVariable.HasBuy)
            {
                CountDropDays = 0;
            }


            if (CountDropDays == CountDropDaysParameter
                //|| dataList.ReturnValue("CountDropinDays-20", j) > 9
                )

            {
                //CountDropDays = 0;
                return(true);
            }

            return(false);
        }
 public bool SellCondition(ref SimulationVariable simulationVariable, ref DataList dataList, ref BasicFinancialReportListModel financialdata, int j)
 {
     if (j < 0 || dataList.TechData.Count - j <= 0 || financialdata.RevenueInt - 1 < 0 || financialdata.RevenueInt >= financialdata.RevenueList.Count)
     {
         return(false);
     }
     simulationVariable.MoveStopLossPercentage = Acc;
     if (
         dataList.TechData[j].CashYieldRate <= 2.5 ||
         financialdata.RevenueList[financialdata.RevenueInt].YoYPercentage_MonthlySale < -20
         //|| simulationVariable.Accumulation > 50
         //|| simulationVariable.Accumulation < -Acc
         || (financialdata.RevenueList[financialdata.RevenueInt].YoYPercentage_MonthlySale < -10 && financialdata.RevenueList[financialdata.RevenueInt - 1].YoYPercentage_MonthlySale < -10)
         //|| financialdata.RevenueList[financialdata.RevenueInt ].YoYPercentage_MonthlySale<-10
         //|| dataList.CoditionSatified("MoveAverageValue-1", "MoveAverageValue-10", j,false)//&& dataList.CoditionSatified("BollingerBandsDown-5", "MoveAverageValue-1", j - 1,false)
         //|| simulationVariable.ConditionSatifiedMoveStopLoss("MoveStopLossPercentage")
         //|| ( dataList.CoditionSatified("MoveAverageValue-60", "MoveAverageValue-1", j )
         // && dataList.CoditionSatified("MoveAverageValue-1", "MoveAverageValue-60", j -1))
         )//simulationVariable.ConditionSatifiedMoveStopLoss("MoveStopLossPercentage"))// || dataList.CoditionSatified("MinValue-1", "MinValue-10", j))
     {
         return(true);
     }
     return(false);
 }
示例#28
0
        public bool SellCondition(ref SimulationVariable simulationVariable, ref DataList dataList, ref BasicFinancialReportListModel financialdata, int j)
        {
            //if (dataList.TechData[j].ReturnOnInvestment > 5)
            //    return false;

            if (simulationVariable.Accumulation > 3 ||
                simulationVariable.Accumulation < -3 || simulationVariable.MaxRatio > 4 ||
                (simulationVariable.HaveStockDayContainHoliday > 10 && simulationVariable.Accumulation > 1)
                )
            {
                return(true);
            }

            return(false);
        }
示例#29
0
        public bool BuyCondition(ref SimulationVariable simulationVariable, ref DataList dataList, ref BasicFinancialReportListModel financialdata, int j)
        {
            InitialData.OutputData = new OutputModel();

            if (financialdata.FinancialDataList.Count == 0)
            {
                return(false);
            }

            if (financialdata.FinancialDataList[financialdata.BasicFinancialInt].EarningPerShare_Consol == null ||
                financialdata.FinancialDataList[financialdata.BasicFinancialInt].BPS_A__Consol == null ||
                financialdata.FinancialDataList[financialdata.BasicFinancialInt].CashFlow_Operating_Consol == null)
            {
                return(false);
            }


            double?BPS = financialdata.FinancialDataList[financialdata.BasicFinancialInt].BPS_A__Consol;
            double?OperationCashFlow = financialdata.FinancialDataList[financialdata.BasicFinancialInt].CashFlow_Operating_Consol;

            double?NetIncomePercentageCount       = CountKeepingRaise(ref financialdata, "NetIncome0_Consol");
            double?OperationIncomePercentageCount = CountKeepingRaise(ref financialdata, "OperatingIncome0_Consol");
            double?EPS                = financialdata.FinancialDataList[financialdata.BasicFinancialInt].EarningPerShare_Consol;
            double?EPSCount           = CountKeepingRaise(ref financialdata, "EarningPerShare_Consol");
            double?EPSQoQ             = QoQ(ref financialdata, "EarningPerShare_Consol");
            double?EPSYoY             = YoY(ref financialdata, "EarningPerShare_Consol");
            double?EPSAccumulationYoY = YoY(ref financialdata, "EarningPerShare_Consol");

            if (NetIncomePercentageCount != null)
            {
                InitialData.OutputData.netIncomePercentageCount = (double)NetIncomePercentageCount;
            }

            if (OperationIncomePercentageCount != null)
            {
                InitialData.OutputData.operationIncomePercentageCount = (double)OperationIncomePercentageCount;
            }

            if (EPSCount != null)
            {
                InitialData.OutputData.EPSCount = (double)EPSCount;
            }

            if (EPSQoQ != null)
            {
                InitialData.OutputData.EPSQoQ = System.Math.Round((double)EPSQoQ, 2);
            }

            if (EPSYoY != null)
            {
                InitialData.OutputData.EPSYoY = System.Math.Round((double)EPSYoY, 2);
            }

            if (EPSAccumulationYoY != null)
            {
                InitialData.OutputData.EPSAccumulationYoY = System.Math.Round((double)EPSAccumulationYoY, 2);
            }

            if (EPS != null)
            {
                InitialData.OutputData.EPS = System.Math.Round((double)EPS, 2);
            }



            if (ValuationConditionSatisfied(ref financialdata, valuationParameter) && OperationCashFlow > 0 &&
                NetIncomePercentageCount >= netIncomePercentageCountSet &&
                OperationIncomePercentageCount >= operationIncomePercentageCountSet &&
                EPS >= EPSSet &&
                EPSCount >= EPSCountSet &&
                EPSQoQ >= EPSQoQSet &&
                EPSYoY >= EPSYoYSet &&
                EPSAccumulationYoY >= EPSAccumulationYoYSet
                //&& FinancialPublished(ref dataList , j)
                && j > 240 &&
                ((OperationCashFlowSet && OperationCashFlow > 0) || !OperationCashFlowSet) &&
                (dataList.ReturnValue("MaxValue-240", j - 1)) < (double)dataList.TechData[j].ClosePrice
                )
            {
                return(true);
            }


            return(false);
        }
        public bool BuyCondition(ref SimulationVariable simulationVariable, ref DataList dataList, ref BasicFinancialReportListModel financialdata, int j)
        {
            if (j - 2 < 0)
            {
                return(false);
            }
            if (!simulationVariable.HasBuy && dataList.TechData[j].ReturnOnInvestment < 0)
            {
                CountDropDays++;
            }
            else if (dataList.TechData[j].ReturnOnInvestment != 0 || simulationVariable.HasBuy)
            {
                CountDropDays = 0;
            }

            if (Company != 0)
            {
                CheckCompany = true;
            }

            if (//CountDropDays==3
                //dataList.TechData[j-1].ReturnOnInvestment > Var && dataList.TechData[j-1].ReturnOnInvestment<Var+1
                dataList.TechData[j - 1].ClosePrice > dataList.TechData[j - 1].OpenPrice
                //&& dataList.TechData[j - 2].ClosePrice < dataList.TechData[j - 2].OpenPrice
                //&& dataList.TechData[j ].OpenPrice < dataList.TechData[j - 1].HighestPrice
                && dataList.TechData[j].OpenPrice < dataList.TechData[j - 1].LowestPrice


                //&& dataList.TechData[j].OpenPrice > dataList.TechData[j-1].ClosePrice
                //    && dataList.TechData[j-1].OpenPrice < dataList.TechData[j - 2].HighestPrice
                //((CheckCompany && Company == dataList.TechData[j].Company ) || !CheckCompany)
                //&&dataList.ReturnValue("MoveAverageValue-20", j - 1)  < dataList.ReturnValue("MoveAverageValue-1", j - 1) * Var
                //&& dataList.ReturnValue("MoveAverageValue-20", j) > dataList.ReturnValue("MoveAverageValue-1", j) * Var
                && dataList.ReturnValue("MinValue-20", j) > 200)//CountDropDays == CountDropDaysParameter )

            {
                CountDropDays = 0;
                return(true);
            }

            return(false);
        }