Standard-series rolling support and resistance pattern
Illustrative single-file NinjaScript pattern using ordinary High and Low series. Review naming, warm-up, calculation mode, and drawing behavior in NinjaScript Editor before use.
using System;
using System.ComponentModel.DataAnnotations;
using System.Windows.Media;
using NinjaTrader.NinjaScript;
using NinjaTrader.NinjaScript.DrawingTools;
namespace NinjaTrader.NinjaScript.Indicators
{
public class RollingSupportResistance : Indicator
{
[NinjaScriptProperty]
[Range(1, 500)]
public int Lookback { get; set; }
protected override void OnStateChange()
{
if (State == State.SetDefaults)
{
Name = "RollingSupportResistance";
IsOverlay = true;
Calculate = Calculate.OnBarClose;
Lookback = 20;
}
}
protected override void OnBarUpdate()
{
if (CurrentBar < Lookback)
return;
double support = Low[0];
double resistance = High[0];
for (int barsAgo = 1; barsAgo < Lookback; barsAgo++)
{
support = Math.Min(support, Low[barsAgo]);
resistance = Math.Max(resistance, High[barsAgo]);
}
Draw.HorizontalLine(this, "RollingSupport", support, Brushes.SteelBlue);
Draw.HorizontalLine(this, "RollingResistance", resistance, Brushes.IndianRed);
}
}
}