I have compiled this indicator from an NT7 version.
It should plot an opening range every day, but it only plot on one day a couple of days back never on the sameday.
Thanks,!!!
------------------------------------------------------------
//
// Copyright (C) 2016, NinjaTrader LLC <www.ninjatrader.com>.
// NinjaTrader reserves the right to modify or overwrite this NinjaScript component with each release.
//
#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.Data;
using NinjaTrader.NinjaScript;
using NinjaTrader.Core.FloatingPoint;
using NinjaTrader.NinjaScript.DrawingTools;
using SharpDX;
#endregion
//This namespace holds Indicators in this folder and is required. Do not change it.
namespace NinjaTrader.NinjaScript.Indicators
{
public class AAORZone : Indicator
{
private Brush rangeAreaColor = Brushes.Red;
private double wk_zonesize = .0001;
private double HighestHigh = 0;
private double LowestLow = 0;
// simple state machine: 0-Waiting, 1-Collecting, 2-Finished
private int StateOfTime = 0;
protected override void OnStateChange()
{
if (State == State.SetDefaults)
{
Description = " ";
Name = "AAORZone";
Calculate = Calculate.OnEachTick;
DrawOnPricePanel = true;
IsChartOnly = true;
IsOverlay = true;
DisplayInDataBox = false;
PaintPriceMarkers = false;
RangePlusTicks = 20;
RangeAreaOpacity = 30;
BeginTime = 90000;
EndTime = 90500;
AddPlot(new Stroke(Brushes.Transparent,1), PlotStyle.Hash, "ORHigh");
AddPlot(new Stroke(Brushes.Transparent,1), PlotStyle.Hash, "ORLow");
AddPlot(new Stroke(Brushes.Maroon,1), PlotStyle.Hash, "ORHighPlus");
AddPlot(new Stroke(Brushes.Maroon,1), PlotStyle.Hash, "ORLowPlus");
}
else if (State == State.Configure)
{
AddDataSeries(Data.BarsPeriodType.Second, 1);
}
}
protected override void OnBarUpdate()
{
wk_zonesize = RangePlusTicks * TickSize;
if (BarsInProgress == 0)
{
if (HighestHigh > 0 && LowestLow > 0 && ToTime(Time[0]) > BeginTime)
{
ORHigh[0] = HighestHigh;
ORLow[0] = LowestLow;
ORHighPlus[0] = (HighestHigh + wk_zonesize);
ORLowPlus[0] = (LowestLow - wk_zonesize);
Draw.Region(this,"ColorRange", CurrentBar, 0, ORHigh, ORLow, Brushes.Transparent, RangeAreaColor, RangeAreaOpacity);
}
}
if (BarsInProgress == 1)
{
if (Bars.IsFirstBarOfSession)
{
HighestHigh = 0;
LowestLow = 0;
State = 0;
}
// waiting for start of opening range
if (StateOfTime == 0)
{
if (ToTime(Time[0]) >= BeginTime && ToTime(Time[0]) < EndTime)
{
HighestHigh = High[0];
LowestLow = Low[0];
StateOfTime = 1;
}
}
// collecting opening range?
else if (StateOfTime == 1)
{
if (ToTime(Time[0]) < EndTime)
{
if (High[0] > HighestHigh)
HighestHigh = High[0];
if (Low[0] < LowestLow)
LowestLow = Low[0];
}
else
// collection finished
StateOfTime = 2;
}
}
}
#region Properties
[Browsable(false)]
[XmlIgnore()]
public Series<double> ORHigh
{
get { return Values[0]; }
}
[Browsable(false)]
[XmlIgnore()]
public Series<double> ORLow
{
get { return Values[1]; }
}
[Browsable(false)]
[XmlIgnore()]
public Series<double> ORHighPlus
{
get { return Values[2]; }
}
[Browsable(false)]
[XmlIgnore()]
public Series<double> ORLowPlus
{
get { return Values[3]; }
}
[Range(1, int.MaxValue), NinjaScriptProperty]
[Display(ResourceType = typeof(Custom.Resource), Name = "Begin Time e.g.: 90000", GroupName = "OR", Order = 0)]
public int BeginTime
{ get; set; }
[Range(1, int.MaxValue), NinjaScriptProperty]
[Display(ResourceType = typeof(Custom.Resource), Name = "End Time e.g.: 90500", GroupName = "OR", Order = 1)]
public int EndTime
{ get; set; }
[XmlIgnore()]
[NinjaScriptProperty]
[Display(ResourceType = typeof(Custom.Resource), Name = "Range Area Color", GroupName = "OR", Order = 2)]
public Brush RangeAreaColor
{
get { return rangeAreaColor; }
set { rangeAreaColor = value; }
}
[Range(0, int.MaxValue), NinjaScriptProperty]
[Display(ResourceType = typeof(Custom.Resource), Name = "Range Area Opacity", GroupName = "OR", Order = 3)]
public int RangeAreaOpacity
{ get; set; }
[Range(0, int.MaxValue), NinjaScriptProperty]
[Display(ResourceType = typeof(Custom.Resource), Name = "Range Plus Ticks", GroupName = "OR", Order = 4)]
public int RangePlusTicks
{ get; set; }
[Browsable(false)]
public string RangeAreaColorSerialize
{
get { return Serialize.BrushToString(rangeAreaColor); }
set { rangeAreaColor = Serialize.StringToBrush(value); }
}
#endregion
}
}
Comment