コード例 #1
0
        protected override decimal ComputeNextValue(TradeBar input)
        {
            decimal N = _period;

            CcOc.Update(input);
            OcCp.Update(input);
            OHL.Update(input);

            MuOpen.Update(input.Time, OcCp.Current.Value);
            MuClose.Update(input.Time, CcOc.Current.Value);

            var delta_sq = Math.Pow((double)(OcCp.Current.Value - MuOpen.Current.Value), 2);

            OpenVol.Update(input.Time, (decimal)delta_sq);
            var SigmaOpen = OpenVol.Current.Value * (1 / (N - 1));

            var delta_sq2 = Math.Pow((double)(CcOc.Current.Value - MuClose.Current.Value), 2);

            CloseVol.Update(input.Time, (decimal)delta_sq2);
            var SigmaClose = CloseVol.Current.Value * (1 / (N - 1));

            RSVol.Update(input.Time, OHL.Current.Value);
            var SigmaRS = RSVol.Current.Value * (1 / (N - 1));

            var sum = SigmaOpen + 0.16433333m * SigmaClose + 0.83566667m * SigmaRS;

            var res = (decimal)(Math.Sqrt((double)sum) * Math.Sqrt(252d));

            return(res);
        }
コード例 #2
0
 public override void Reset()
 {
     MuClose.Reset();
     MuOpen.Reset();
     OHL.Reset();
     OcCp.Reset();
     CcOc.Reset();
     OpenVol.Reset();
     CloseVol.Reset();
     RSVol.Reset();
     base.Reset();
 }