Category Archives: EDS

Volume-Weighted Moving Average Breakouts

The AIQ code based on Ken Calhoun’s article in the February 2017 issue of Technical Analysis ofSTOCKS & COMMODITIES, “Volume-Weighted Moving Average Breakouts,” can be found at http://aiqsystems.com/Volume-Weighted-Moving-Average-Breakouts.EDS 
 
Please note that I tested the author’s system using the NASDAQ 100 list of stocks on daily bars rather than intraday bars from 12/31/2008 thru 2/10/2017. Figure 7 shows the resulting equity curve trading the author’s system with the cross-down exit. Figure 8 shows the ASA report for this test. The annualized return showed about a 17% return with a maximum drawdown of 19%.
Sample Chart

FIGURE 7: AIQ. Here are sample test results from the AIQ Portfolio Manager taking three signals per day and 10 concurrent positions maximum run on NASDAQ 100 stocks (daily bar data) over the period 12/31/08 to 2/10/07.
Sample Chart

FIGURE 8: AIQ. This shows the ASA report for the system, which shows the test metrics and settings.
The code and EDS file can be downloaded from http://aiqsystems.com/Volume-Weighted-Moving-Average-Breakouts.EDS , and is also shown below.
!Volume-Weighted Moving Average Breakouts
!Author: Ken Calhoun, TASC Apr 2017
!Coded by: Richard Denning 2/11/17
!www.TradersEdgeSystems.com

!INPUTS:
smaLen is 70.
vwmaLen is 50.

SMA is simpleavg([close],smaLen).
VWMA is sum([close]*[volume],vwmaLen)/sum([volume],vwmaLen).
HasData if hasdatafor(max(smaLen,vwmaLen)+10)>max(smaLen,vwmaLen).
Buy if SMA < VWMA and valrule(SMA > VWMA,1) and HasData.
Sell if SMA > VWMA.

rsVWMA is VWMA / valresult(VWMA,vwmaLen)-1.
rsSMA is SMA / valresult(SMA,smaLen)-1.
—Richard Denning
info@TradersEdgeSystems.com
for AIQ Systems

Exponential Standard Deviation Bands

The AIQ code based on Vitali Apirine’s article in the 2017 issue of Stocks & Commodities magazine, “Exponential Standard Deviation Bands”

Editor note: “Author Vitali Apirine presented a method intended to help traders see volatility while a stock is trending. These bands, while similar to Bollinger Bands, are calculated using exponential moving averages rather than simple moving averages. Like Bollinger Bands, they widen when volatility increases and narrow as volatility decreases. He suggests that the indicator can be used as a confirming indication along with other indicators such as the ADX. Here’s an AIQ Chart with the Upper, Lower and Middle Exponential SD added as custom indicators.”

 

 

To compare the exponential bands to Bollinger Bands, I created a trend-following trading system that trades long only according to the following rules:
  1. Buy when there is an uptrend and the close crosses over the upper band. An uptrend is in place when the middle band is higher than it was one bar ago.
  2. Sell when the low is less than the lower band.
Figure 8 shows the summary test results for taking all signals from the Bollinger Band system run on NASDAQ 100 stocks over the period 12/9/2000 to 12/09/2016. Figure 9 shows the summary test results for taking all signals from the exponential band system on NASDAQ 100 stocks over the same period. The exponential band system improved the average profit per trade while reducing the total number of trades.

Sample Chart

FIGURE 8: AIQ. Here are summary test results for taking all signals from the Bollinger Band system run on NASDAQ 100 stocks over the period 12/9/2000 to 12/09/2016.

Sample Chart

FIGURE 9: AIQ. Here are summary test results for taking all signals from the exponential band system run on NASDAQ 100 stocks over the period 12/9/2000 to 12/09/2016.
The EDS file can be downloaded from http://aiqsystems.com/EDS/Exponential_Standard_Deviation_Bands.EDS 
and is also shown here:
!Exponential Standard Deviation Bands
!Author: Vitali Apirine, TASC February 2017
!Coded by: Richard Denning 12/11/2016
!www.TradersEdgeSystems.com!INPUT:
xlen is 20.
numSD is 2.

!INDICATOR CODE:
ExpAvg is expavg([close],xlen).
Dev is [close] – ExpAvg.
DevSqr is Dev*Dev.
SumSqr is sum(DevSqr,xlen).
AvgSumSqr is SumSqr / xlen.
ExpSD is sqrt(AvgSumSqr).

!UPPER EXPONENTIAL SD BAND:
UpExpSD is ExpAvg + numSD*ExpSD.  !PLOT ON CHART

!LOWER EXPONENTIAL SD BAND:
DnExpSD is ExpAvg – numSD*ExpSD.   !PLOT ON CHART

!MIDDLE EXPONENTIAL SD BAND:
MidExpSD is ExpAvg.

!BOLLINGER BANDS FOR COMPARISON:
DnBB is [Lower BB].  !Lower Bollinger Band
UpBB is [Upper BB].  !Upper Bollinger Band
MidBB is simpleavg([close],xlen). !Middle Bollinger Band
!REPORT RULE TO DISPLAY VALUES:
ShowValures if 1.

!TRADING SYSTEM USING EXPPONENTIAL SD BANDS:
UpTrend if MidExpSD > valresult(MidExpSD,1).
BreakUp if [close] > UpExpSD.
BuyExpSD if UpTrend and BreakUp and valrule(Breakup=0,1).
ExitExpSD if [Low] < DnExpSD.  ! or UpTrend=0.

!TRADING SYSTEM USING BOLLINGER BANDS:
UpTrendBB if MidBB > valresult(MidBB,1).
BreakUpBB if [close] > UpBB.
BuyBB if UpTrendBB and BreakUpBB and valrule(BreakupBB=0,1).
ExitBB if [Low] < DnBB.  ! or UpTrend=0.

—Richard Denning
info@TradersEdgeSystems.com
for AIQ Systems

Chart Pattern Recognition – Lock in 2008 pricing 5 days remaining!

Why add Chart Pattern to your TradingExpert Pro? 

 
  • Over 3000 stocks tracked
  • 16 different patterns tracked
  • 6 gauges of each pattern's quality
  • Automatically generate report every night
  • Built in EDS file so you can backtest and add to your own strategy
  • Completed and emerging patterns
​​​​​​​
OR CALL AIQ SALES on 1-800-332-2999 or 775-832-2798
 
 LOCK in 2008 pricing
 

hfwacp7-13-16

 
If you order before July 31, 2016
you'll get the 2008 pricing!
 
 
OR CALL AIQ SALES on 1-800-332-2999 or 775-832-2798

Zero In On The MACD

The AIQ code based on Barbara Star’s article in May issue of Stocks and Commodities “Zero In On The MACD,” is provided at www.TradersEdgeSystems.com/traderstips.htm, and is also shown below.
Sample Chart

FIGURE 7: AIQ. Here is a sample chart of VIAB with MACDhist, the color bars, and the 34- and 55-bar EMAs.
Figure 7 shows the MACD histogram on a chart of Viacom (VIAB) with the color bars and the 34- and 55-bar exponential moving averages (EMA). Note that I did not code the weighted moving average (WMA) but substituted the EMA for the WMA. I chose to view the chart of VIAB by running the EDS “Zero MACD.eds” on 3/14/2016 and examining the alert messages on the report “List.” VIAB is the only one on that date that showed a cross up on the MACDhist (see Figure 8 for a look at part of this report for 3/14/2016).
Sample Chart

FIGURE 8: AIQ. This shows part of the EDS custom report “List” that shows the MACDhist values on 3/14/2016, the color status, and any alerts that were generated for that day.
! ZERO IN ON THE MACD

! Author: Barbara Star, TASC May 2016

! Coded by: Richard Denning 3/14/16

! www.TradersEdgeSystems.com



! INPUTS:

macd1  is  12.

macd2  is  26.

macdSig is  1.



! INDICATORS:

emaST  is expavg([Close],macd1).

emaLT  is expavg([Close],macd2).

MACD  is emaST - emaLT.  ! MACD line

SigMACD is expavg(MACD,macdSig). ! MACD Signal line

MACDosc is MACD - SigMACD. ! MACD Oscillator



HD if hasdatafor(macd2) = macd2.

MACDhist is MACD.                                 ! plot as historigram

MACDblue if MACDhist > 0.  ! use these rules to color MACDhist

MACDred  if MACDhist < 0.  ! use these rules to color MACDhist

MACDcolor is iff(MACDblue and HD,"Blue",iff(MACDred and HD,"Red","White")). !for report list

List if 1.



!ALERTS:

EMA1 is expavg([close],34).

EMA2 is expavg([close],55).

xupEMA1 if [close] > EMA1 and valrule([close] < EMA1,1).

xdnEMA1 if [close] < EMA1 and valrule([close] > EMA1,1).

xupEMA2 if [close] > EMA2 and valrule([close] < EMA2,1).

xdnEMA2 if [close] < EMA2 and valrule([close] > EMA2,1).

xupMACD if MACDhist > 0 and valrule(MACDhist < 0,1).

xdnMACD if MACDhist < 0 and valrule(MACDhist > 0,1).

UpAlerts is iff(xupEMA1,"xupEMA1",iff(xupEMA2,"xupEMA2",iff(xupMACD,"xupMACD"," "))).

DnAlerts is iff(xdnEMA1,"xdnEMA1",iff(xdnEMA2,"xdnEMA2",iff(xdnMACD,"xdnMACD"," "))).

The code and EDS file can be downloaded from www.TradersEdgeSystems.com/traderstips.htm.

Trading Gap Reversals

The AIQ code based on Ken Calhoun’s article in April 2016 issue of Stock & Commodities Trading Gap Reversals”, is provided below. 
AIQ has also posted the EDS file at “ is provided for downloading at 
Save this file to your/wintes32/EDS Strategies folder.
Since I mainly work with daily bar strategies, I wanted to test the gap-down concept on a daily bar trading system rather than on one-minute bars. I set up a system that buys after a stock has gapped down at least 10% in the last two days and then trades above the high of the gap-down bar. The entry is then at the close of that bar. For exits, I used the built-in exit, the profit-protect exit set at 80% once profit reaches 3% or more combined with a stop-loss using the low of the gap-down bar and also a time exit set to five bars. 
I then ran this system on the NASDAQ 100 list of stocks in the EDS backtester over the period 12/31/1999 to 1/11/2016 (Figure 7). The system generated 303 trades with an average profit of 1.09% per trade with a reward-to-risk ratio of 1.35. Slippage and commissions have not been deducted from these results.
Sample Chart
FIGURE 7: AIQ. This shows the EDS test results for the example system.
Again, the code and EDS file can be downloaded from www.TradersEdgeSystems.com/traderstips.htm, and is also shown below.
!TRADING GAP REVERSALS
!Author: Ken Calhoun, TASC April 2016
!Coded by: Richard Denning 2/1/2016
!www.TradersEdgeSystems.com

!INPUTS:
GapSize is 10.
GapLookBack is 5.
MaxBars is 5.

!CODING ABBREVIATIONS:
H is [high].
C is [close].
C1 is val([close],1).
L is [low].
O is [open].

GapD is (O / C1 - 1) * 100.
GapOS is scanany(GapD < -GapSize,GapLookBack) <> nodate()
  then offsettodate(month(),day(),year()).
Hgap  is valresult(H,^GapOS).
Lgap  is valresult(L,^GapOS).
SU if  scanany(GapD < -GapSize,GapLookBack).
SU1 if  scanany(GapD < -GapSize,GapLookBack,1).
SU2 if  scanany(GapD < -GapSize,GapLookBack,2).
LE if ((SU1 then resetdate()) or (SU2 then resetdate())) 
 and H > Hgap.
ExitLong if {position days} > maxBars
 or C < Lgap.
EntryPr is max(O,Hgap).
List  if C > 0.
—Richard Denning