MathPow

指定した値のべき乗を返します

MathPow

double  MathPow(
   double  base,         // 基本値 
   double  exponent      // 指数値
   );
  • 引数
引数名初期値I/O詳細
base-IN基本値
exponent-IN指数値
  • 戻り値

基本値を指数値でべき乗した値を返します

  • その他

MathPow()関数はpow()と書く事も出来ます。

  • サンプルソース
double iStdDevCandle(string symbol, ENUM_TIMEFRAMES timeframe, int term, double deviation, int stddev_shift, int appliedPrice, int mode, int shift){


   if ( term <= 0 ) return 0;
   
   // 期間の集計値
   double sumValue = 0;
   for (int idx = stddev_shift; idx < ( term + stddev_shift) ; idx++){
       switch ( appliedPrice  ) {
          case OPEN:
              sumValue += iOpen(symbol ,timeframe, idx + shift);
              break;
          case CLOSE:
              sumValue += iClose(symbol ,timeframe, idx + shift);
              break;
          case HIGH:
              sumValue += iHigh(symbol ,timeframe, idx + shift);
              break;
          case LOW:
              sumValue += iLow(symbol ,timeframe, idx + shift);
              break;
       }
   }
   // 平均
   double heikin = 0;
   heikin  = sumValue / term;

   // 平均との差の2乗の合計
   double sumDeviation = 0;
   for (int idx = stddev_shift; idx < ( term + stddev_shift) ; idx++){
       switch ( appliedPrice  ) {
          case OPEN:
              sumDeviation += MathPow( (iOpen(symbol ,timeframe, idx + shift)  - heikin) , 2);
              break;
          case CLOSE:
              sumDeviation += MathPow( (iClose(symbol ,timeframe, idx + shift) - heikin) , 2);
              break;
          case HIGH:
              sumDeviation += MathPow( (iHigh(symbol ,timeframe, idx + shift)  - heikin) , 2);
              break;
          case LOW:
              sumDeviation += MathPow( (iLow(symbol ,timeframe, idx + shift)   - heikin) , 2);
              break;
       }
   }
   
   // 分散(平均との差の2乗の合計をデータの総数で割る)を求める
   double bunsan   = sumDeviation / term ;
   
   // 標準偏差(平均との差の2乗の合計をデータの総数で割った値の平方根)を求める
   double stdDev = MathSqrt(bunsan);
   
   double returnVal = 0;
   switch ( mode  ) {
      case MODE_UPPER:
          returnVal = heikin + deviation * stdDev;
          break;
      case MODE_MAIN:
          returnVal = heikin;
          break;
      case MODE_LOWER:
          returnVal = heikin - deviation * stdDev;
          break;
    }
    return returnVal;
}

Twitterでフォローしよう

おすすめの記事