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 algospoke, Yesterday, 06:40 PM
    2 responses
    19 views
    0 likes
    Last Post algospoke  
    Started by ghoul, Today, 06:02 PM
    3 responses
    14 views
    0 likes
    Last Post NinjaTrader_Manfred  
    Started by jeronymite, 04-12-2024, 04:26 PM
    3 responses
    44 views
    0 likes
    Last Post jeronymite  
    Started by Barry Milan, Yesterday, 10:35 PM
    7 responses
    20 views
    0 likes
    Last Post NinjaTrader_Manfred  
    Started by AttiM, 02-14-2024, 05:20 PM
    10 responses
    180 views
    0 likes
    Last Post jeronymite  
    Working...
    X