/// <summary> /// 解離計算する /// </summary> public override void Calculate() { var last1 = NonApiUtility.Last(baseList1, 0); var last2 = NonApiUtility.Last(RefExchange[(int)RefId].BaseHistory.BaseList, 0); // 差 var subtract = last1 - last2; List[0].Add(subtract); // 乖離率 var subPoint = subtract / last2 * 100.0; List[1].Add(subPoint); // 差の移動平均線 double average = NonApiUtility.CalcSma(List[0], Length); if (average <= 0) { average = CurrentPrice; } List[2].Add(average); // 差のシグマ計算 Sigma = NonApiUtility.CalcSigma(Length, List[0], average) * Magnification; List[3].Add(Sigma); // 1シグマ上 List[4].Add(average + Sigma); // 1シグマ下 List[5].Add(average - Sigma); }
/// <summary> /// ボリンジャーバンドを計算する /// 定められたSecondsValue周期で呼び出される /// </summary> public override void Calculate() { // 移動平均線 double average = NonApiUtility.CalcSma(baseList, Length); if (average <= 0) { average = CurrentPrice; } List[0].Add(average); // シグマ計算 Sigma = NonApiUtility.CalcSigma(Length, baseList, average) * Magnification; // 1シグマ上 List[1].Add(average + Sigma); // 1シグマ下 List[2].Add(average - Sigma); // 2シグマ上 List[3].Add(average + Sigma * 2); // 2シグマ下 List[4].Add(average - Sigma * 2); // 標準偏差 List[5].Add(Sigma); }