Meta: subchart(false); // (c) Philipp Kahler 2021 quanttrader.com Inputs: minBars(5), maxBars(200), reversaltype(longreversal, shortreversal, both),confirmationbars(1), Volaexcess(3); Arrays: Mom[maxbars]; Variables: kv, kvp, i, m, signal, global::signal, extreme, position; function kvol begin // returns Kahlers Volatility %/bar Variables:i, rp,rc, rpsum, rcsum, call, put, counter; if close[1]<>0 then begin rc=maxlist((close-close[1])/close[1],0); rp=maxlist((close[1]-close)/close[1],0); end; rcsum=rcsum+rc; rpsum=rpsum+rp; if (rc+rp)>0 then counter=counter+1; if counter>1 then begin call=rcsum/counter; put=rpsum/counter; end; Kvol=100*(call+put); end; kv=kvol;//period(10*maxbars); signal=0; if barnumber>200 then begin for i=maxBars to MinBars step -1 begin kvp=kv*sqrt(i); m=100*(close-close[i])/close; mom[i]=abs(m)/kvp; end; end; extremesarray(mom,maxbars,1,extreme,position); if extreme>volaexcess and position>minbars then begin if close[position]>close and (reversaltype=both or reversaltype=shortreversal) and lowest(close[-confirmationbars],confirmationbars)>=close and close=lowest(close,position) and close[position]=highest(close,position+1) then begin drawtrendline(datetime,lowest(close,position),datetime[position],highest(close,position+1),stylesolid,2,red); signal=1; end; if close[position]