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); } }
/// <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); } }