Here is a Fractal Dimension Moving Average , that include a trend follow/divergence based on RSI , Stoch ,and ADX. Combineted this algo with the FDMA algo , we have a MA reactive without following the yo-yo during high volatility period. Can set the range from a min and max bars you want to have your MA , the value are powered , so the min can set 1 to 10 that s is 1 to 60 bars and the Max 13 to 24 range 100 to 300. Period length and RSD len-0.37% are use to calculate Fractal Dimen and Trend parameter
If you need more info how to set go here
etfhq.com/blog/2012/...oving-average-d-ama/
If you need more info how to set go here
etfhq.com/blog/2012/...oving-average-d-ama/
//@version=2 study("RSD Fractal Dimension Moving Average",shorttitle="RSD FD",overlay=true) price=input(hl2) len=input(defval=80,title="Len Period",minval=1) fast=input(defval=19,title="Max Range MA(Powered) ", minval=1) slow=input(defval=3,title="Min Range MA(Powered)",minval=1) change=abs(price-price[len]) len1 = len/2 H1 = highest(high,len1) L1 = lowest(low,len1) N1 = (H1-L1)/len1 H2 = highest(high,len)[len1] L2 = lowest(low,len)[len1] N2 = (H2-L2)/len1 H3 = highest(high,len) L3 = lowest(low,len) N3 = (H3-L3)/len dimen1 = (log(N1+N2)-log(N3))/log(len/len1) diff = iff(N1>0 and N2>0 and N3>0,dimen1,nz(dimen1[1])) le=input(defval=10,title="Period Rsi,Stch,Adx") //rsi rr=rsi(hl2,le) //stoch st=stoch(hl2,high,low,le) //adx up = change(high) down = -change(low) trur = rma(tr, le) plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, le) / trur) minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, le) / trur) sum = plus + minus adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), le) fq=(rr+st+plus)/300 dif=abs(fq[0]-fq[1]) signal=abs(fq-fq[le]) noise=sum(dif, le) ef=noise!=0 ? signal/noise : 1 ER=abs(dimen1-1) E=fq*ER // fastestSC=2/(fast+1) slowestSC=2/(slow+1) SC=pow((E*(fastestSC-slowestSC)+slowestSC),2) out=nz(out[1])+SC*(price-nz(out[1])) col=out>close?red :lime plot(out,color=col,title="RSD-AMA",linewidth=2)