- using System;
- using System.Windows.Media;
- using NinjaTrader.NinjaScript;
- using NinjaTrader.NinjaScript.Indicators;
- using NinjaTrader.NinjaScript.DrawingTools;
- namespace NinjaTrader.NinjaScript.AddOns
- {
- public class RangeComparisonIndicator : Indicator
- {
- private int period;
- private SolidColorBrush highlightColor;
- protected override void OnStateChange()
- {
- if (State == State.SetDefaults)
- {
- Description = "Highlights bars with range less than the past n bars.";
- Name = "Range Comparison Indicator";
- Calculate = Calculate.OnBarClose;
- IsOverlay = false;
- DisplayInDataBox = true;
- DrawOnPricePanel = true;
- IsSuspendedWhileInactive = true;
- period = 5; // Change this to the desired period
- highlightColor = Brushes.Red; // Change this to the desired highlight color
- }
- }
- protected override void OnBarUpdate()
- {
- if (CurrentBar < period)
- return;
- double currentRange = High[0] - Low[0];
- double sumPastRange = 0;
- for (int i = 1; i <= period; i++)
- {
- double pastRange = High[i] - Low[i];
- sumPastRange += pastRange;
- }
- SolidColorBrush barHighlightColor = highlightColor; // Renamed variable
- if (currentRange < sumPastRange / period)
- BarBrush = barHighlightColor;
- else
- BarBrush = Brushes.Transparent;
- }
- }
- }
- region NinjaScript generated code. Neither change nor remove.
- namespace NinjaTrader.NinjaScript.Indicators
- {
- public partial class Indicator : NinjaTrader.Gui.NinjaScript.IndicatorRenderBase
- {
- private RangeComparisonIndicator[] cacheRangeComparisonIndicator;
- public RangeComparisonIndicator RangeComparisonIndicator()
- {
- return RangeComparisonIndicator(Input);
- }
- public RangeComparisonIndicator RangeComparisonIndicator(ISeries<double> input)
- {
- if (cacheRangeComparisonIndicator != null)
- for (int idx = 0; idx < cacheRangeComparisonIndicator.Length; idx++)
- if (cacheRangeComparisonIndicator[idx] != null && cacheRangeComparisonIndicator[idx].EqualsInput(input))
- return cacheRangeComparisonIndicator[idx];
- return CacheIndicator<RangeComparisonIndicator>(new RangeComparisonIndicator(), input, ref cacheRangeComparisonIndicator);
- }
- }
- }
- namespace NinjaTrader.NinjaScript.MarketAnalyzerColumns
- {
- public partial class MarketAnalyzerColumn : MarketAnalyzerColumnBase
- {
- public Indicators.RangeComparisonIndicator RangeComparisonIndicator()
- {
- return indicator.RangeComparisonIndicator(Input);
- }
- public Indicators.RangeComparisonIndicator RangeComparisonIndicator(ISeries<double> input )
- {
- return indicator.RangeComparisonIndicator(input);
- }
- }
- }
- namespace NinjaTrader.NinjaScript.Strategies
- {
- public partial class Strategy : NinjaTrader.Gui.NinjaScript.StrategyRenderBase
- {
- public Indicators.RangeComparisonIndicator RangeComparisonIndicator()
- {
- return indicator.RangeComparisonIndicator(Input);
- }
- public Indicators.RangeComparisonIndicator RangeComparisonIndicator(ISeries<double> input )
- {
- return indicator.RangeComparisonIndicator(input);
- }
- }
- }
- #endregion

Comment