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