![MathPow](https://celebpanda.com/wp/wp-content/uploads/2021/06/MathPow.jpg)
指定した値のべき乗を返します
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;
}