Announcement

Collapse
No announcement yet.

Partner 728x90

Collapse

'Draw' and 'Brushes' Does not exist in the current context

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

    'Draw' and 'Brushes' Does not exist in the current context

    Hello,

    I'm developping a simple MA crossover indicator.

    After few hours asking AI and reading NT8 doc I seeking for help here as Im to the point that my NinjaTrader is broken and my code fine as it is...

    I got the Errors as screenshoted : "The name 'Draw' does not exist in the current context. Same for Brushes
    Yet i'm using : using NinjaTrader.Gui.Tools;

    Thanks for your help.


    Code:
    #region Using declarations
    using System;
    using System.ComponentModel;
    using System.ComponentModel.DataAnnotations;
    using NinjaTrader.Cbi;
    using NinjaTrader.NinjaScript;
    using NinjaTrader.Data;
    using NinjaTrader.Gui;
    using NinjaTrader.Gui.Tools;
    using NinjaTrader.Gui.Chart;
    #endregion
    
    namespace NinjaTrader.NinjaScript.Indicators
    {
        public class MMECroisementLigne : Indicator
        {
            private EMA emaRapide;
            private EMA emaLente;
    
            [NinjaScriptProperty]
            [Range(1, int.MaxValue)]
            [Display(Name = "Période EMA Rapide", GroupName = "Paramètres", Order = 1)]
            public int PeriodeRapide { get; set; } = 50;
    
            [NinjaScriptProperty]
            [Range(1, int.MaxValue)]
            [Display(Name = "Période EMA Lente", GroupName = "Paramètres", Order = 2)]
            public int PeriodeLente { get; set; } = 100;
    
            protected override void OnStateChange()
            {
                if (State == State.SetDefaults)
                {
                    Description = "Affiche une ligne verticale lors des croisements EMA (sans afficher les EMAs).";
                    Name = "MMECroisementLigne";
                    Calculate = Calculate.OnBarClose;
                    IsOverlay = true;
                }
                else if (State == State.DataLoaded)
                {
                    emaRapide = EMA(PeriodeRapide);
                    emaLente = EMA(PeriodeLente);
                }
            }
    
            protected override void OnBarUpdate()
            {
                if (CurrentBar < 2)
                    return;
    
                // Croisement haussier
                if (emaRapide[0] > emaLente[0] && emaRapide[1] <= emaLente[1])
                {
                    Draw.Dot(this, "CrossUp" + CurrentBar, 0, Brushes.Lime, DashStyleHelper.Solid, 2);
                }
                // Croisement baissier
                else if (emaRapide[0] < emaLente[0] && emaRapide[1] >= emaLente[1])
                {
                    Draw.Dot(this, "CrossDown" + CurrentBar, 0, Brushes.Red, DashStyleHelper.Solid, 2);
                }
            }
        }
    }
    
    #region NinjaScript generated code. Neither change nor remove.
    
    namespace NinjaTrader.NinjaScript.Indicators
    {
        public partial class Indicator : NinjaTrader.Gui.NinjaScript.IndicatorRenderBase
        {
            private MMECroisementLigne[] cacheMMECroisementLigne;
            public MMECroisementLigne MMECroisementLigne(int periodeRapide, int periodeLente)
            {
                return MMECroisementLigne(Input, periodeRapide, periodeLente);
            }
    
            public MMECroisementLigne MMECroisementLigne(ISeries<double> input, int periodeRapide, int periodeLente)
            {
                if (cacheMMECroisementLigne != null)
                    for (int idx = 0; idx < cacheMMECroisementLigne.Length; idx++)
                        if (cacheMMECroisementLigne[idx] != null && cacheMMECroisementLigne[idx].PeriodeRapide == periodeRapide && cacheMMECroisementLigne[idx].PeriodeLente == periodeLente && cacheMMECroisementLigne[idx].EqualsInput(input))
                            return cacheMMECroisementLigne[idx];
                return CacheIndicator<MMECroisementLigne>(new MMECroisementLigne(){ PeriodeRapide = periodeRapide, PeriodeLente = periodeLente }, input, ref cacheMMECroisementLigne);
            }
        }
    }
    
    namespace NinjaTrader.NinjaScript.MarketAnalyzerColumns
    {
        public partial class MarketAnalyzerColumn : MarketAnalyzerColumnBase
        {
            public Indicators.MMECroisementLigne MMECroisementLigne(int periodeRapide, int periodeLente)
            {
                return indicator.MMECroisementLigne(Input, periodeRapide, periodeLente);
            }
    
            public Indicators.MMECroisementLigne MMECroisementLigne(ISeries<double> input , int periodeRapide, int periodeLente)
            {
                return indicator.MMECroisementLigne(input, periodeRapide, periodeLente);
            }
        }
    }
    
    namespace NinjaTrader.NinjaScript.Strategies
    {
        public partial class Strategy : NinjaTrader.Gui.NinjaScript.StrategyRenderBase
        {
            public Indicators.MMECroisementLigne MMECroisementLigne(int periodeRapide, int periodeLente)
            {
                return indicator.MMECroisementLigne(Input, periodeRapide, periodeLente);
            }
    
            public Indicators.MMECroisementLigne MMECroisementLigne(ISeries<double> input , int periodeRapide, int periodeLente)
            {
                return indicator.MMECroisementLigne(input, periodeRapide, periodeLente);
            }
        }
    }
    
    #endregion
    
    ​
    Attached Files

    #2
    Hello FuriousM,

    There appears to be missing using statements.

    Create a new indicator using the NinjaScript Editor.

    Copy all of the default using statements from the 'region Using declarations' to the top of your script.

    Moving forward always create a new script using the NinjaScript Editor. Do not remove the default using statements.
    Chelsea B.NinjaTrader Customer Service

    Comment

    Latest Posts

    Collapse

    Topics Statistics Last Post
    Started by Geovanny Suaza, 02-11-2026, 06:32 PM
    0 responses
    633 views
    0 likes
    Last Post Geovanny Suaza  
    Started by Geovanny Suaza, 02-11-2026, 05:51 PM
    0 responses
    364 views
    1 like
    Last Post Geovanny Suaza  
    Started by Mindset, 02-09-2026, 11:44 AM
    0 responses
    105 views
    0 likes
    Last Post Mindset
    by Mindset
     
    Started by Geovanny Suaza, 02-02-2026, 12:30 PM
    0 responses
    567 views
    1 like
    Last Post Geovanny Suaza  
    Started by RFrosty, 01-28-2026, 06:49 PM
    0 responses
    568 views
    1 like
    Last Post RFrosty
    by RFrosty
     
    Working...
    X