I was trying to build a simple indicator that contains 2 EMA and add a cloud between them. When I hit compile it shows error "#endregion directive expected", I add "#endregion" by the very end of my code and hit compile again, and the #endregion that I just added disappears and shows the same error again. The code I put down below. Please help me out. Thanks.
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.DrawingTools;
namespace NinjaTrader.NinjaScript.Indicators
{
public class JlinesCloudIndicator : Indicator
{
private EMA ema1;
private EMA ema2;
private Cloud cloud;
protected override void OnStateChange()
{
if (State == State.SetDefaults)
{
Description = "My Cloud Indicator";
Name = "Jlines Cloud";
Calculate = Calculate.OnBarClose;
IsOverlay = true;
DisplayInDataBox = true;
DrawOnPricePanel = true;
DrawHorizontalGridLines = true;
DrawVerticalGridLines = true;
PaintPriceMarkers = true;
ScaleJustification = NinjaTrader.Gui.Chart.ScaleJustification.Right;
//Disable this property if your indicator requires custom values that cumulate with each new market data event.
//See Help Guide for additional information.
IsSuspendedWhileInactive = true;
Period1 = 72;
Period2 = 89;
CloudColor = Brushes.LimeGreen;
ema1 = EMA(Close, Period1);
ema2 = EMA(Close, Period2);
cloud = Cloud(ema1, ema2);
}
else if (State == State.Configure)
{
AddChartIndicator(cloud);
}
}
protected override void OnBarUpdate()
{
}
region Properties
[NinjaScriptProperty]
[Range(1, int.MaxValue)]
[Display(Name="Period1", Order=1, GroupName="Parameters")]
public int Period1
{ get; set; }
[NinjaScriptProperty]
[Range(1, int.MaxValue)]
[Display(Name="Period2", Order=2, GroupName="Parameters")]
public int Period2
{ get; set; }
[NinjaScriptProperty]
[XmlIgnore]
[Display(Name="CloudColor", Order=3, GroupName="Parameters")]
public Brush CloudColor
{ get; set; }
#endregion
}
}
region NinjaScript generated code. Neither change nor remove.
namespace NinjaTrader.NinjaScript.Indicators
{
public partial class Indicator : NinjaTrader.Gui.NinjaScript.IndicatorRenderBase
{
private JlinesCloudIndicator[] cacheJlinesCloudIndicator;
public JlinesCloudIndicator JlinesCloudIndicator(int period1, int period2, Brush cloudColor)
{
return JlinesCloudIndicator(Input, period1, period2, cloudColor);
}
public JlinesCloudIndicator JlinesCloudIndicator(ISeries<double> input, int period1, int period2, Brush cloudColor)
{
if (cacheJlinesCloudIndicator != null)
for (int idx = 0; idx < cacheJlinesCloudIndicator.Length; idx++)
if (cacheJlinesCloudIndicator[idx] != null && cacheJlinesCloudIndicator[idx].Period1 == period1 && cacheJlinesCloudIndicator[idx].Period2 == period2 && cacheJlinesCloudIndicator[idx].CloudColor == cloudColor && cacheJlinesCloudIndicator[idx].EqualsInput(input))
return cacheJlinesCloudIndicator[idx];
return CacheIndicator<JlinesCloudIndicator>(new JlinesCloudIndicator(){ Period1 = period1, Period2 = period2, CloudColor = cloudColor }, input, ref cacheJlinesCloudIndicator);
}
}
}
namespace NinjaTrader.NinjaScript.MarketAnalyzerColumns
{
public partial class MarketAnalyzerColumn : MarketAnalyzerColumnBase
{
public Indicators.JlinesCloudIndicator JlinesCloudIndicator(int period1, int period2, Brush cloudColor)
{
return indicator.JlinesCloudIndicator(Input, period1, period2, cloudColor);
}
public Indicators.JlinesCloudIndicator JlinesCloudIndicator(ISeries<double> input , int period1, int period2, Brush cloudColor)
{
return indicator.JlinesCloudIndicator(input, period1, period2, cloudColor);
}
}
}
namespace NinjaTrader.NinjaScript.Strategies
{
public partial class Strategy : NinjaTrader.Gui.NinjaScript.StrategyRenderBase
{
public Indicators.JlinesCloudIndicator JlinesCloudIndicator(int period1, int period2, Brush cloudColor)
{
return indicator.JlinesCloudIndicator(Input, period1, period2, cloudColor);
}
public Indicators.JlinesCloudIndicator JlinesCloudIndicator(ISeries<double> input , int period1, int period2, Brush cloudColor)
{
return indicator.JlinesCloudIndicator(input, period1, period2, cloudColor);
}
}
}
#endregion
Comment