Thanks, XARD.xard777 wrote: Wed Aug 20, 2025 12:19 pm RE: Changing the ADR settings in the Panel back to their original setting.
Best,
Xard777
Here is the code...Code: Select all
static double cachedAdrAvg = 0.0; static double cachedYestAvg = 0.0; static int lastDailyBars = 0; int currDailyBars = iBars(symbol, PERIOD_D1); if (cachedAdrAvg == 0.0 || currDailyBars > lastDailyBars) { double sum1 = 0, sum5 = 0, sum10 = 0, sum20 = 0; int cnt1 = 0, cnt5 = 0, cnt10 = 0, cnt20 = 0; int maxBars = MathMin(Bars(symbol, PERIOD_D1), BarsCount); int maxD = MathMin(20, maxBars - 1); for (int i = 1; i <= maxD; i++) { double r = iHigh(symbol, PERIOD_D1, i) - iLow(symbol, PERIOD_D1, i); sum20 += r; cnt20++; if (i <= 10) { sum10 += r; cnt10++; } if (i <= 5) { sum5 += r; cnt5++; } if (i <= 1) { sum1 += r; cnt1++; } } double adr1 = (cnt1 > 0) ? sum1 / cnt1 : 0; double adr5 = (cnt5 > 0) ? sum5 / cnt5 : 0; double adr10 = (cnt10 > 0) ? sum10 / cnt10 : 0; double adr20 = (cnt20 > 0) ? sum20 / cnt20 : 0; double adrAvgRaw = (adr1 + adr5 + adr10 + adr20) / 4; cachedAdrAvg = adrAvgRaw * pipsize; cachedYestAvg = (iHigh(symbol, PERIOD_D1, 1) - iLow(symbol, PERIOD_D1, 1)) * pipsize; lastDailyBars = currDailyBars; if (DebugWithSquealers) Print("SQUEALER: Cached ADR Update - New Daily Bars: ", currDailyBars, ", ADR Avg: ", cachedAdrAvg, ", Yest Avg: ", cachedYestAvg); } double adrAvg = cachedAdrAvg; double yestAvg = cachedYestAvg; if (DebugWithSquealers) Print("SQUEALER: 20 Day Range - Raw Avg: ", adrAvg / pipsize, ", Pipsize: ", pipsize, ", Result: ", adrAvg); ObjectSetString(chartID, ID1+"Xard14", OBJPROP_TEXT, DoubleToString(adrAvg, 0)); ObjectSetInteger(chartID, ID1+"Xard14", OBJPROP_COLOR, adrAvg > yestAvg ? C'255,140,255' : clrDeepSkyBlue);
