radius=average[200](range)/4
//formula to compute short term swing points
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
//drawarrowdown(markup,markhigh)
mediummarkup=shortmarkup
shortmarkup=markup
longmarkhigh=mediummarkhigh
mediummarkhigh=shortmarkhigh
shortmarkhigh=markhigh
//intermediate high swing points
if longmarkhigh<mediummarkhigh and mediummarkhigh>shortmarkhigh then
DRAWELLIPSE(mediummarkup-1, mediummarkhigh-radius, mediummarkup+1, mediummarkhigh+radius) style(line,2) coloured("Blue")
drawarrowdown(mediummarkup,mediummarkhigh-radius) coloured("Red")
endif
endif
if basso>basso[1] and trend=0 then
trend=1
//drawarrowup(markdown,marklow)
mediummarkdown=shortmarkdown
shortmarkdown=markdown
longmarklow=mediummarklow
mediummarklow=shortmarklow
shortmarklow=marklow
//intermediate low swing points
if longmarklow>mediummarklow and mediummarklow<shortmarklow then
DRAWELLIPSE(mediummarkdown-1, mediummarklow-radius, mediummarkdown+1, mediummarklow+radius) style(line,2) coloured("Blue")
drawarrowup(mediummarkdown,mediummarklow-radius) coloured("Green")
endif
endif
drawcandle(open,high,low,close)
return