예제 #1
0
 protected override void OnBarUpdate()
 {
     if (base.CurrentBar >= 1)
     {
         if (showSponsor)
         {
             DrawTextFixed("tag1", "www.ewef.net", TextPosition.BottomLeft);       //Added Sim22
         }
         MACDGapless macd  = base.MACDGapless(base.Close, 8, 0x15, 1, useGapless); //gapless added Sim22
         MACDGapless macd2 = base.MACDGapless(base.Close, 8, 0x22, 1, useGapless); //gapless added Sim22
         MACDGapless macd3 = base.MACDGapless(base.Close, 8, 0x37, 1, useGapless); //gapless added Sim22
         double      num   = macd.Default[0];
         double      num2  = base.EMA(macd.Default, 0x15)[0];
         double      num3  = num - num2;
         this.Wave1.Set(num3);
         double num4 = macd2.Default[0];
         double num5 = base.EMA(macd2.Default, 0x22)[0];
         double num6 = num4 - num5;
         this.Wave1.Set(num6);
         double num7 = macd3.Default[0];
         double num8 = base.EMA(macd3.Default, 0x37)[0];
         double num9 = num7 - num8;
         this.Wave2.Set(num9);
     }
 }
예제 #2
0
        /// <summary>
        /// The MACD (Moving Average Convergence/Divergence) is a trend following momentum indicator that shows the relationship between two moving averages of prices.
        /// </summary>
        /// <returns></returns>
        public MACDGapless MACDGapless(Data.IDataSeries input, int fast, int slow, int smooth, bool useGapless)
        {
            if (cacheMACDGapless != null)
            {
                for (int idx = 0; idx < cacheMACDGapless.Length; idx++)
                {
                    if (cacheMACDGapless[idx].Fast == fast && cacheMACDGapless[idx].Slow == slow && cacheMACDGapless[idx].Smooth == smooth && cacheMACDGapless[idx].UseGapless == useGapless && cacheMACDGapless[idx].EqualsInput(input))
                    {
                        return(cacheMACDGapless[idx]);
                    }
                }
            }

            lock (checkMACDGapless)
            {
                checkMACDGapless.Fast = fast;
                fast = checkMACDGapless.Fast;
                checkMACDGapless.Slow = slow;
                slow = checkMACDGapless.Slow;
                checkMACDGapless.Smooth = smooth;
                smooth = checkMACDGapless.Smooth;
                checkMACDGapless.UseGapless = useGapless;
                useGapless = checkMACDGapless.UseGapless;

                if (cacheMACDGapless != null)
                {
                    for (int idx = 0; idx < cacheMACDGapless.Length; idx++)
                    {
                        if (cacheMACDGapless[idx].Fast == fast && cacheMACDGapless[idx].Slow == slow && cacheMACDGapless[idx].Smooth == smooth && cacheMACDGapless[idx].UseGapless == useGapless && cacheMACDGapless[idx].EqualsInput(input))
                        {
                            return(cacheMACDGapless[idx]);
                        }
                    }
                }

                MACDGapless indicator = new MACDGapless();
                indicator.BarsRequired        = BarsRequired;
                indicator.CalculateOnBarClose = CalculateOnBarClose;
#if NT7
                indicator.ForceMaximumBarsLookBack256 = ForceMaximumBarsLookBack256;
                indicator.MaximumBarsLookBack         = MaximumBarsLookBack;
#endif
                indicator.Input      = input;
                indicator.Fast       = fast;
                indicator.Slow       = slow;
                indicator.Smooth     = smooth;
                indicator.UseGapless = useGapless;
                Indicators.Add(indicator);
                indicator.SetUp();

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