/// <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());
        }
Ejemplo n.º 2
0
        /// <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());
        }
Ejemplo n.º 3
0
        /// <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());
        }
Ejemplo n.º 4
0
        /// <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());
        }
Ejemplo n.º 5
0
        /// <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());
        }
Ejemplo n.º 6
0
        /// <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());
        }
Ejemplo n.º 7
0
        /// <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());
        }
Ejemplo n.º 9
0
        /// <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());
        }
Ejemplo n.º 10
0
        /// <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());
        }