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 guillembm, Yesterday, 11:25 AM
    2 responses
    9 views
    0 likes
    Last Post guillembm  
    Started by junkone, 04-21-2024, 07:17 AM
    9 responses
    68 views
    0 likes
    Last Post jeronymite  
    Started by trilliantrader, 04-18-2024, 08:16 AM
    4 responses
    20 views
    0 likes
    Last Post trilliantrader  
    Started by mgco4you, Yesterday, 09:46 PM
    1 response
    11 views
    0 likes
    Last Post NinjaTrader_Manfred  
    Started by wzgy0920, Yesterday, 09:53 PM
    0 responses
    10 views
    0 likes
    Last Post wzgy0920  
    Working...
    X