ASCTrend indicator uses WPR (Williams Percent Ratio) indicator in order to give trading signals on the price chart.
The “RISK” variable setting is used to define the WPR period this way: period = 3+RISK*2
Buy and sell levels are settled using the RSI variable also:
_ buy level > – (33 – RISK)
_ sell level < – (67 + RISK)
The trading signals are filtered to avoid the same signal repetition and price peaks or gaps.
You can modify the “CountBars” setting in order to plot more or historical signals on the price chart.
Compatible version with PRT v10.3 (or any v11 prior version) is attached to the post.
Indicator converted following a request in the trading indicators forum: https://www.prorealcode.com/topic/conversion-indicateur-mt4-asct-rend_sound-mq4/
//PRC_ASCTrend | indicator
//13.01.2021
//Nicolas @ www.prorealcode.com
//Sharing ProRealTime knowledge
//converted from MT4 version
// --- settings
RISK=3
CountBars=300
// --- end of settings
value10=3+RISK*2
x1=67+RISK
x2=33-RISK
value11=value10
shift=CountBars-11-1
if islastbarupdate and barindex>CountBars then
while(shift>=0) do
Counter=shift
iRange=0.0
AvgRange=0.0
for Counter=shift to shift+9 do
AvgRange=AvgRange+Abs(High[Counter]-Low[Counter])
next
iRange=AvgRange/10
Counter=shift
TrueCount=0
while (Counter<shift+9 and TrueCount<1) do
if (Abs(Open[Counter]-Close[Counter+1])>=iRange*2.0) then
TrueCount=TrueCount+1
endif
Counter=Counter+1
wend
if (TrueCount>=1) then
MRO1=Counter
else
MRO1=-1
endif
Counter=shift
TrueCount=0
while (Counter<shift+6 and TrueCount<1) do
if (Abs(Close[Counter+3]-Close[Counter])>=iRange*4.6) then
TrueCount=TrueCount+1
endif
Counter=Counter+1
wend
if (TrueCount>=1) then
MRO2=Counter
else
MRO2=-1
endif
if (MRO1>-1) then
value11=3
else
value11=value10
endif
if (MRO2>-1) then
value11=4
else
value11=value10
endif
value2=100-Abs(Williams[value11](close)[shift]) // PercentR(value11=9)
$Tablevalue2[shift]=value2
$val1[shift]=0
$val2[shift]=0
value3=0
if (value2<x2) then
i1=1
while ($Tablevalue2[shift+i1]>=x2 and $Tablevalue2[shift+i1]<=x1) do
i1=i1+1
wend
if ($Tablevalue2[shift+i1]>x1) then
value3=High[shift]+iRange*0.5
if (shift = 1 and flagval1=0) then
flagval1=1
flagval2=0
endif
$val1[shift]=value3
drawarrowdown(barindex[shift],$val1[shift]) coloured(255,0,255)
endif
endif
if (value2>x1) then
i1=1
while ($Tablevalue2[shift+i1]>=x2 and $Tablevalue2[shift+i1]<=x1) do
i1=i1+1
wend
if ($Tablevalue2[shift+i1]<x2) then
value3=Low[shift]-iRange*0.5
if (shift = 1 and flagval2=0) then
flagval2=1
flagval1=0
endif
$val2[shift]=value3
drawarrowup(barindex[shift],$val2[shift]) coloured(0,255,255)
endif
endif
shift=shift-1
wend
endif
return