public static double Value(TimeSeries input, int index, int length, EIndicatorStyle style) { if (index < 2 * length + input.FirstIndex) { return(double.NaN); } double num1 = 0.0; double num2; if (style == EIndicatorStyle.QuantStudio) { for (int index1 = index; index1 > index - length; --index1) { num1 += DX.Value(input, index1, length); } num2 = num1 / (double)length; } else { for (int index1 = 2 * length + input.FirstIndex; index1 > length + input.FirstIndex; --index1) { num1 += DX.Value(input, index1, length, style); } double num3 = num1 / (double)length; for (int index1 = 2 * length + 1 + input.FirstIndex; index1 <= index; ++index1) { num3 = (num3 * (double)(length - 1) + DX.Value(input, index1, length, style)) / (double)length; } num2 = num3; } return(num2); }
public DX(TimeSeries input, int length, EIndicatorStyle style) : base(input) { this.fLength = 14; this.fLength = length; this.fStyle = style; this.Init(); }
public PDI(TimeSeries input, int length, EIndicatorStyle style) : base(input) { this.fLength = 14; this.fLength = length; this.fStyle = style; this.Init(); }
public PDI(TimeSeries input, int length, EIndicatorStyle style, Color color) : base(input) { this.fLength = 14; this.fLength = length; this.fStyle = style; this.Init(); this.Color = color; }
public ADXR(TimeSeries input, int length, EIndicatorStyle style, Color color) : base(input) { this.fLength = 14; this.fLength = length; this.fStyle = style; this.Init(); this.Color = color; }
public RSI(TimeSeries input, int length, BarData option, EIndicatorStyle style) : base(input){ this.fLength = 14; this.fLength = length; this.fOption = option; this.fStyle = style; this.Init(); }
public RSI(TimeSeries input, int length, BarData option, EIndicatorStyle style) : base(input) { this.fLength = 14; this.fLength = length; this.fOption = option; this.fStyle = style; this.Init(); }
public PDI(TimeSeries input, int length, EIndicatorStyle style, Color color, EDrawStyle drawStyle) : base(input) { this.fLength = 14; this.fLength = length; this.fStyle = style; this.Init(); this.Color = color; this.DrawStyle = drawStyle; }
public DX(TimeSeries input, int length, EIndicatorStyle style, Color color, EDrawStyle drawStyle) : base(input) { this.fLength = 14; this.fLength = length; this.fStyle = style; this.Init(); this.Color = color; this.DrawStyle = drawStyle; }
public RSI(TimeSeries input, int length, BarData option, EIndicatorStyle style, Color color, EDrawStyle drawStyle) : base(input) { this.fLength = 14; this.fLength = length; this.fOption = option; this.fStyle = style; this.Init(); this.Color = color; this.DrawStyle = drawStyle; }
public static double Value(TimeSeries input, int index, int length, EIndicatorStyle style) { if (index >= 3 * length - 1 + input.FirstIndex) { return((ADX.Value(input, index, length, style) + ADX.Value(input, index - length + 1, length, style)) / 2.0); } else { return(double.NaN); } }
internal static IndicatorStyle Convert(EIndicatorStyle indicatorStyle) { switch (indicatorStyle) { case EIndicatorStyle.QuantStudio: return(IndicatorStyle.SmartQuant); case EIndicatorStyle.MetaStock: return(IndicatorStyle.MetaStock); default: throw new NotImplementedException("Indicator style is not supported : " + indicatorStyle); } }
public static double Value(TimeSeries input, int index, int length, EIndicatorStyle style) { if (index < length + input.FirstIndex) { return(double.NaN); } double num1 = 0.0; double num2 = PDI.Value(input, index, length, style); double num3 = MDI.Value(input, index, length, style); if (num2 + num3 != 0.0) { num1 = 100.0 * Math.Abs(num2 - num3) / (num2 + num3); } return(num1); }
public static double Value(TimeSeries input, int index, int length, EIndicatorStyle style) { if (style == EIndicatorStyle.QuantStudio) { double num1 = 0.0; double num2 = 0.0; if (index < length + input.FirstIndex) { return(double.NaN); } for (int index1 = index; index1 > index - length; --index1) { num2 += TR.Value(input, index1); num1 += PDM.Value(input, index1); } return(num1 / num2 * 100.0); } else { double num1 = 0.0; double num2 = 0.0; if (index < length + input.FirstIndex) { return(double.NaN); } for (int index1 = length + input.FirstIndex; index1 >= input.FirstIndex + 1; --index1) { num2 += TR.Value(input, index1); num1 += PDM.Value(input, index1); } for (int index1 = length + 1 + input.FirstIndex; index1 <= index; ++index1) { num1 = num1 - num1 / (double)length + PDM.Value(input, index1); num2 = num2 - num2 / (double)length + TR.Value(input, index1); } return(num1 / num2 * 100.0); } }
public static double Value(TimeSeries input, int index, int length, BarData option, EIndicatorStyle style) { double num1 = 0.0; double num2 = 0.0; if (index < length + input.FirstIndex) { return(double.NaN); } if (style == EIndicatorStyle.QuantStudio) { double num3 = input[index - length, option]; for (int index1 = index - length + 1; index1 <= index; ++index1) { double num4 = input[index1, option]; if (num4 > num3) { num1 += num4 - num3; } else { num2 += num3 - num4; } num3 = num4; } } else { double num3 = input[input.FirstIndex, option]; for (int index1 = 1 + input.FirstIndex; index1 <= length + input.FirstIndex; ++index1) { double num4 = input[index1, option]; if (num4 > num3) { num1 += num4 - num3; } else { num2 += num3 - num4; } num3 = num4; } num1 /= (double)length; num2 /= (double)length; double num5 = input[length + input.FirstIndex, option]; for (int index1 = length + 1 + input.FirstIndex; index1 <= index; ++index1) { double num4 = num1 * (double)(length - 1); double num6 = num2 * (double)(length - 1); double num7 = input[index1, option]; if (num7 > num5) { num4 += num7 - num5; } else { num6 += num5 - num7; } num5 = num7; num1 = num4 / (double)length; num2 = num6 / (double)length; } } return(100.0 - 100.0 / (1.0 + num1 / num2)); }
public static double Value(DoubleSeries input, int index, int length, EIndicatorStyle style) { return RSI.Value((TimeSeries) input, index, length, BarData.Close, style); }
public static double Value(TimeSeries input, int index, int length, BarData option, EIndicatorStyle style) { double num1 = 0.0; double num2 = 0.0; if (index < length + input.FirstIndex) return double.NaN; if (style == EIndicatorStyle.QuantStudio) { double num3 = input[index - length, option]; for (int index1 = index - length + 1; index1 <= index; ++index1) { double num4 = input[index1, option]; if (num4 > num3) num1 += num4 - num3; else num2 += num3 - num4; num3 = num4; } } else { double num3 = input[input.FirstIndex, option]; for (int index1 = 1 + input.FirstIndex; index1 <= length + input.FirstIndex; ++index1) { double num4 = input[index1, option]; if (num4 > num3) num1 += num4 - num3; else num2 += num3 - num4; num3 = num4; } num1 /= (double) length; num2 /= (double) length; double num5 = input[length + input.FirstIndex, option]; for (int index1 = length + 1 + input.FirstIndex; index1 <= index; ++index1) { double num4 = num1 * (double) (length - 1); double num6 = num2 * (double) (length - 1); double num7 = input[index1, option]; if (num7 > num5) num4 += num7 - num5; else num6 += num5 - num7; num5 = num7; num1 = num4 / (double) length; num2 = num6 / (double) length; } } return 100.0 - 100.0 / (1.0 + num1 / num2); }
public static double Value(DoubleSeries input, int index, int length, EIndicatorStyle style) { return(RSI.Value((TimeSeries)input, index, length, BarData.Close, style)); }
public static double Value(TimeSeries input, int index, int length, EIndicatorStyle style) { if (index < length + input.FirstIndex) return double.NaN; double num1 = 0.0; double num2 = PDI.Value(input, index, length, style); double num3 = MDI.Value(input, index, length, style); if (num2 + num3 != 0.0) num1 = 100.0 * Math.Abs(num2 - num3) / (num2 + num3); return num1; }
public static double Value(TimeSeries input, int index, int length, EIndicatorStyle style) { if (style == EIndicatorStyle.QuantStudio) { double num1 = 0.0; double num2 = 0.0; if (index < length + input.FirstIndex) return double.NaN; for (int index1 = index; index1 > index - length; --index1) { num2 += TR.Value(input, index1); num1 += PDM.Value(input, index1); } return num1 / num2 * 100.0; } else { double num1 = 0.0; double num2 = 0.0; if (index < length + input.FirstIndex) return double.NaN; for (int index1 = length + input.FirstIndex; index1 >= input.FirstIndex + 1; --index1) { num2 += TR.Value(input, index1); num1 += PDM.Value(input, index1); } for (int index1 = length + 1 + input.FirstIndex; index1 <= index; ++index1) { num1 = num1 - num1 / (double) length + PDM.Value(input, index1); num2 = num2 - num2 / (double) length + TR.Value(input, index1); } return num1 / num2 * 100.0; } }
internal static IndicatorStyle Convert(EIndicatorStyle indicatorStyle) { switch (indicatorStyle) { case EIndicatorStyle.QuantStudio: return IndicatorStyle.SmartQuant; case EIndicatorStyle.MetaStock: return IndicatorStyle.MetaStock; default: throw new NotImplementedException("Indicator style is not supported : " + indicatorStyle); } }
public static double Value(TimeSeries input, int index, int length, EIndicatorStyle style) { if (index >= 3 * length - 1 + input.FirstIndex) return (ADX.Value(input, index, length, style) + ADX.Value(input, index - length + 1, length, style)) / 2.0; else return double.NaN; }
public static double Value(TimeSeries input, int index, int length, EIndicatorStyle style) { if (index < length + input.FirstIndex) return double.NaN; double num1 = 0.0; double num2; if (style == EIndicatorStyle.QuantStudio) { for (int index1 = index; index1 > index - length; --index1) num1 += TR.Value(input, index1); num2 = num1 / (double) length; } else { for (int index1 = length + input.FirstIndex; index1 > input.FirstIndex; --index1) num1 += TR.Value(input, index1); double num3 = num1 / (double) length; for (int index1 = length + 1 + input.FirstIndex; index1 <= index; ++index1) num3 = (num3 * (double) (length - 1) + TR.Value(input, index1)) / (double) length; num2 = num3; } return num2; }