Trying to get ATR to plot from input of 10 minute bars. I've tried with many other different values for the primary data series and it does not seem to impact my results.
Code below:
#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.Indicators; using NinjaTrader.NinjaScript.DrawingTools; #endregion //This namespace holds Strategies in this folder and is required. Do not change it. namespace NinjaTrader.NinjaScript.Strategies { public class multiATR : Strategy { private ATR _atr; protected override void OnStateChange() { if (State == State.SetDefaults) { Description = @"Multi-timeframe Test"; Name = "multiATR"; Calculate = Calculate.OnBarClose; EntriesPerDirection = 1; EntryHandling = EntryHandling.AllEntries; IsExitOnSessionCloseStrategy = true; ExitOnSessionCloseSeconds = 30; IsFillLimitOnTouch = false; MaximumBarsLookBack = MaximumBarsLookBack.Infinite; OrderFillResolution = OrderFillResolution.Standard; Slippage = 0; StartBehavior = StartBehavior.WaitUntilFlat; TimeInForce = TimeInForce.Gtc; TraceOrders = false; RealtimeErrorHandling = RealtimeErrorHandling.StopCancelClose; StopTargetHandling = StopTargetHandling.PerEntryExecution; BarsRequiredToTrade = 20; IsInstantiatedOnEachOptimizationIteration = true; periodATR = 5; minATRrange = 4; InitialCapital = 20000; } else if (State == State.DataLoaded) { _atr = ATR(BarsArray[2], periodATR); AddChartIndicator(_atr); base.ClearOutputWindow(); } else if (State == State.Configure) { AddDataSeries(BarsPeriodType.Tick, 1); AddDataSeries(BarsPeriodType.Minute, 10); } } protected override void OnBarUpdate() { if ((CurrentBars[0] < 252) || (CurrentBars[2] < periodATR)) return; if (BarsInProgress != 0) return; if (IsFlat) { if (ConditionLongEntry) { EnterLong(); } else if (ConditionShortEntry) { EnterShort(); } } else if (IsLong && ConditionLongExit) { ExitLong(); } else if (IsShort && ConditionShortExit) { ExitShort(); } } bool MarketType { get { return (_atr[0] > minATRrange); } } bool ConditionLongEntry { get { return true; } } bool ConditionShortEntry { get { return true; } } bool ConditionLongExit { get { return true; } } bool ConditionShortExit { get { return true; } } #region Properties [NinjaScriptProperty] [Range(0, int.MaxValue)] [Display(ResourceType = typeof(Custom.Resource), Name = "periodATR", Description = "ATR Lookback Periods", Order = 1, GroupName = "NinjaScriptStrategyParameters")] public int periodATR { get; set; } [NinjaScriptProperty] [Range(0, double.MaxValue)] [Display(ResourceType = typeof(Custom.Resource), Name = "minATRrange", Description = "Minimum ATR to Trade", Order = 2, GroupName = "NinjaScriptStrategyParameters")] public double minATRrange { get; set; } [NinjaScriptProperty] [Range(0, double.MaxValue)] [Display(ResourceType = typeof(Custom.Resource), Name = "InitialCapital", Order = 3, GroupName = "NinjaScriptStrategyParameters")] public double InitialCapital { get; set; } #endregion } }
Comment