Value() public static méthode

public static Value ( ISeries input, int index ) : double
input ISeries
index int
Résultat double
Exemple #1
0
 public static double Value(ISeries input, int index, int length, IndicatorStyle style = IndicatorStyle.QuantStudio)
 {
     if (index >= length)
     {
         double sum = 0;
         double result;
         if (style == IndicatorStyle.QuantStudio)
         {
             for (var i = index; i > index - length; i--)
             {
                 sum += TR.Value(input, i);
             }
             result = sum / length;
         }
         else
         {
             for (int j = length; j > 0; j--)
             {
                 sum += TR.Value(input, j) / length;
             }
             sum /= length;
             for (var k = length + 1; k <= index; k++)
             {
                 sum = (sum * (length - 1) + TR.Value(input, k)) / length;
             }
             result = sum;
         }
         return(result);
     }
     return(double.NaN);
 }
Exemple #2
0
 public static double Value(ISeries input, int index, int n1, int n2, int n3)
 {
     if (index >= Math.Max(n1, Math.Max(n2, n3)))
     {
         double num  = 0.0;
         double num2 = 0.0;
         for (int i = index; i > index - n1; i--)
         {
             double num3 = input[i, BarData.Close];
             double val  = input[i - 1, BarData.Close];
             double val2 = input[i, BarData.Low];
             num  += num3 - Math.Min(val2, val);
             num2 += TR.Value(input, i);
         }
         double num4 = (double)(n3 / n1) * (num / num2);
         num  = 0.0;
         num2 = 0.0;
         for (int j = index; j > index - n2; j--)
         {
             double num3 = input[j, BarData.Close];
             double val  = input[j - 1, BarData.Close];
             double val2 = input[j, BarData.Low];
             num  += num3 - Math.Min(val2, val);
             num2 += TR.Value(input, j);
         }
         double num5 = (double)(n3 / n2) * (num / num2);
         num  = 0.0;
         num2 = 0.0;
         for (int k = index; k > index - n3; k--)
         {
             double num3 = input[k, BarData.Close];
             double val  = input[k - 1, BarData.Close];
             double val2 = input[k, BarData.Low];
             num  += num3 - Math.Min(val2, val);
             num2 += TR.Value(input, k);
         }
         double num6 = num / num2;
         return((num4 + num5 + num6) / (double)(n3 / n1 + n3 / n2 + 1) * 100.0);
     }
     return(double.NaN);
 }
Exemple #3
0
 public override void Calculate(int index)
 {
     if (index >= this.length)
     {
         int    num = -1 * this.length;
         double value;
         if (this.style == IndicatorStyle.QuantStudio)
         {
             if (index == this.length)
             {
                 var sum = 0d;
                 for (var i = index; i > index - this.length; i--)
                 {
                     sum += TR.Value(this.input, i);
                 }
                 value = sum / this.length;
             }
             else
             {
                 value = (this[index - 1 + num] * this.length + TR.Value(this.input, index) - TR.Value(this.input, index - this.length)) / this.length;
             }
         }
         else if (index == this.length)
         {
             var sum = 0d;
             for (var j = index; j > index - this.length; j--)
             {
                 sum += TR.Value(this.input, j);
             }
             value = sum / this.length;
         }
         else
         {
             value = (base[this.input.GetDateTime(index - 1)] * this.length + TR.Value(this.input, index) - TR.Value(this.input, index - this.length)) / this.length;
         }
         Add(this.input.GetDateTime(index), value);
     }
 }
Exemple #4
0
 public static double Value(ISeries input, int index, int length, IndicatorStyle style = IndicatorStyle.QuantStudio)
 {
     if (style == IndicatorStyle.QuantStudio)
     {
         var mdm = 0.0;
         var tr  = 0.0;
         if (index >= length)
         {
             for (var i = index; i > index - length; i--)
             {
                 tr  += TR.Value(input, i);
                 mdm += MDM.Value(input, i);
             }
             return(mdm / tr * 100);
         }
         return(double.NaN);
     }
     else
     {
         double mdm = 0.0;
         double tr  = 0.0;
         if (index >= length)
         {
             for (var j = length; j >= 1; j--)
             {
                 tr  += TR.Value(input, j);
                 mdm += MDM.Value(input, j);
             }
             for (var k = length + 1; k <= index; k++)
             {
                 mdm = mdm - mdm / length + MDM.Value(input, k);
                 tr  = tr - tr / length + TR.Value(input, k);
             }
             return(mdm / tr * 100);
         }
         return(double.NaN);
     }
 }
Exemple #5
0
 public override void Calculate(int index)
 {
     if (this.style == IndicatorStyle.QuantStudio)
     {
         double mdm = 0.0;
         double tr  = 0.0;
         if (index >= this.length)
         {
             if (index == this.length)
             {
                 for (int i = index; i >= index - this.length + 1; i--)
                 {
                     tr  += TR.Value(this.input, i);
                     mdm += MDM.Value(this.input, i);
                 }
             }
             else
             {
                 mdm = this.mdmTS[index - 1] - MDM.Value(this.input, index - this.length) +
                       MDM.Value(this.input, index);
                 tr = this.trTS[index - 1] - TR.Value(this.input, index - this.length) +
                      TR.Value(this.input, index);
             }
             if (tr != 0.0)
             {
                 double value = mdm / tr * 100.0;
                 if (!double.IsNaN(value))
                 {
                     Add(this.input.GetDateTime(index), value);
                 }
             }
         }
         this.mdmTS.Add(this.input.GetDateTime(index), mdm);
         this.trTS.Add(this.input.GetDateTime(index), tr);
     }
     else
     {
         double mdm = 0.0;
         double tr  = 0.0;
         if (index >= this.length)
         {
             if (index == this.length)
             {
                 for (var j = index; j >= index - this.length + 1; j--)
                 {
                     tr  += TR.Value(this.input, j);
                     mdm += MDM.Value(this.input, j);
                 }
             }
             else
             {
                 mdm = this.mdmTS[index - 1] - this.mdmTS[index - 1] / this.length + MDM.Value(this.input, index);
                 tr  = this.trTS[index - 1] - this.trTS[index - 1] / this.length + TR.Value(this.input, index);
             }
             if (tr != 0.0)
             {
                 double value = mdm / tr * 100.0;
                 if (!double.IsNaN(value))
                 {
                     Add(this.input.GetDateTime(index), value);
                 }
             }
         }
         this.mdmTS.Add(this.input.GetDateTime(index), mdm);
         this.trTS.Add(this.input.GetDateTime(index), tr);
     }
 }
Exemple #6
0
 public static double Value(ISeries input, int index, int length)
 {
     return(index < length
         ? double.NaN
         : SMA.Value(input, index, length, BarData.Typical) - Enumerable.Range(index - length + 1, length).Reverse().Sum(i => TR.Value(input, i)) / length);
 }