Here is my code:
// Simple EMA 9/14 Crossover Strategy: 2 contract, $250 SL, $400 TP, BUY/SELL label only using System; using NinjaTrader.Cbi; using NinjaTrader.Gui.Tools; using NinjaTrader.Data; using NinjaTrader.NinjaScript; using NinjaTrader.NinjaScript.Indicators; using NinjaTrader.NinjaScript.Strategies; using NinjaTrader.NinjaScript.DrawingTools; using System.Windows.Media; namespace NinjaTrader.NinjaScript.Strategies { public class SimpleEMACrossover : Strategy { private EMA ema9; private EMA ema14; private int contractQty = 2; private double stopLossUSD = 150; private double takeProfitUSD = 250; protected override void OnStateChange() { if (State == State.SetDefaults) { Name = "Simple EMA 9/14 Crossover"; Calculate = Calculate.OnBarClose; IncludeCommission = true; } else if (State == State.DataLoaded) { ema9 = EMA(9); ema14 = EMA(14); } } protected override void OnBarUpdate() { if (CurrentBar < 14) return; if (Position.MarketPosition == MarketPosition.Flat) { if (CrossAbove(ema9, ema14, 1)) { Draw.Text(this, "Buy" + CurrentBar, "BuyName", 0, Low[0] - 2 * TickSize, Brushes.Green); SetStopLoss("BuyName", CalculationMode.Currency, stopLossUSD, false); SetProfitTarget("BuyName", CalculationMode.Currency, takeProfitUSD, false); Print("Enter Long at: " + Time[0] + " Price: " + Close[0]); EnterLong(contractQty, "BuyName"); } else if (CrossBelow(ema9, ema14, 1)) { Draw.Text(this, "Sell" + CurrentBar, "SellName", 0, High[0] + 2 * TickSize, Brushes.Red); SetStopLoss("SellName", CalculationMode.Currency, stopLossUSD, false); SetProfitTarget("SellName", CalculationMode.Currency, takeProfitUSD, false); Print("Enter Short at: " + Time[0] + " Price: " + Close[0]); EnterShort(contractQty, "SellName"); } } } } }
Comment