The AIQ code based on Donald Pendergast’s article in the December 2013 issue of Stocks & Commodities, “Swing Trading With Three Indicators,” is provided at the following website: www.TradersEdgeSystems.com/traderstips.htm.
In addition to coding the author’s system as described in his article — which uses the following rules: buy to enter long and sell to exit the longs; short to enter shorts and cover to exit shorts — I created a second system that uses average true range
to get the breakout amount. I also added some additional trend filters
that use the NASDAQ 100 index.
All trading was simulated using closing
prices to determine whether an entry/exit had occurred, and then the
trades are entered/exited the next day at the open. My modified system
uses rules to “BuyATR,” “SellATR,” “ShortATR,” and “CoverATR.” A
comparison of equity curves is shown in Figure 7. In testing the short
side, neither the author’s original system nor my modified system was
able to produce profitable results, although my modified system has a
smaller total loss than the author’s original system.
for Donald Pendergast’s original system and my modified system trading
the NASDAQ 100 list of stocks for the period 1/5/2000 to 10/9/2013.
The code and EDS file can be downloaded from www.TradersEdgeSystems.com/traderstips.htm.
!SWING TRADING WITH THREE INDICATORS !Author: Donald Pendergast, TASC December 2013 !Coded by: Richard Denning 10/10/2013 !www.TradersEdgeSystems.com !INPUTS: emaLen is 50. smaLen is 5. breakAmt is 0.05. atrLen is 10. atrMult is 0.04. H is [high]. L is [low]. C is [close]. C1 is valresult(C,1). price is C. emaLenLT is 200. !UDFs: maH is simpleavg(H,smaLen). maL is simpleavg(L,smaLen). ema is expavg(C,emaLen). emaLT is expavg(C,emaLenLT). TR is Max(H - L,max(abs(C1 - L),abs(C1- H))). ATR is simpleavg(TR,atrLen). ATRpct is simpleavg(TR/C,atrLen). ndxC is tickerUDF("NDX",C). emaNDX is tickerUDF("NDX",ema). emaNDXlt is tickerUDF("NDX",emaLT). !SYSTEM RULES: !Author's system: Buy if price > maH+breakAmt and C > ema. Sell if price < maL. Short if price < maL-breakAmt and C < ema. Cover if price > maH. !Modified system using average true range: BuyATR if price > maH+atrMult*ATR and C > ema and ndxC < emaNDX and ndxC > emaNDXlt . SellATR if price < maL-atrMult*ATR. ShortATR if price < maL-atrMult*ATR and C < ema and ndxC > emaNDX. CoverATR if price > maH+atrMult*ATR.