示例#1
0
        /// <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);
        }
示例#2
0
        /// <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);
        }