Announcement

Collapse
No announcement yet.

Partner 728x90

Collapse

200 SMA Strategy Help

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    200 SMA Strategy Help

    I'm just getting my feet wet in developing strategies on Ninjatrader 8. I'm having an issue with a simple 200-SMA strategy where I just want to go long when the SMA(200) crosses above the close and exit when SMA(200) crosses below the close. When I run the strategy in Strategy Analyzer the entries and exit are incorrect.

    namespace NinjaTrader.NinjaScript.Strategies
    {
    public class SimpleMovingAverage : Strategy
    {
    private SMA SMA1;
    private SMA SMA2;

    protected override void OnStateChange()
    {
    if (State == State.SetDefaults)
    {
    Description = @"Simple Moving Average-Price Crossover";
    Name = "SimpleMovingAverage";
    Calculate = Calculate.OnBarClose;
    EntriesPerDirection = 1;
    EntryHandling = EntryHandling.AllEntries;
    IsExitOnSessionCloseStrategy = false;
    ExitOnSessionCloseSeconds = 30;
    IsFillLimitOnTouch = false;
    MaximumBarsLookBack = MaximumBarsLookBack.Infinite;
    OrderFillResolution = OrderFillResolution.Standard;
    Slippage = 0;
    StartBehavior = StartBehavior.WaitUntilFlat;
    TimeInForce = TimeInForce.Gtc;
    TraceOrders = false;
    RealtimeErrorHandling = RealtimeErrorHandling.StopCancelClose;
    StopTargetHandling = StopTargetHandling.PerEntryExecution;
    BarsRequiredToTrade = 250;
    // Disable this property for performance gains in Strategy Analyzer optimizations
    // See the Help Guide for additional information
    IsInstantiatedOnEachOptimizationIteration = true;
    MovingAverage = 200;

    } else if (State == State.Configure){
    }else if (State == State.DataLoaded){

    SMA1 = SMA(Convert.ToInt32(MovingAverage));
    SMA1.Plots[0].Brush = Brushes.Blue;
    AddChartIndicator(SMA1);
    SMA2 = SMA(Convert.ToInt32(MovingAverage));
    }}

    protected override void OnBarUpdate()
    { if (CurrentBars[0] < 1) return;

    // Set 1
    if (CrossAbove(SMA1, Close, 1))
    { EnterLong(Convert.ToInt32(DefaultQuantity), @"Long"); }

    // Set 2
    if (CrossBelow(SMA2, Close, 1))
    { ExitLong(Convert.ToInt32(DefaultQuantity), @"Exit", @"Long"); }

    #2
    NVM Figured it out

    Comment

    Latest Posts

    Collapse

    Topics Statistics Last Post
    Started by DannyP96, 05-18-2026, 02:38 PM
    1 response
    78 views
    0 likes
    Last Post NinjaTrader_ChelseaB  
    Started by CarlTrading, 05-11-2026, 05:56 AM
    0 responses
    140 views
    0 likes
    Last Post CarlTrading  
    Started by CarlTrading, 05-10-2026, 08:12 PM
    0 responses
    81 views
    0 likes
    Last Post CarlTrading  
    Started by Hwop38, 05-04-2026, 07:02 PM
    0 responses
    244 views
    0 likes
    Last Post Hwop38
    by Hwop38
     
    Started by Mindset, 04-21-2026, 06:46 AM
    0 responses
    332 views
    0 likes
    Last Post Mindset
    by Mindset
     
    Working...
    X