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 RookieTrader, Today, 09:37 AM
    3 responses
    15 views
    0 likes
    Last Post NinjaTrader_ChelseaB  
    Started by kulwinder73, Today, 10:31 AM
    0 responses
    5 views
    0 likes
    Last Post kulwinder73  
    Started by terofs, Yesterday, 04:18 PM
    1 response
    23 views
    0 likes
    Last Post terofs
    by terofs
     
    Started by CommonWhale, Today, 09:55 AM
    1 response
    4 views
    0 likes
    Last Post NinjaTrader_Erick  
    Started by Gerik, Today, 09:40 AM
    2 responses
    7 views
    0 likes
    Last Post Gerik
    by Gerik
     
    Working...
    X