Announcement

Collapse
No announcement yet.

Partner 728x90

Collapse

Default (stock) @ADX indicator code

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

    Default (stock) @ADX indicator code

    Hello,

    I applied the ADX indie to a renko chart (lots of bars) and found performance somewhat lacking in fast moves. I took a look at the code. I noticed this

    Code:
            private Series<double>      dmPlus;
            private Series<double>      dmMinus;
            private Series<double>      sumDmPlus;
            private Series<double>      sumDmMinus;
            private Series<double>      sumTr;
            private Series<double>      tr;
            protected override void OnStateChange()
            {
                if (State == State.SetDefaults)
                {
                    Description                 = NinjaTrader.Custom.Resource.NinjaScriptIndicatorDescriptionADX;
                    Name                        = NinjaTrader.Custom.Resource.NinjaScriptIndicatorNameADX;
                    IsSuspendedWhileInactive    = true;
                    Period                      = 14;
                    AddPlot(Brushes.DarkCyan,       NinjaTrader.Custom.Resource.NinjaScriptIndicatorNameADX);
                    AddLine(Brushes.SlateBlue,  25, NinjaTrader.Custom.Resource.NinjaScriptIndicatorLower);
                    AddLine(Brushes.Goldenrod,  75, NinjaTrader.Custom.Resource.NinjaScriptIndicatorUpper);
                }
                else if (State == State.DataLoaded)
                {
                    dmPlus      = new Series<double>(this);
                    dmMinus     = new Series<double>(this);
                    sumDmPlus   = new Series<double>(this);
                    sumDmMinus  = new Series<double>(this);
                    sumTr       = new Series<double>(this);
                    tr          = new Series<double>(this);
                }
            }​

    None of those series is actually required as the code appears to only ever use the [0] and [1] values.

    It would seem (and appears) much faster to simply use 2 variables, or as I changed it, private double[] tr = new double[1]; and just shift the values, e.g. tr[1] = tr[0]; on IsFirstTickOfBar.

    By my count, this saves at least 6 x 256 count series updating and shifting on each bar! Now, perhaps that is not a huge saving, but the original code does just seem somewhat wasteful of precious resources.

    Just a suggestion...

Latest Posts

Collapse

Topics Statistics Last Post
Started by Geovanny Suaza, 02-11-2026, 06:32 PM
0 responses
553 views
0 likes
Last Post Geovanny Suaza  
Started by Geovanny Suaza, 02-11-2026, 05:51 PM
0 responses
324 views
1 like
Last Post Geovanny Suaza  
Started by Mindset, 02-09-2026, 11:44 AM
0 responses
100 views
0 likes
Last Post Mindset
by Mindset
 
Started by Geovanny Suaza, 02-02-2026, 12:30 PM
0 responses
543 views
1 like
Last Post Geovanny Suaza  
Started by RFrosty, 01-28-2026, 06:49 PM
0 responses
546 views
1 like
Last Post RFrosty
by RFrosty
 
Working...
X