I've attached my full NinjaScript that I can't get to compile. Any suggestions for changes?
Overall very new to C# and NinjaScript in general. Wanting to continue to learn and build more complex indicators and strategies eventually. Figured this would be a good place to start. I've watched Strategy Builder 301 & NinjaScript Editor 401 and reviewed these: https://ninjatrader.com/support/helpGuides/nt8/
This is essentially what I am going for, it works on top of any type of candlestick pattern/timeframe in TD Ameritrade:
//This namespace holds Strategies in this folder and is required. Do not change it.
namespace NinjaTrader.NinjaScript.Strategies
{
public class HeikenAshiCustom : Strategy
{
private Series<double> HaClose;
private Series<double> HaOpen;
private Series<bool> HaTrendUp;
private Series<bool> HaTrendDn;
private Series<int> HaSignal;
protected override void OnStateChange()
{
if (State == State.SetDefaults)
{
Description = @"HeikenAshi Trend Potential Buy/Sell Signals";
Name = "HeikenAshiCustom";
Calculate = Calculate.OnPriceChange;
EntriesPerDirection = 1;
EntryHandling = EntryHandling.UniqueEntries;
IsExitOnSessionCloseStrategy = true;
ExitOnSessionCloseSeconds = 1200;
IsFillLimitOnTouch = false;
MaximumBarsLookBack = MaximumBarsLookBack.TwoHundredFiftySix;
OrderFillResolution = OrderFillResolution.Standard;
Slippage = 0;
StartBehavior = StartBehavior.WaitUntilFlatSynchronizeAccount;
TimeInForce = TimeInForce.Gtc;
TraceOrders = false;
RealtimeErrorHandling = RealtimeErrorHandling.StopCancelClose;
StopTargetHandling = StopTargetHandling.PerEntryExecution;
BarsRequiredToTrade = 20;
// Disable this property for performance gains in Strategy Analyzer optimizations
// See the Help Guide for additional information
IsInstantiatedOnEachOptimizationIteration = true;
}
else if (State == State.Configure)
{
}
else if (State == State.DataLoaded)
{
HaClose = new Series<double>((Open + High + Low + Close) / 4);
HaOpen = new Series<double>((HaOpen[1] + HaClose[1]) / 2);
HaTrendUp = new Series<bool>(HaClose >= HaOpen);
HaTrendDn = new Series<bool>(HaClose < HaOpen);
HaSignal = new Series<int>(HaTrendUp == true && HaTrendUp[1] == true ? 1 : HaTrendDn == true && HaTrendDn[1] ? -1 : 0);
}
}
protected override void OnBarUpdate()
{
if (BarsInProgress != 0)
return;
// LongEntrySingal
if (HaSignal[1] == 0 && HaSignal == 1)
{
Draw.ArrowUp(this, @"HeikenAshi Arrow up_1", false, 0, 0, Brushes.Lime);
}
// CloseLongSignal
if (HaSignal[1] == 1 && HaSignal == 0)
{
Draw.Dot(this, @"HeikenAshi Dot_1", false, 0, 0, Brushes.Yellow);
}
//ShortEntrySignal
if (HaSignal[1] == 0 && HaSignal == -1)
{
Draw.ArrowDown(this, @"HeikenAshi Arrow down_1", false, 0, 0, Brushes.Red);
}
//CloseShortSignal
if (HaSignal[1] == -1 && HaSignal == 0)
{
Draw.Dot(this, @"HeikenAshi Dot_1", false, 0, 0, Brushes.Yellow);
}
}
}
}

Comment