I am trying to create a script that plots (each) Hourly Open horizontal lines on the chart. I am no expert in coding and looking at various scripts I put together this script. From original 55 errors now, down to 1 and I don't understand what else to do. Can someone help me fixing this error? Thank you so much!!
Error:
HourlyOpen.cs The name 'DashStyleHelper' does not exist in the current context CS0103 56 120
Script:
region Using declarations
using System;
using System.Windows.Media; // Required for Brush and color definitions
using NinjaTrader.NinjaScript; // Base namespace for indicators
using NinjaTrader.Data;
using NinjaTrader.NinjaScript.Strategies; // Required for strategies
using NinjaTrader.NinjaScript.StrategyGenerator; // Required for StrategyGenerator
using System.Xml.Serialization; // Required for XmlIgnoreAttribute
using NinjaTrader.NinjaScript.DrawingTools;
#endregion
namespace NinjaTrader.NinjaScript.Indicators
{
public class HourlyOpen : Indicator
{
private double hourlyOpenPrice = 0;
private DateTime lastHourOpenTime;
private Series<double> hourlyOpenSeries;
private Brush lineColor; // Line color
private int lineWidth; // Line width
// Initialize and configure the indicator
protected override void OnStateChange()
{
if (State == State.SetDefaults)
{
Description = "Hourly Open Line Indicator";
Name = "HourlyOpen";
Calculate = Calculate.OnEachTick;
IsOverlay = true;
// User Inputs
lineColor = Brushes.Yellow; // Default line color
lineWidth = 1; // Default line width
}
else if (State == State.DataLoaded)
{
hourlyOpenSeries = new Series<double>(this);
}
}
// Calculate and draw the hourly open line
protected override void OnBarUpdate()
{
// Get current bar time
DateTime currentBarTime = Times[0][0];
DateTime currentBarHourOpen = new DateTime(currentBarTime.Year, currentBarTime.Month, currentBarTime.Day, currentBarTime.Hour, 0, 0);
// Check if a new hour has started
if (lastHourOpenTime != currentBarHourOpen && Time[0].Minute == 0 && Time[0].Second == 0)
{
hourlyOpenPrice = Opens[0][0]; // Capture the open price for the hour
lastHourOpenTime = currentBarHourOpen;
// Draw the hourly open line
Draw.Line(this, "HourlyOpen" + CurrentBar, false, 0, hourlyOpenPrice, -60, hourlyOpenPrice, lineColor, DashStyleHelper.Solid, lineWidth);
}
}
region Properties
// Line Color property
[NinjaScriptProperty]
[XmlIgnore] // Corrected reference to XmlIgnore
public Brush LineColor
{
get { return lineColor; }
set { lineColor = value; }
}
// Line Width property
[NinjaScriptProperty]
public int LineWidth
{
get { return lineWidth; }
set { lineWidth = value; }
}
#endregion
}
}
region NinjaScript generated code. Neither change nor remove.
namespace NinjaTrader.NinjaScript.Indicators
{
public partial class Indicator : NinjaTrader.Gui.NinjaScript.IndicatorRenderBase
{
private HourlyOpen[] cacheHourlyOpen;
public HourlyOpen HourlyOpen(Brush lineColor, int lineWidth)
{
return HourlyOpen(Input, lineColor, lineWidth);
}
public HourlyOpen HourlyOpen(ISeries<double> input, Brush lineColor, int lineWidth)
{
if (cacheHourlyOpen != null)
for (int idx = 0; idx < cacheHourlyOpen.Length; idx++)
if (cacheHourlyOpen[idx] != null && cacheHourlyOpen[idx].LineColor == lineColor && cacheHourlyOpen[idx].LineWidth == lineWidth && cacheHourlyOpen[idx].EqualsInput(input))
return cacheHourlyOpen[idx];
return CacheIndicator<HourlyOpen>(new HourlyOpen(){ LineColor = lineColor, LineWidth = lineWidth }, input, ref cacheHourlyOpen);
}
}
}
namespace NinjaTrader.NinjaScript.MarketAnalyzerColumns
{
public partial class MarketAnalyzerColumn : MarketAnalyzerColumnBase
{
public Indicators.HourlyOpen HourlyOpen(Brush lineColor, int lineWidth)
{
return indicator.HourlyOpen(Input, lineColor, lineWidth);
}
public Indicators.HourlyOpen HourlyOpen(ISeries<double> input , Brush lineColor, int lineWidth)
{
return indicator.HourlyOpen(input, lineColor, lineWidth);
}
}
}
namespace NinjaTrader.NinjaScript.Strategies
{
public partial class Strategy : NinjaTrader.Gui.NinjaScript.StrategyRenderBase
{
public Indicators.HourlyOpen HourlyOpen(Brush lineColor, int lineWidth)
{
return indicator.HourlyOpen(Input, lineColor, lineWidth);
}
public Indicators.HourlyOpen HourlyOpen(ISeries<double> input , Brush lineColor, int lineWidth)
{
return indicator.HourlyOpen(input, lineColor, lineWidth);
}
}
}
#endregion

Comment