/// <summary> /// Action to be executd for calculating indicator /// </summary> /// <returns>for future usage. Must be ignored at this time.</returns> protected override bool TrueAction() { // Validate int size = _chartPanel._chartX.RecordCount; if (size == 0) { return(false); } string paramStr0 = ParamStr(0); string paramStr1 = ParamStr(1); if (paramStr0 == paramStr1) { ProcessError("Source 1 cannot be the same as Source 2", IndicatorErrorType.ShowErrorMessage); return(false); } // Get the data Field pSource1 = SeriesToField("Source1", paramStr0, size); if (!EnsureField(pSource1, paramStr0)) { return(false); } Field pSource2 = SeriesToField("Source2", paramStr1, size); if (!EnsureField(pSource2, paramStr1)) { return(false); } Navigator pNav = new Navigator(); Recordset pRS = new Recordset(); pRS.AddField(pSource1); pRS.AddField(pSource2); pNav.Recordset_ = pRS; // Calculate the indicator Index ta = new Index(); Recordset pInd = ta.ComparativeRelativeStrength(pNav, pSource1, pSource2, FullName); // Output the indicator values Clear(); for (int n = 0; n < size; ++n) { AppendValue(DM.GetTimeStampByIndex(n), pInd.Value(FullName, n + 1)); } return(_calculateResult = PostCalculate()); }
/// <summary> /// Action to be executd for calculating indicator /// </summary> /// <returns>for future usage. Must be ignored at this time.</returns> protected override bool TrueAction() { // Validate int size = _chartPanel._chartX.RecordCount; if (size == 0) { return(false); } int paramInt1 = ParamInt(1); if (paramInt1 < 1 || paramInt1 > size / 2) { ProcessError("Invalid Periods for indicator " + FullName, IndicatorErrorType.ShowErrorMessage); return(false); } IndicatorType param2 = (IndicatorType)ParamInt(2); if (param2 < Constants.MA_START || param2 > Constants.MA_END) { ProcessError("Invalid Moving Average Type for indicator " + FullName, IndicatorErrorType.ShowErrorMessage); return(false); } // Get the data string paramStr0 = ParamStr(0); Field pSource = SeriesToField("Source", paramStr0, size); if (!EnsureField(pSource, paramStr0)) { return(false); } Navigator pNav = new Navigator(); Recordset pRS = new Recordset(); pRS.AddField(pSource); pNav.Recordset_ = pRS; // Calculate the indicator Oscillator ta = new Oscillator(); Recordset pInd = ta.DetrendedPriceOscillator(pNav, pSource, paramInt1, param2, FullName); // Output the indicator values Clear(); for (int n = 0; n < size; ++n) { AppendValue(DM.GetTimeStampByIndex(n), n < paramInt1 * 2 ? null : pInd.Value(FullName, n + 1)); } return(_calculateResult = PostCalculate()); }
/// <summary> /// Action to be executd for calculating indicator /// </summary> /// <returns>for future usage. Must be ignored at this time.</returns> protected override bool TrueAction() { // Validate int size = _chartPanel._chartX.RecordCount; if (size == 0) { return(false); } int paramInt1 = ParamInt(1); if (paramInt1 < 1 || paramInt1 > size) { ProcessError("Invalid Periods for indicator " + FullName, IndicatorErrorType.ShowErrorMessage); return(false); } // Get the data string paramStr0 = ParamStr(0); Field pHigh = SeriesToField("High", paramStr0 + ".high", size); if (!EnsureField(pHigh, paramStr0 + ".high")) { return(false); } Field pLow = SeriesToField("Low", paramStr0 + ".low", size); if (!EnsureField(pLow, paramStr0 + ".low")) { return(false); } Navigator pNav = new Navigator(); Recordset pRS = new Recordset(); pRS.AddField(pHigh); pRS.AddField(pLow); pNav.Recordset_ = pRS; // Calculate the indicator Oscillator ta = new Oscillator(); Recordset pInd = ta.FractalChaosOscillator(pNav, pRS, paramInt1, FullName); // Output the indicator values Clear(); for (int n = 0; n < size; ++n) { AppendValue(DM.GetTimeStampByIndex(n), n < paramInt1 ? null : pInd.Value(FullName, n + 1)); } return(_calculateResult = PostCalculate()); }
/// <summary> /// Action to be executd for calculating indicator /// </summary> /// <returns>for future usage. Must be ignored at this time.</returns> protected override bool TrueAction() { // Validate int size = _chartPanel._chartX.RecordCount; if (size == 0) { return(false); } // Get the data string paramStr0 = ParamStr(0); Field pHigh = SeriesToField("High", paramStr0 + ".high", size); if (!EnsureField(pHigh, paramStr0 + ".high")) { return(false); } Field pLow = SeriesToField("Low", paramStr0 + ".low", size); if (!EnsureField(pLow, paramStr0 + ".low")) { return(false); } Navigator pNav = new Navigator(); Recordset pRS = new Recordset(); pRS.AddField(pHigh); pRS.AddField(pLow); pNav.Recordset_ = pRS; // Calculate the indicator General ta = new General(); Recordset pInd = ta.HighMinusLow(pNav, pRS, FullName); // Output the indicator values Clear(); for (int n = 0; n < size; ++n) { AppendValue(DM.GetTimeStampByIndex(n), pInd.Value(FullName, n + 1)); } return(_calculateResult = PostCalculate()); }
/// <summary> /// Action to be executd for calculating indicator /// </summary> /// <returns>for future usage. Must be ignored at this time.</returns> protected override bool TrueAction() { // Validate int size = _chartPanel._chartX.RecordCount; if (size == 0) { return(false); } int paramInt1 = ParamInt(1); if (paramInt1 < 6 || paramInt1 > size / 2) { ProcessError("Invalid Periods (min 6) for indicator " + FullName, IndicatorErrorType.ShowErrorMessage); return(false); } // Get the data string paramStr0 = ParamStr(0); Field pHigh = SeriesToField("High", paramStr0 + ".high", size); if (!EnsureField(pHigh, paramStr0 + ".high")) { return(false); } Field pLow = SeriesToField("Low", paramStr0 + ".low", size); if (!EnsureField(pLow, paramStr0 + ".low")) { return(false); } Field pClose = SeriesToField("Close", paramStr0 + ".close", size); if (!EnsureField(pClose, paramStr0 + ".close")) { return(false); } Navigator pNav = new Navigator(); Recordset pRS = new Recordset(); pRS.AddField(pHigh); pRS.AddField(pLow); pRS.AddField(pClose); pNav.Recordset_ = pRS; // Calculate the indicator Bands ta = new Bands(); Recordset pInd = ta.HighLowBands(pNav, pHigh, pLow, pClose, paramInt1); // Output the indicator values Clear(); TwinIndicator sTop = (TwinIndicator)EnsureSeries(FullName + " Top"); sTop.SetStrokeColor(StrokeColor, false); sTop.SetStrokeThickness(StrokeThickness, false); TwinIndicator sBottom = (TwinIndicator)EnsureSeries(FullName + " Bottom"); sBottom.SetStrokeColor(StrokeColor, false); sBottom.SetStrokeThickness(StrokeThickness, false); for (int n = 0; n < size; ++n) { double?top; double?bottom; double?median; if (n < paramInt1) { top = null; median = null; bottom = null; } else { top = pInd.Value("High Low Bands Top", n + 1); median = pInd.Value("High Low Bands Median", n + 1); bottom = pInd.Value("High Low Bands Bottom", n + 1); } AppendValue(DM.GetTimeStampByIndex(n), median); sTop.AppendValue(DM.GetTimeStampByIndex(n), top); sBottom.AppendValue(DM.GetTimeStampByIndex(n), bottom); } return(_calculateResult = PostCalculate()); }
/// <summary> /// Action to be executd for calculating indicator /// </summary> /// <returns>for future usage. Must be ignored at this time.</returns> protected override bool TrueAction() { // Validate int size = _chartPanel._chartX.RecordCount; if (size == 0) { return(false); } int paramInt1 = ParamInt(1); if (paramInt1 < 1 || paramInt1 > size / 2) { ProcessError("Invalid Periods for indicator " + FullName, IndicatorErrorType.ShowErrorMessage); return(false); } // Get the data string paramStr0 = ParamStr(0); Field pOpen = SeriesToField("Open", paramStr0 + ".open", size); if (!EnsureField(pOpen, paramStr0 + ".open")) { return(false); } Field pHigh = SeriesToField("High", paramStr0 + ".high", size); if (!EnsureField(pHigh, paramStr0 + ".high")) { return(false); } Field pLow = SeriesToField("Low", paramStr0 + ".low", size); if (!EnsureField(pLow, paramStr0 + ".low")) { return(false); } Field pClose = SeriesToField("Close", paramStr0 + ".close", size); if (!EnsureField(pClose, paramStr0 + ".close")) { return(false); } Navigator pNav = new Navigator(); Recordset pRS = new Recordset(); pRS.AddField(pOpen); pRS.AddField(pHigh); pRS.AddField(pLow); pRS.AddField(pClose); pNav.Recordset_ = pRS; // Calculate the indicator Oscillator ta = new Oscillator(); Recordset pInd = ta.Aroon(pNav, pRS, paramInt1); // Output the indicator values Clear(); TwinIndicator pAroonDown = (TwinIndicator)EnsureSeries(FullName + " Down"); pAroonDown.SetStrokeThickness(StrokeThickness, false); pAroonDown.SetStrokeColor(Colors.Red, false); pAroonDown.Clear(); _title = FullName + " Up"; for (int n = 0; n < size; ++n) { double?top; double?bottom; if (n < paramInt1) { top = null; bottom = null; } else { top = pInd.Value("Aroon Up", n + 1); bottom = pInd.Value("Aroon Down", n + 1); } AppendValue(DM.GetTimeStampByIndex(n), top); pAroonDown.AppendValue(DM.GetTimeStampByIndex(n), bottom); } return(_calculateResult = PostCalculate()); }
/// <summary> /// Action to be executd for calculating indicator /// </summary> /// <returns>for future usage. Must be ignored at this time.</returns> protected override bool TrueAction() { // Validate int size = _chartPanel._chartX.RecordCount; if (size == 0) { return(false); } int paramInt1 = ParamInt(1); int paramInt2 = ParamInt(2); IndicatorType param3 = (IndicatorType)ParamInt(3); if (paramInt1 < 1 || paramInt1 > size / 2) { ProcessError("Invalid Periods for indicator " + FullName, IndicatorErrorType.ShowErrorMessage); return(false); } if (paramInt2 <= 0) { ProcessError("Invalid Rate of Change for indicator " + FullName, IndicatorErrorType.ShowErrorMessage); return(false); } if (param3 < Constants.MA_START || param3 > Constants.MA_END) { ProcessError("Invalid Moving Average Type for indicator " + FullName, IndicatorErrorType.ShowErrorMessage); return(false); } // Get the data string paramStr0 = ParamStr(0); Field pOpen = SeriesToField("Open", paramStr0 + ".open", size); if (!EnsureField(pOpen, paramStr0 + ".open")) { return(false); } Field pHigh = SeriesToField("High", paramStr0 + ".high", size); if (!EnsureField(pHigh, paramStr0 + ".high")) { return(false); } Field pLow = SeriesToField("Low", paramStr0 + ".low", size); if (!EnsureField(pLow, paramStr0 + ".low")) { return(false); } Field pClose = SeriesToField("Close", paramStr0 + ".close", size); if (!EnsureField(pClose, paramStr0 + ".close")) { return(false); } Navigator pNav = new Navigator(); Recordset pRS = new Recordset(); pRS.AddField(pOpen); pRS.AddField(pHigh); pRS.AddField(pLow); pRS.AddField(pClose); pNav.Recordset_ = pRS; // Calculate the indicator Oscillator ta = new Oscillator(); Recordset pInd = ta.ChaikinVolatility(pNav, pRS, paramInt1, paramInt2, param3, FullName); // Output the indicator values Clear(); for (int n = 0; n < size; ++n) { AppendValue(DM.GetTimeStampByIndex(n), n < paramInt1 ? null : pInd.Value(FullName, n + 1)); } return(_calculateResult = PostCalculate()); }
/// <summary> /// Action to be executd for calculating indicator /// </summary> /// <returns>for future usage. Must be ignored at this time.</returns> protected override bool TrueAction() { // Validate int size = _chartPanel._chartX.RecordCount; if (size == 0) { return(false); } int paramInt1 = ParamInt(1); if (paramInt1 < 1 || paramInt1 > size / 2) { ProcessError("Invalid Periods for indicator " + FullName, IndicatorErrorType.ShowErrorMessage); return(false); } int paramInt2 = ParamInt(2); if (paramInt2 < 1) { ProcessError("Invalid Bar History for indicator " + FullName, IndicatorErrorType.ShowErrorMessage); return(false); } int paramInt3 = ParamInt(3); if (paramInt3 < 0) { ProcessError("Invalid Standard Deviations for indicator " + FullName, IndicatorErrorType.ShowErrorMessage); return(false); } // Get the data string paramStr0 = ParamStr(0); Field pSource = SeriesToField("Source", paramStr0, size); if (!EnsureField(pSource, paramStr0)) { return(false); } Navigator pNav = new Navigator(); Recordset pRS = new Recordset(); pRS.AddField(pSource); pNav.Recordset_ = pRS; // Calculate the indicator Index ta = new Index(); Recordset pInd = ta.HistoricalVolatility(pNav, pSource, paramInt1, paramInt2, paramInt3, FullName); // Output the indicator values Clear(); for (int n = 0; n < size; ++n) { AppendValue(DM.GetTimeStampByIndex(n), n < paramInt1 ? null : pInd.Value(FullName, n + 1)); } return(_calculateResult = PostCalculate()); }
/// <summary> /// Action to be executd for calculating indicator /// </summary> /// <returns>for future usage. Must be ignored at this time.</returns> protected override bool TrueAction() { // Validate int size = _chartPanel._chartX.RecordCount; if (size == 0) { return(false); } int paramInt1 = ParamInt(1); if (paramInt1 < 1 || paramInt1 > size) { ProcessError("Invalid Periods for indicator " + FullName, IndicatorErrorType.ShowErrorMessage); return(false); } // Get the data string paramStr0 = ParamStr(0); Field pHigh = SeriesToField("High", paramStr0 + ".high", size); if (!EnsureField(pHigh, paramStr0 + ".high")) { return(false); } Field pLow = SeriesToField("Low", paramStr0 + ".low", size); if (!EnsureField(pLow, paramStr0 + ".low")) { return(false); } Navigator pNav = new Navigator(); Recordset pRS = new Recordset(); pRS.AddField(pHigh); pRS.AddField(pLow); pNav.Recordset_ = pRS; // Calculate the indicator Bands ta = new Bands(); Recordset pInd = ta.FractalChaosBands(pNav, pRS, paramInt1); // Output the indicator values Clear(); TwinIndicator sHigh = (TwinIndicator)EnsureSeries(FullName + " High"); sHigh.SetStrokeColor(StrokeColor, false); sHigh.SetStrokeThickness(StrokeThickness, false); _title = FullName + " Low"; for (int n = 0; n < size; ++n) { double?low; double?high; if (n < paramInt1) { high = null; low = null; } else { high = pInd.Value("Fractal High", n + 1); low = pInd.Value("Fractal Low", n + 1); } AppendValue(DM.GetTimeStampByIndex(n), low); sHigh.AppendValue(DM.GetTimeStampByIndex(n), high); } return(_calculateResult = PostCalculate()); }
/// <summary> /// Action to be executd for calculating indicator /// </summary> /// <returns>for future usage. Must be ignored at this time.</returns> protected override bool TrueAction() { // Validate int size = _chartPanel._chartX.RecordCount; if (size == 0) { return(false); } int paramInt2 = ParamInt(2); if (paramInt2 < 1 || paramInt2 > size / 2) { ProcessError("Invalid Periods for indicator " + FullName, IndicatorErrorType.ShowErrorMessage); return(false); } // Get the data string paramStr0 = ParamStr(0); string paramStr1 = ParamStr(1); Field pOpen = SeriesToField("Open", paramStr0 + ".open", size); if (!EnsureField(pOpen, paramStr0 + ".open")) { return(false); } Field pHigh = SeriesToField("High", paramStr0 + ".high", size); if (!EnsureField(pHigh, paramStr0 + ".high")) { return(false); } Field pLow = SeriesToField("Low", paramStr0 + ".low", size); if (!EnsureField(pLow, paramStr0 + ".low")) { return(false); } Field pClose = SeriesToField("Close", paramStr0 + ".close", size); if (!EnsureField(pClose, paramStr0 + ".close")) { return(false); } Field pVolume = SeriesToField("Volume", paramStr1, size); if (!EnsureField(pVolume, paramStr1)) { return(false); } Navigator pNav = new Navigator(); Recordset pRS = new Recordset(); pRS.AddField(pOpen); pRS.AddField(pHigh); pRS.AddField(pLow); pRS.AddField(pClose); pRS.AddField(pVolume); pNav.Recordset_ = pRS; // Calculate the indicator Index ta = new Index(); Recordset pInd = ta.ChaikinMoneyFlow(pNav, pRS, paramInt2, FullName); // Output the indicator values Clear(); for (int n = 0; n < size; ++n) { AppendValue(DM.GetTimeStampByIndex(n), n < paramInt2 ? null : pInd.Value(FullName, n + 1)); } return(_calculateResult = PostCalculate()); }
/// <summary> /// Action to be executd for calculating indicator /// </summary> /// <returns>for future usage. Must be ignored at this time.</returns> protected override bool TrueAction() { // Validate int size = _chartPanel._chartX.RecordCount; if (size == 0) { return(false); } int paramInt1 = ParamInt(1); if (paramInt1 < 1 || paramInt1 > size / 2) { ProcessError("Invalid Periods for indicator " + FullName, IndicatorErrorType.ShowErrorMessage); return(false); } // Get the data string paramStr0 = ParamStr(0); Field pOpen = SeriesToField("Open", paramStr0 + ".open", size); if (!EnsureField(pOpen, paramStr0 + ".open")) { return(false); } Field pHigh = SeriesToField("High", paramStr0 + ".high", size); if (!EnsureField(pHigh, paramStr0 + ".high")) { return(false); } Field pLow = SeriesToField("Low", paramStr0 + ".low", size); if (!EnsureField(pLow, paramStr0 + ".low")) { return(false); } Field pClose = SeriesToField("Close", paramStr0 + ".close", size); if (!EnsureField(pClose, paramStr0 + ".close")) { return(false); } Navigator pNav = new Navigator(); Recordset pRS = new Recordset(); pRS.AddField(pOpen); pRS.AddField(pHigh); pRS.AddField(pLow); pRS.AddField(pClose); pNav.Recordset_ = pRS; // Calculate the indicator Oscillator ta = new Oscillator(); Recordset pInd = ta.DirectionalMovementSystem(pNav, pRS, paramInt1); // Output the indicator values Clear(); TwinIndicator sDIPlus = (TwinIndicator)EnsureSeries(FullName + " DI+"); TwinIndicator sDIMinus = (TwinIndicator)EnsureSeries(FullName + " DI-"); sDIPlus.SetStrokeColor(Colors.Red, false); sDIMinus.SetStrokeColor(Colors.Blue, false); _title = "ADX"; for (int n = 0; n < size; ++n) { double?adx; double?din; double?dip; if (n < paramInt1) { adx = null; dip = null; din = null; } else { adx = pInd.Value("ADX", n + 1); dip = pInd.Value("DI+", n + 1); din = pInd.Value("DI-", n + 1); } AppendValue(DM.GetTimeStampByIndex(n), adx); sDIPlus.AppendValue(DM.GetTimeStampByIndex(n), dip); sDIMinus.AppendValue(DM.GetTimeStampByIndex(n), din); } return(_calculateResult = PostCalculate()); }