Exemple #1
0
 public void Diagnose(commonTypes.AppTypes.PriceDataType dataType, double allowVariantPerc, ref databases.tmpDS.priceDiagnoseDataTable priceDiagnoseTbl)
 {
     string dataFld = "";
     switch (dataType)
     {
         case AppTypes.PriceDataType.High:
              dataFld = priceDataTbl.highPriceColumn.ColumnName;
              break;
         case AppTypes.PriceDataType.Low:
              dataFld = priceDataTbl.lowPriceColumn.ColumnName;
              break;
         case AppTypes.PriceDataType.Open:
              dataFld = priceDataTbl.openPriceColumn.ColumnName;
              break;
         case AppTypes.PriceDataType.Volume:
              dataFld = priceDataTbl.volumeColumn.ColumnName;
              break;
         default:
              dataFld = priceDataTbl.closePriceColumn.ColumnName; 
              break;
     }
     databases.tmpDS.priceDiagnoseRow priceDiagnoseRow;
     double d1, d2; 
     for (int idx = 1; idx < priceDataTbl.Count; idx++)
     {
         if (priceDataTbl[idx].RowState == System.Data.DataRowState.Deleted) continue;
         d1 = (double)priceDataTbl[idx-1][dataFld];
         d2 = (double)priceDataTbl[idx][dataFld];
         if (d1 == 0) continue;
         if (Math.Abs((d2 - d1)/d1) < allowVariantPerc) continue;
         priceDiagnoseRow = priceDiagnoseTbl.NewpriceDiagnoseRow();
         priceDiagnoseRow.code = this.DataStockCode;
         priceDiagnoseRow.date1 = priceDataTbl[idx-1].onDate;
         priceDiagnoseRow.date2 = priceDataTbl[idx].onDate;
         
         priceDiagnoseRow.price1 = d1;
         priceDiagnoseRow.price2 = d2;
         priceDiagnoseRow.variance = (d2 - d1) / d1;
         priceDiagnoseTbl.AddpriceDiagnoseRow(priceDiagnoseRow);
     }
 }
Exemple #2
0
        /// <summary>
        /// Diagnose price data for abnomal variance in price
        /// </summary>
        /// <param name="priceDataTbl"></param>
        /// <param name="checkVariancePerc"></param>
        /// <param name="checkVariance"></param>
        /// <param name="precision"></param>
        /// <param name="priceDiagnoseTbl"></param>
        public static void DiagnosePrice_CloseAndNextOpen(databases.baseDS.priceDataDataTable priceDataTbl,
                     double checkVariancePerc, double checkVariance,byte precision, databases.tmpDS.priceDiagnoseDataTable priceDiagnoseTbl)
        {
            string dataFld1 = priceDataTbl.closePriceColumn.ColumnName;
            string dataFld2 = priceDataTbl.openPriceColumn.ColumnName;
            databases.baseDS.priceDataRow priceRow1, priceRow2;
            databases.tmpDS.priceDiagnoseRow priceDiagnoseRow;

            DataView myView = new DataView(priceDataTbl);
            myView.Sort = priceDataTbl.onDateColumn.ColumnName;

            double d1, d2,variancePerc;
            for (int idx = 1; idx < myView.Count; idx++)
            {
                d1 = double.Parse(myView[idx-1][dataFld1].ToString());
                d2 = double.Parse(myView[idx][dataFld2].ToString());
                if (d1 == 0) continue;
                variancePerc = (d2 / d1) - 1;
                //if (Math.Abs(d2 - d1) <= checkVariance || 
                if (Math.Abs(Math.Round(variancePerc, precision)) <= checkVariancePerc) continue;
                priceRow1 = (databases.baseDS.priceDataRow)myView[idx-1].Row;
                priceRow2 = (databases.baseDS.priceDataRow)myView[idx].Row;
                priceDiagnoseRow = priceDiagnoseTbl.NewpriceDiagnoseRow();

                priceDiagnoseRow.code = priceRow2.stockCode;
                priceDiagnoseRow.date1 = priceRow1.onDate;
                priceDiagnoseRow.date2 = priceRow2.onDate;

                priceDiagnoseRow.price1 = d1;
                priceDiagnoseRow.price2 = d2;
                priceDiagnoseRow.variance = variancePerc;
                priceDiagnoseTbl.AddpriceDiagnoseRow(priceDiagnoseRow);
            }
        }