Announcement

Collapse
No announcement yet.

Partner 728x90

Collapse

Help creating WildersAverage and a custom range

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

    Help creating WildersAverage and a custom range

    I am very new to coding and trying to convert an indicator from ThinkorSwim to NinjaTrader. I am running into some issues with defining one variable because it uses functions that I believe are only in ThinkScript.
    Here is the ThinkScript code:

    def hlPivot;
    if (atrReversal !=0)
    {
    hlPivot = percentageReversal / 100 + WildersAverage(TrueRange(high, close, low), atrLength) / close * atrReversal;
    } else
    {
    hlPivot= percentageReversal / 100;
    }

    The issue I have with converting it is that "WildersAverage" and "TrueRange" are built in to ThinkScript but not NinjaScript. (As far as I'm aware.) Here are the ThinkScript pages describing the calculations for WildersAverage and TrueRange:
    Returns the Wilder's Moving Average of data with a smoothing coefficient that equals 1/length. The first value is calculated as the simple moving average and then all values are calculated as the exponential moving average.



    This is the best I've been able to replicate in NinjaScript using the ThinkScript formulas to calculate WildersAverage and TrueRange:


    // TrueRange (high, low, close)
    double TrueRange;
    for (int i = 0; i < Bars.Count; i++)
    {
    double value1 = High[0] - Low[0];
    double value2 = Math.Abs(High[0] - Close[1]);
    double value3 = Math.Abs(Close[1] - Low[0]);
    double TrueRange = Math.Max(value1, Math.Max(value2, value3));

    TrueRangeSeries.Add(TrueRange);
    }
    // Wilder's Average (TrueRange, atrLength)
    double MAWilders1 = SMA(TrueRange, atrLength)[0];
    double[] result = {MAWilders1};
    double alpha = 1.0 / atrLength;
    for (int i = 1; i < TrueRange && i < atrLength; i++)
    {
    double MAWilders = alpha * TrueRange[i] + (1 - alpha) * result[i-1];
    result = result.Concat(new[] {MAWilders}).ToArray();
    }


    // Define hlPivot
    if (atrReversal != 0)
    {
    hlPivot = percentageReversal / 100 + MAWilders(TrueRange, atrLength) / Close[0] * atrReversal;
    } else
    {
    hlPivot = percentageReversal / 100;
    }

    I was hoping somebody could point me in the right direction with this, or even tell me if it's possible at all.
    Please excuse what may be very obvious mistakes here (I've only been coding for about a week)














    #2
    Hello Mankr,

    Thanks for your note.

    NinjaTrader comes with an Average True Range (ATR) indicator which you might find helpful. This indicator is based on the original Wilder formula for an exponential moving average with a smoothing constant (k = 1/ Period) used to calculate the ATR.

    See this help guide page for information about accessing this in NinaScript: https://ninjatrader.com/support/help..._range_atr.htm

    Otherwise, this would require programming your own indicators using custom logic to create a WildersAverage indicator and TrueRange indicator to use in your calculations.

    Let me know if I may assist further.
    <span class="name">Brandon H.</span><span class="title">NinjaTrader Customer Service</span><iframe name="sig" id="sigFrame" src="/support/forum/core/clientscript/Signature/signature.php" frameborder="0" border="0" cellspacing="0" style="border-style: none;width: 100%; height: 120px;"></iframe>

    Comment

    Latest Posts

    Collapse

    Topics Statistics Last Post
    Started by Geovanny Suaza, 02-11-2026, 06:32 PM
    0 responses
    589 views
    0 likes
    Last Post Geovanny Suaza  
    Started by Geovanny Suaza, 02-11-2026, 05:51 PM
    0 responses
    342 views
    1 like
    Last Post Geovanny Suaza  
    Started by Mindset, 02-09-2026, 11:44 AM
    0 responses
    103 views
    0 likes
    Last Post Mindset
    by Mindset
     
    Started by Geovanny Suaza, 02-02-2026, 12:30 PM
    0 responses
    555 views
    1 like
    Last Post Geovanny Suaza  
    Started by RFrosty, 01-28-2026, 06:49 PM
    0 responses
    552 views
    1 like
    Last Post RFrosty
    by RFrosty
     
    Working...
    X