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 bortz, 11-06-2023, 08:04 AM
    47 responses
    1,603 views
    0 likes
    Last Post aligator  
    Started by jaybedreamin, Today, 05:56 PM
    0 responses
    8 views
    0 likes
    Last Post jaybedreamin  
    Started by DJ888, 04-16-2024, 06:09 PM
    6 responses
    18 views
    0 likes
    Last Post DJ888
    by DJ888
     
    Started by Jon17, Today, 04:33 PM
    0 responses
    4 views
    0 likes
    Last Post Jon17
    by Jon17
     
    Started by Javierw.ok, Today, 04:12 PM
    0 responses
    12 views
    0 likes
    Last Post Javierw.ok  
    Working...
    X