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