Esempio n. 1
0
        /// <summary>
        /// Signal buy or sell on pullback off RSI on 3 MAs
        /// </summary>
        /// <returns></returns>
        public ZZRSIPullback ZZRSIPullback(Data.IDataSeries input, int alertOn, int longMA, int medMA, int rSIThres, int shortMA)
        {
            if (cacheZZRSIPullback != null)
            {
                for (int idx = 0; idx < cacheZZRSIPullback.Length; idx++)
                {
                    if (cacheZZRSIPullback[idx].AlertOn == alertOn && cacheZZRSIPullback[idx].LongMA == longMA && cacheZZRSIPullback[idx].MedMA == medMA && cacheZZRSIPullback[idx].RSIThres == rSIThres && cacheZZRSIPullback[idx].ShortMA == shortMA && cacheZZRSIPullback[idx].EqualsInput(input))
                    {
                        return(cacheZZRSIPullback[idx]);
                    }
                }
            }

            lock (checkZZRSIPullback)
            {
                checkZZRSIPullback.AlertOn = alertOn;
                alertOn = checkZZRSIPullback.AlertOn;
                checkZZRSIPullback.LongMA = longMA;
                longMA = checkZZRSIPullback.LongMA;
                checkZZRSIPullback.MedMA = medMA;
                medMA = checkZZRSIPullback.MedMA;
                checkZZRSIPullback.RSIThres = rSIThres;
                rSIThres = checkZZRSIPullback.RSIThres;
                checkZZRSIPullback.ShortMA = shortMA;
                shortMA = checkZZRSIPullback.ShortMA;

                if (cacheZZRSIPullback != null)
                {
                    for (int idx = 0; idx < cacheZZRSIPullback.Length; idx++)
                    {
                        if (cacheZZRSIPullback[idx].AlertOn == alertOn && cacheZZRSIPullback[idx].LongMA == longMA && cacheZZRSIPullback[idx].MedMA == medMA && cacheZZRSIPullback[idx].RSIThres == rSIThres && cacheZZRSIPullback[idx].ShortMA == shortMA && cacheZZRSIPullback[idx].EqualsInput(input))
                        {
                            return(cacheZZRSIPullback[idx]);
                        }
                    }
                }

                ZZRSIPullback indicator = new ZZRSIPullback();
                indicator.BarsRequired        = BarsRequired;
                indicator.CalculateOnBarClose = CalculateOnBarClose;
#if NT7
                indicator.ForceMaximumBarsLookBack256 = ForceMaximumBarsLookBack256;
                indicator.MaximumBarsLookBack         = MaximumBarsLookBack;
#endif
                indicator.Input    = input;
                indicator.AlertOn  = alertOn;
                indicator.LongMA   = longMA;
                indicator.MedMA    = medMA;
                indicator.RSIThres = rSIThres;
                indicator.ShortMA  = shortMA;
                Indicators.Add(indicator);
                indicator.SetUp();

                ZZRSIPullback[] tmp = new ZZRSIPullback[cacheZZRSIPullback == null ? 1 : cacheZZRSIPullback.Length + 1];
                if (cacheZZRSIPullback != null)
                {
                    cacheZZRSIPullback.CopyTo(tmp, 0);
                }
                tmp[tmp.Length - 1] = indicator;
                cacheZZRSIPullback  = tmp;
                return(indicator);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Signal buy or sell on pullback off RSI on 3 MAs
        /// </summary>
        /// <returns></returns>
        public ZZRSIPullback ZZRSIPullback(Data.IDataSeries input, int alertOn, int longMA, int medMA, int rSIThres, int shortMA)
        {
            if (cacheZZRSIPullback != null)
                for (int idx = 0; idx < cacheZZRSIPullback.Length; idx++)
                    if (cacheZZRSIPullback[idx].AlertOn == alertOn && cacheZZRSIPullback[idx].LongMA == longMA && cacheZZRSIPullback[idx].MedMA == medMA && cacheZZRSIPullback[idx].RSIThres == rSIThres && cacheZZRSIPullback[idx].ShortMA == shortMA && cacheZZRSIPullback[idx].EqualsInput(input))
                        return cacheZZRSIPullback[idx];

            lock (checkZZRSIPullback)
            {
                checkZZRSIPullback.AlertOn = alertOn;
                alertOn = checkZZRSIPullback.AlertOn;
                checkZZRSIPullback.LongMA = longMA;
                longMA = checkZZRSIPullback.LongMA;
                checkZZRSIPullback.MedMA = medMA;
                medMA = checkZZRSIPullback.MedMA;
                checkZZRSIPullback.RSIThres = rSIThres;
                rSIThres = checkZZRSIPullback.RSIThres;
                checkZZRSIPullback.ShortMA = shortMA;
                shortMA = checkZZRSIPullback.ShortMA;

                if (cacheZZRSIPullback != null)
                    for (int idx = 0; idx < cacheZZRSIPullback.Length; idx++)
                        if (cacheZZRSIPullback[idx].AlertOn == alertOn && cacheZZRSIPullback[idx].LongMA == longMA && cacheZZRSIPullback[idx].MedMA == medMA && cacheZZRSIPullback[idx].RSIThres == rSIThres && cacheZZRSIPullback[idx].ShortMA == shortMA && cacheZZRSIPullback[idx].EqualsInput(input))
                            return cacheZZRSIPullback[idx];

                ZZRSIPullback indicator = new ZZRSIPullback();
                indicator.BarsRequired = BarsRequired;
                indicator.CalculateOnBarClose = CalculateOnBarClose;
#if NT7
                indicator.ForceMaximumBarsLookBack256 = ForceMaximumBarsLookBack256;
                indicator.MaximumBarsLookBack = MaximumBarsLookBack;
#endif
                indicator.Input = input;
                indicator.AlertOn = alertOn;
                indicator.LongMA = longMA;
                indicator.MedMA = medMA;
                indicator.RSIThres = rSIThres;
                indicator.ShortMA = shortMA;
                Indicators.Add(indicator);
                indicator.SetUp();

                ZZRSIPullback[] tmp = new ZZRSIPullback[cacheZZRSIPullback == null ? 1 : cacheZZRSIPullback.Length + 1];
                if (cacheZZRSIPullback != null)
                    cacheZZRSIPullback.CopyTo(tmp, 0);
                tmp[tmp.Length - 1] = indicator;
                cacheZZRSIPullback = tmp;
                return indicator;
            }
        }