This screener complete the code I wrote at this link and helps to find the highs and lows as described by Williams.
Blue skies
if (high>alto[1]) and not (high<high[1] and low>low[1]) then
alto=high
basso=low
markup=barindex
markhigh=high
endif
if (low<basso[1]) and not (high<high[1] and low>low[1]) then
alto=high
basso=low
markdown=barindex
marklow=low
endif
if alto<alto[1] and trend=1 then
trend=0
mediummarkup=shortmarkup
shortmarkup=markup
longmarkhigh=mediummarkhigh
mediummarkhigh=shortmarkhigh
shortmarkhigh=markhigh
//intermediate high swing points
if longmarkhigh<mediummarkhigh and mediummarkhigh>shortmarkhigh then
imhighold=imhighnew
imhighnew=mediummarkhigh
//refhigh=shortmarkup
endif
if imhighold>imhighnew then
refhigh=mediummarkup
endif
endif
if basso>basso[1] and trend=0 then
trend=1
mediummarkdown=shortmarkdown
shortmarkdown=markdown
longmarklow=mediummarklow
mediummarklow=shortmarklow
shortmarklow=marklow
//intermediate low swing points
if longmarklow>mediummarklow and mediummarklow<shortmarklow then
imlowold=imlownew
imlownew=mediummarklow
//reflow=shortmarkdown
endif
if imlowold<imlownew then
reflow=mediummarkdown
endif
endif
//long conditions
c1=imlowold<imlownew and (lowest[barindex-reflow+1](low))>=mediummarklow
//short conditions
c2=imhighold>imhighnew and (highest[barindex-refhigh+1](high))<=mediummarkhigh
screener[c1 and not c2] (c1)