#region Using declarations using System; using System.Collections.Generic; using System.ComponentModel; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Input; using System.Windows.Media; using System.Xml.Serialization; using NinjaTrader.Cbi; using NinjaTrader.Gui; using NinjaTrader.Gui.Chart; using NinjaTrader.Gui.SuperDom; using NinjaTrader.Gui.Tools; using NinjaTrader.Data; using NinjaTrader.NinjaScript; using NinjaTrader.Core.FloatingPoint; using NinjaTrader.NinjaScript.DrawingTools; #endregion namespace NinjaTrader.NinjaScript.Indicators { public class CycleMestor : Indicator { private Series I; private SMA sma; protected override void OnStateChange() { if (State == State.SetDefaults) { Description = @"Cycle Mestor"; Name = "CycleMestor"; IsOverlay = false; IsSuspendedWhileInactive = true; AddPlot(Brushes.DarkCyan, "Cycle"); AddLine(Brushes.DimGray, 0, "ZeroLine"); } else if (State == State.DataLoaded) { I = new Series(this); sma = SMA(I, 9); } } protected override void OnBarUpdate() { if (CurrentBar < 74) return; I[0] = ( 4.1*Stochastics(3,5,3).K[0] + 2.5*Stochastics(3,14,3).K[0] + Stochastics(3,45,14).K[0] + 4*Stochastics(3,75,20).K[0] )/11.6; if (CurrentBar < 100) return; Cycle[0] = I[0] - sma[0]; } #region Properties [Browsable(false)] [XmlIgnore()] public Series Cycle { get { return Values[0]; } } #endregion } } #region NinjaScript generated code. Neither change nor remove. namespace NinjaTrader.NinjaScript.Indicators { public partial class Indicator : NinjaTrader.Gui.NinjaScript.IndicatorRenderBase { private CycleMestor[] cacheCycleMestor; public CycleMestor CycleMestor() { return CycleMestor(Input); } public CycleMestor CycleMestor(ISeries input) { if (cacheCycleMestor != null) for (int idx = 0; idx < cacheCycleMestor.Length; idx++) if (cacheCycleMestor[idx] != null && cacheCycleMestor[idx].EqualsInput(input)) return cacheCycleMestor[idx]; return CacheIndicator(new CycleMestor(), input, ref cacheCycleMestor); } } } namespace NinjaTrader.NinjaScript.MarketAnalyzerColumns { public partial class MarketAnalyzerColumn : MarketAnalyzerColumnBase { public Indicators.CycleMestor CycleMestor() { return indicator.CycleMestor(Input); } public Indicators.CycleMestor CycleMestor(ISeries input ) { return indicator.CycleMestor(input); } } } namespace NinjaTrader.NinjaScript.Strategies { public partial class Strategy : NinjaTrader.Gui.NinjaScript.StrategyRenderBase { public Indicators.CycleMestor CycleMestor() { return indicator.CycleMestor(Input); } public Indicators.CycleMestor CycleMestor(ISeries input ) { return indicator.CycleMestor(input); } } } #endregion