if (State == State.Configure){ rth = RTHEventIndicator(365); }
#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 //This namespace holds Indicators in this folder and is required. Do not change it. namespace NinjaTrader.NinjaScript.Indicators.Stoneworks { public class RTHEventIndicator : Indicator { protected override void OnStateChange() { Print("------ OnStateChange(" + State + ")"); if (State == State.SetDefaults) { Description = @"Test OnBarUpdate with dataSeries."; Name = "RTHEventIndicator"; IsOverlay = true; IsSuspendedWhileInactive = true; Calculate = Calculate.OnEachTick; Period = 365; // AddPlot(new Stroke(Brushes.Red, DashStyleHelper.Dash, 2), PlotStyle.Line, "RTHTest"); } else if (State == State.Configure) { AddDataSeries(Instrument.FullName, new BarsPeriod { BarsPeriodType = BarsPeriodType.Day, Value = 1 }, Period + 1, Instrument.MasterInstrument.TradingHours.Name, true); } else if (State == State.DataLoaded) { sessionIterator = new SessionIterator(BarsArray[1]); } } protected override void OnBarUpdate() { Print("----- OnBarUpdate()"); if (bars.IsFirstBarOfSession) { sessionIterator.GetNextSession(Time[0], true); } } #region Properties [NinjaScriptProperty] [Range(1, int.MaxValue)] [Display(Name="Period", Order=1, GroupName="Parameters")] public int Period { get; set; } #endregion } } #region NinjaScript generated code. Neither change nor remove. namespace NinjaTrader.NinjaScript.Indicators { public partial class Indicator : NinjaTrader.Gui.NinjaScript.IndicatorRenderBase { private Stoneworks.RTHEventIndicator[] cacheRTHEventIndicator; public Stoneworks.RTHEventIndicator RTHEventIndicator(int period) { return RTHEventIndicator(Input, period); } public Stoneworks.RTHEventIndicator RTHEventIndicator(ISeries<double> input, int period) { if (cacheRTHEventIndicator != null) for (int idx = 0; idx < cacheRTHEventIndicator.Length; idx++) if (cacheRTHEventIndicator[idx] != null && cacheRTHEventIndicator[idx].Period == period && cacheRTHEventIndicator[idx].EqualsInput(input)) return cacheRTHEventIndicator[idx]; return CacheIndicator<Stoneworks.RTHEventIndicator>(new Stoneworks.RTHEventIndicator(){ Period = period }, input, ref cacheRTHEventIndicator); } } } namespace NinjaTrader.NinjaScript.MarketAnalyzerColumns { public partial class MarketAnalyzerColumn : MarketAnalyzerColumnBase { public Indicators.Stoneworks.RTHEventIndicator RTHEventIndicator(int period) { return indicator.RTHEventIndicator(Input, period); } public Indicators.Stoneworks.RTHEventIndicator RTHEventIndicator(ISeries<double> input , int period) { return indicator.RTHEventIndicator(input, period); } } } namespace NinjaTrader.NinjaScript.Strategies { public partial class Strategy : NinjaTrader.Gui.NinjaScript.StrategyRenderBase { public Indicators.Stoneworks.RTHEventIndicator RTHEventIndicator(int period) { return indicator.RTHEventIndicator(Input, period); } public Indicators.Stoneworks.RTHEventIndicator RTHEventIndicator(ISeries<double> input , int period) { return indicator.RTHEventIndicator(input, period); } } } #endregion
Comment