You are on page 1of 11

!

Expert Design Studio Pre-built routines


[Candlesticks - Belthold]
! Candlesticks - Belthold pattern
Belthold if [open] = [low] and [high] - [close] < ([high] - [open])/4 and [close
] > [open] and [high] - [low] > val([high],1) - val([low],1) and [close] > 10 an
d [close] < [lt ma] and [close] < [it ma].
[Candlesticks - Engulfing]
! Candlesticks - Engulfing Pattern.
Engulf1 if val([open],1) > val([close],1) and [close] > [open] and val([open],1)
< [close] and val([close],1) > [open] and [close] < [LT MA] and [close] < [IT
MA] and [volume] > [volume ESA].
[Candlesticks - Hammer]
! Candlesticks - Hammer pattern.
Hammer if [open] - [low] > 2*([close] - [open]) and [open] > ([high] + [low])/2
and [close] > [open] and [high] - [close] < ([high] - [low])/5 and [close] < [L
T MA] and [close] < [IT MA] and [volume] > [volume ESA].
[MACD Cross Up]
!MACDI crossover to the upside
MACDxUP if Val([MACD],1) < Val([MACD Sig Line],1) and [MACD] > [MACD Sig Line].
[MACD Cross Down]
!MACDI crossover to the downside
MACDxDOWN if Val([MACD],1) > Val([MACD Sig Line],1) and [MACD] < [MACD Sig Line]
.
[ER UP]
!ER Up of 95 or better
erup if [er up] >= 95.
[ER Down]
!ER Down of 90 or better
erdown if [er down] >= 90.
[ESA Cross Up]
!ST ESA Crossover IT ESA to the upside
EsaCrossUp if ([st esa] > [it esa]) and (val([st esa],1) < val([it esa],1)).
[ESA Cross Down]
!ST ESA Crossover IT ESA to the downside
EsaCrossDown if ([st esa] < [it esa]) and (val([st esa],1) > val([it esa],1)).
[Trend Up 10 day]
!10 day trend of ticker is positive
TrendUp10Day if slope([close],10) > 0.
[Trend Down 10 day]
!10 day trend of ticker is negative
TrendDn10Day if slope([close],10) < 0.
[Phase Up slope]
!Positive Phase value with 3 day slope of phase > 0
GoodPhaseup if [phase] > 0 and slope([phase],3) > 0.
[Phase Down slope]
!Negative Phase value with 3 day slope of phase < 0
GoodPhaseDown if [phase] < 0 and slope([phase],3) < 0.

[Phase Turns Down]


!Phase was going up then turns down
Phasedown if Val([Phase],2)< Val([phase],1) and Val([Phase],1)> [Phase].
[Phase Turns Up]
!Phase was going down then turns up
Phaseup if Val([Phase],2)> Val([phase],1) and Val([Phase],1)< [Phase].
[Trend Change Down]
!Trend changed down
!If the 10 day slope 5 days ago was positive and the 5 day current slope is nega
tive
TrendChangeDown if slope([close],10,5) > 0 and slope([close],5) < 0.
[Trend Change Up]
!Trend changed up
!If the 10 day slope 5 days ago was negative and the 5 day current slope is posi
tive
TrendChangeUp if slope([close],10,5) < 0 and slope([close],5) > 0.
[Last ER Up]
!Find date last ER up of 95 or more in the last 49 days
sErUp if [er up] >= 95.
LastERUp if ScanAny(sErUp,49).
[Last ER Down]
!Find date last ER down of 95 or more in the last 49 days
sErDn if [er down] >= 90.
LastERDown if ScanAny(sErDn,49).
[Days Ago]
!Days ago User Defined Function
DaysAgo is RuleDate() - ReportDate().
[Date]
!Date User Defined Function
Date is RuleDate().
[Volume Spike]
! Spike if volume is 25% above the ESA of volume
VolumeSpike if [volume] >= [volume esa] * 1.25.
[Gap Up]
! Price gap up if todays low is greater than yesterdays high
GapUp if [low] > Val([high],1).
[Gap Down]
! Price gap down if todays high is less than yesterdays low
GapDown if [high] < Val([low],1).
[ADX Trend]
! ADX increasing and above the 25 level
ADXup if Slope([adx],5) > 0 and not bad5day. badadx if [adx]<25. bad5day if Sca
nAny(badadx,5).
[ADX no trend]
! ADX decreasing
ADXdown if Slope([adx],5) < 0.

[DIRMOV up and ADX trend]


! ADX trend in place and DIRMOV up
badadx if [adx]<25. bad5day if ScanAny(badadx,5). ADXup if Slope([adx],5) > 0 a
nd not bad5day. DIRMOVup if ADXup and [DirMov]>0.
[DIRMOV dn and ADX trend]
! ADX trend in place and DIRMOV down
badadx if [adx] < 25. bad5day if ScanAny(badadx,5). ADXup if Slope([adx],5) > 0
and not bad5day. DIRMOVDOWN if ADXUP and [DirMov]<0.
[ADX rate up]
! ADX trend in place, ADX rate up
ADXRATEup if ADXUP and [ADX RATE]>0 and slope([ADX RATE],5)>0. ADXup if Slope([a
dx],5) > 0 and not bad5day. badadx if [adx]<25. bad5day if ScanAny(badadx,5).
[VaPct turns positive]
! VaPct crosses from negative to positive
VAPCTbuy if VAL([Va Pct],1)<0 and [va Pct]>0.
[VaPct turns negative]
! VaPct crosses from positive to negative
VAPCTsell if VAL([Va Pct],1)>0 and [Va Pct]<0.
[VaPct divergence down]
! VaPct slope is down while price slope is up
VAPCTdivDN if Slope([Va Pct],45)<0 and Slope([close],45)>0.
[VaPct divergence up]
! VaPct slope is up while price slope is down
VAPCTdivUP if Slope([Va Pct],45)>0 and Slope([close],45)<0.
[VaPct nonconfirm new high]
! Price new high not confirmed by high in VaPct
VAPCThiNON if HiVal([close],45)=[close] and HiVal([Va Pct],45)>[Va Pct].
[VaPct nonconfirm new low]
! Price new low not confirmed by low in VaPct
VAPCTlowNON if Loval([close],45)=[close] and LoVal([Va Pct],45)<[Va Pct].
[Persistence Moneyflow]
! VaPct is above zero 90% of the last 120 days
PERSISMF if CountOf(GOODVAPCT,120)>=108. GOODVAPCT if [Va Pct]>0.
[Volume]
! Today's volume is above the average
VOLaboveAV if [volume]>[volume ESA].
[SVMA sell signal]
! SVMA sell signal moves from positive to negative
SVMAsell if VAL([SVMA],1)>0 and [SVMA]<0.
[SVMA buy signal]
! SVMA buy signal moves from negative to positive
SVMAbuy if VAL([SVMA],1)<0 and [SVMA]>0.
[SVMA divergence up]
! SVMA slope is up while price slope is down
SVMAdivUP if Slope([SVMA],15)>0 and Slope([close],15)<0.
[SVMA divergence down]

! SVMA slope is down while price slope is up


SVMAdivDN if Slope([SVMA],15)<0 and Slope([close],15)>0.
[RSI Wilder over 70]
! RSI Wilder is in overbought territory
RSIover70 if [RSI Wilder]>70.
[RSI Wilder below 30]
! RSI Wilder in oversold trritory
RSIunder30 if [RSI Wilder]<30.
[RSI Wilder falls below 70]
! RSI Wilder falls from above to below 70
RSIdnCUT70 if VAL([RSI Wilder],1)>70 and [RSI Wilder]<70.
[RSI Wilder rises above 30]
! RSI Wilder rises from below to above 30
RSIupCUT30 if VAL([RSI Wilder],1)<30 and [RSI Wilder]>30.
[RSI Wilder Divergence dn]
! RSI WIlder slope is down while price slope is up
RSIdnPRICEup if Slope([RSI Wilder],21)<0 and Slope([Close],21)>0.
[RSI Wilder Divergence up]
! RSI WIlder slope is up while price slope is down
RSIupPRICEdn if Slope([RSI Wilder],21)>0 and Slope([Close],21)<0.
[RSI AIQ over 70]
! RSI AIQ is in overbought territory
RSIAIQover70 if [RSI AIQ]>70.
[RSI AIQ below 30]
! RSI AIQ in oversold trritory
RSIAIQunder30 if [RSI AIQ]<30.
[RSI AIQ falls below 70]
! RSI AIQ falls from above to below 70
RSIAIQdnCUT70 if VAL([RSI AIQ],1)>70 and [RSI AIQ]<70.
[RSI AIQ rises above 30]
! RSI AIQ rises from below to above 30
RSIAIQupCUT30 if VAL([RSI AIQ],1)<30 and [RSI AIQ]>30.
[RSI AIQ Divergence dn]
! RSI AIQ slope is down while price slope is up
RSIAIQdnPRICEup if Slope([RSI AIQ],21)<0 and Slope([Close],21)>0.
[RSI AIQ Divergence up]
! RSI AIQ slope is up while price slope is down
RSIAIQupPRICEdn if Slope([RSI AIQ],21)>0 and Slope([Close],21)<0.
[Moneyflow divergence dn]
! Moneyflow slope is down while price slope is up
MFdnPRICEup if Slope([Mnyflow],60)<0 and Slope([close],60)>0.
[Moneyflow divergence up]
! Moneyflow slope is up while price slope is down
MFupPRICEdn if Slope([Mnyflow],60)>0 and Slope([close],60)<0.
[Moneyflow at new high]

! Moneyflow has reached a new high


MFnewHI if HiVal([Mnyflow],120)=[Mnyflow].
[Moneyflow at new low]
! Moneyflow has reached new low
MFnewLO if LoVal([Mnyflow],120)=[Mnyflow].
[Stochastic above 80%]
! Stochastic is in overbought territory
STOCHover80 if [stochastic]>80.
[Stochastic below 20%]
! Stochastic is in oversold territory
STOCHunder20 if [stochastic]<20.
[Stochastic dn from above 80%]
! Stochastic cuts from above 80% to below 80%
STOCHdn80 if VAL([stochastic],1)>80 and [stochastic]<80.
[Stochastic up from below 20%]
! Stochastic cuts from below 20% to above 20%
STOCHup20 if VAL([stochastic],1)<20 and [stochastic]>20.
[OBV down price up]
! OBV slope descending while price slope is ascending
OBVdnPRICEup if Slope([OBV],21)<0 and Slope([close],21)>0.
[OBV up price down]
! OBV slope ascending while price slope is descending
OBVupPRICEdn if Slope([OBV],21)>0 and Slope([close],21)<0.
[OBV nonconfirm new high]
! Price reaches new high not confirmed by high in OBV
OBVhiNON if HiVal([close],45)=[close] and HiVal([OBV],45)>[OBV].
[OBV nonconfirm new low]
! Price reaches a new low not confirmed by low in OBV
OBVloNON if LoVal([close],45)=[close] and LoVal([OBV],45)<[OBV].
[OBV at new high]
! OBV has reached a new high
OBVnewHI if HiVal([OBV],120)=[OBV].
[OBV at new low]
! OBV has reached new low
OBVnewLO if LoVal([OBV],120)=[OBV].
[VP Trend dn price up]
! VP Trend slope down while price slope is up
VPTdnPRICEup if Slope([VP Trend],21)<0 and Slope([close],21)>0.
[VP Trend up price dn]
! VP Trend slope up while price slope is down
VPTupPRICEdn if Slope([VP Trend],21)>0 and Slope([close],21)<0.
[VP Trend nonconfirm new hi]
! Price new high not confirmed by high in VP Trend
VPTnonHI if HiVal([close],45)=[close] and HiVal([VP Trend],45)>[VP Trend].
[VP Trend nonconfirm new lo]

! Price new low not confirmed by low in VP Trend


VPTnonLO if LoVal([close],45)=[close] and LoVal([VP Trend],45)<[VP Trend].
[Volatility at 21 day lo]
! Volatility reaches a 21 day low
VOLTY21lo if LoVal([Volatility],21)=[Volatility].
[Volatility at 21 day hi]
! Volatility reaches a 21 day high
VOLTY21hi if HiVal([Volatility],21)=[Volatility].
[Volatility breakout]
! Volatility cuts above movag after 21 days below
ISaboveVOLma if [Volatility]>[Volatility MA]. VOLTYbo if [volatility]>[Volatili
ty MA] and not ScanAny(ISaboveVOLma,21).
[OBVPct turns positive]
! OBVPct crosses from negative to positive
OBVPctBUY if VAL([OBV Pct],1)<0 and [OBV Pct]>0.
[OBVPct turns negative]
! OBVPct crosses from positive to negative
OBVPctSELL if VAL([OBV Pct],1)>0 and [OBV Pct]<0.
[OBVPct divergence down]
! OBVPct slope is dn while price slope is up
OBVPctDIVdn if Slope([OBV Pct],45)<0 and Slope([close],45)>0.
[OBVPct divergence up]
! OBVPct slope is dn while price slope is up
OBVPctDIVup if Slope([OBV Pct],45)>0 and Slope([close],45)<0.
[OBVPct nonconfirm new high]
! Price new high not confirmed by high in OBVPct
OBVPctHInon if HiVal([close],45)=[close] and HiVal([OBV Pct],45)>[OBV Pct].
[OBVPct nonconfirm new low]
! Price new low not confirmed by low in OBVPct
OBVPctLOnon if Loval([close],45)=[close] and LoVal([OBV Pct],45)<[OBV Pct].
[OBVPct and VAPct positive]
! OBVPct anad VAPct are positive
OBVPctVAPctUP if [OBV Pct]>0 and [VA Pct]>0.
[OBVPct and VAPct negative]
! OBVPct anad VAPct are negative
OBVPctVAPctUP if [OBV Pct]<0 and [VA Pct]>0.
[SplitVol up and price down]
! SplitVol up for 5 days and price is ascending
SplitVolupPRCIEdn if CountOf(SplitVolup,5)=5 and Slope([close],5)<0. SplitVolup
if [SplitVol]>0.
[SplitVol down and price up]
! SplitVol down for 5 days and price is descending
SplitVoldnPRCIEup if CountOf(SplitVoldn,5)=5 and Slope([close],5)>0. SplitVoldn
if [SplitVol]<0.
[SK cross SD up]
! SK crosses from below to above SD

SKSDcrossUP if VAL([SK],1)<VAL([SD],1) and [SK]>[SD] and 10<[SK-SD]<90.


[SK cross SD down]
! SK crosses from above to below SD
SKSDcrossDN if VAL([SK],1)>VAL([SD],1) and [SK]<[SD] and 10<[SK-SD]<90.
[SK cross SD up, SD slope up]
! SK crosses from below to above SD
SKSDcrossUP if VAL([SK],1)<VAL([SD],1) and [SK]>[SD] and 10<[SK-SD]<90 and SLOPE
([SD],2)>0.
[SK cross SD dn, SD slope dn]
! SK crosses from above to below SD
SKSDcrossDN if VAL([SK],1)>VAL([SD],1) and [SK]<[SD] and 10<[SK-SD]<90 and SLOPE
([SD],2)<0.
[MFRSI over 80]
! MFRSI is greater than 80
MFRSIover80 if [MF RSI]>80.
[MFRSI under 20]
! MFRSI is lower than 20
MFRSIunder20 if [MF RSI]<20.
[MFRSI rises above -90]
! MFRSI crosses from below to above -100
MFRSIcrossneg90 if VAL([MF RSI],1)<-90 and [MF RSI]>-90.
[MFRSI falls below 90]
! MFRSI crosses from above to below 100
MFRSIcross90 if VAL([MF RSI],1)>90 and [MF RSI]<90.
[AcmDis down price up]
! AccmDis slope descending price slope ascending
ACMDISdnPRICEup if SLOPE([AcmDis],21)<0 and SLOPE([close],21)>0.
[AcmDis up price down]
! AccmDis slope ascending price slope descending
ACMDISdnPRICEdown if SLOPE([AcmDis],21)>0 and SLOPE([close],21)<0.
[AcmDis nonconfirm new high]
! Price new high not confirmed by high in AcmDis
AcmDisHInon if HiVal([close],45)=[close] and HiVal([AcmDis],45)>[AcmDis].
[AcmDis nonconfirm new low]
! Price new low not confirmed by low in AcmDis
AcmDisLOnon if Loval([close],45)=[close] and LoVal([AcmDis],45)<[AcmDis].
[Velocity above zero slope up]
! Velocity is greater than zero and slope ascending
VELTYabove0andUP if [Velocity]>0 and Slope([Velocity],10)>0.
[Velocity below zero slope dn]
! Velocity is less than zero and slope descending
VELTYbelow0andDN if [Velocity]<0 and Slope([Velocity],10)<0.
[CCI cross below to above 100]
! CCI cuts from below to above 100
CCIup if VAL([CCI],1)<100 and [CCI]>100.

[CCI cross above to below 100]


! CCI cuts from above to below 100
CCIdn if VAL([CCI],1)>100 and [CCI]<100.
[CCI sell short]
! CCI cuts from above -100 to below -100
CCIsellshort if VAL([CCI],1)>-100 and [CCI]<-100.
[CCI cover short]
! CCI cuts from below -100 to above -100
CCIcovershort if VAL([CCI],1)<-100 and [CCI]>-100.
[AIQ Upper Band cross down]
! Price crosses from above to below the Upper Band
AIQupperDN if VAL([Upper AIQ],1)<VAL([close],1) and [Upper AIQ]>[close].
[AIQ Lower Band cross up]
! Price crosses from below to above the Lower Band
AIQlowerUP if VAL([Lower AIQ],1)>VAL([close],1) and [Lower AIQ]<[close].
[ESA Upper cross down]
! Price crosses from above to below the Upper ESA
ESAupperDN if VAL([Upper ESA],1)<VAL([close],1) and [Upper ESA]>[close].
[ESA Lower Band cross up]
! Price crosses from below to above the Lower ESA
ESAlowerUP if VAL([Lower ESA],1)>VAL([close],1) and [Lower ESA]<[close].
[ST MA price cross up]
! Price cross up the ST MA
STMApriceUP if VAL([close],1)<VAL([ST MA],1) and [close]>[ST MA].
[IT MA price cross up]
! Price cross up the IT MA
ITMApriceUP if VAL([close],1)<VAL([IT MA],1) and [close]>[IT MA].
[LT MA price cross up]
! Price cross upside LT MA
LTMApriceUP if VAL([close],1)<VAL([LT MA],1) and [close]>[LT MA].
[ST MA price cross down]
! Price cross downside ST MA
STMApriceDN if VAL([close],1)>VAL([ST MA],1) and [close]<[ST MA].
[IT MA price cross down]
! Price cross downside IT MA
ITMApriceDN if VAL([close],1)>VAL([IT MA],1) and [close]<[IT MA].
[LT MA price cross down]
! Price cross downside LT MA
LTMApriceDN if VAL([close],1)>VAL([LT MA],1) and [close]<[LT MA].
[ST MA cross IT MA]
! ST MA crosses IT MA
STMAcrossITMA if [ST MA]=[IT MA].
[ST MA IT MA LT MA cross]
! ST MA crosses IT MA and LT MA
STMAITMALTMAcross if [ST MA]=[IT MA]=[LT MA].

[ST MA cross LT MA]


! ST MA crosses LT MA
STMAcrossLTMA if [ST MA]=[LT MA].
[BBands tighten]
! Bollinger Bands tighten with low volatility
Bbandsqueze if Slope([Lower BB],5) > 0 and Slope([Upper BB],5) < 0 and LoVal([Vo
latility],21)=[Volatility].
[BBands Upper cross down]
! Price crosses from above to below Upper BB
UPPERBBcrossDOWN if VAL([close],1)>VAL([Upper BB],1) and [Upper BB]>[close].
[BBands Lower cross up]
! Price crosses from below to above Lower BB
LOWERBBcrossUP if VAL([close],1)<VAL([Lower BB],1) and [Lower BB]<[close].
[Price at new 21 day high]
! Price reaches a new 21 day high
PRICE21hi if HiVal([close],21)=[close].
[Price at new 21 day low]
! Price reaches a new 21 day high
PRICE21lo if LoVal([close],21)=[close].
[Reports Wt Action List up ER's]
! ER to upside 95 or greater last 10 days confirmed by change in direction of th
e Price Phase indicator in the last 3 days.
ISwtactSTOCKup if HiVal([ER UP],10)>=95 and PhaseCHANGEup. PhaseCHANGEup if Val(
[Phase],2)> Val([phase],1) and Val([Phase],1)< [Phase] or (Val([phase],3) > Val(
[phase],2) and Val([Phase],2)< Val([phase],1)) or (Val([phase],4) > Val([phase],
3) and Val([Phase],3)< Val([phase],2)).
[Reports Wt Action List dn ER's]
! ER to downside 95 or greater last 10 days confirmed by change in direction of
the Price Phase indicator in the last 3 days.
ISwtactSTOCKdn if HiVal([ER DOWN],10)>=95 and PhaseCHANGEdn. PhaseCHANGEdn if Va
l([Phase],2)< Val([phase],1) and Val([Phase],1)> [Phase] or (Val([phase],3)< Val
([phase],2) and Val([Phase],2)> Val([phase],1)) or (Val([phase],4) < Val([phase]
,3) and Val([Phase],3)> Val([phase],2)).
[Reports - Price chg % 5 days]
! percentage price change last 5 days
PriceCHANGE is (([close]-Val([close],5))/Val([close],5))*100.
[Reports new 21 day high]
! Price reaches a new 21 day high
PRICE21hi if HiVal([close],21)=[close].
[Reports new 21 day low]
! Price reaches a new 21 day low
PRICE21lo if LoVal([close],21)=[close].
[Reports Gap Up]
! Price gap up if todays low is greater than yesterdays high
GapUp if [low] > Val([high],1).
[Reports Gap Down]
! Price gap down if todays high is less than yesterdays low
GapDown if [high] < Val([low],1).

[Reports Volume Spike]


! Spike if volume is 100% above the ESA of volume
VolumeSpike if [volume] >= [volume esa] * 2.
[Reports Volume Trend]
! ST volume avg twice LT volume avg
STVOL is [volume]. LTVOL is [volume]. STvolAVG is SimpleAvg(STVOL,5). LTvolAVG i
s SimpleAvg(LTVOL,21). VOltrend if STvolAVG>=LTvolAVG*2.
[Reports cross 2 mov avgs]
! ST MA crosses LT MA in last 5 days
STMAcrossLTMA if (Val([ST MA],1)>Val([LT MA],1)and[ST MA]<[LT MA]) or (Val([ST M
A],1)<Val([LT MA],1)and[ST MA]>[LT MA]). days5CROSS if ScanAny(STMAcrossLTMA,5).