Traders' Tip text
The CAM indicator depicted in the article by Barbara Star from January 2018 issue of Stocks & Commodities combines two classic indicators
MACD and
ADX into a pair that is believed to highlight the price patterns of trending and reversion.
As suggested in the article, trading this system should be approached after filtering out false pattern fluctuations by checking the the moving average and
CCI indicator. The resulting countertrend system's rules are:
Enter long: Buy tomorrow at open if today's a “gold bar” (a.k.a. CAM-PB i.e. 10-period ADX and MACD declines) but the 14-period CCI is above 0, or if today's a “blue bar” (i.e. the 10-period ADX declines but MACD rises) and today's Close crosses above the 13-period
EMA.
Exit long: Sell tomorrow at open if today's a “red bar” (a.k.a. CAM-CT i.e. 10-period ADX rises but MACD declines) and today's Close is below the 13-period EMA.
Nonetheless, filtering itself may not be enough – to maximize your odds we recommend applying the system to a pre-selected watchlist of securities that demonstrate trendiness. Figure 1 shows a characteristic example of an 'asset' where a trendfollowing system that enters on corrections shines now –
Bitcoin:
Figure 1.
Recent entries and exits on the chart of BTC/USD (Bitcoin).
To make your conclusions regarding the efficiency of the indicator combo, run enclosed C# Strategy code (or simply download it from Wealth-Lab's “Open Strategy” dialog):
C# Codeusing System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using WealthLab;
using WealthLab.Indicators;
namespace WealthLab.Strategies
{
public class MyStrategy : WealthScript
{
protected override void Execute()
{
var adx = ADX.Series(Bars,10);
var macd = MACD.Series(Close);
var cci = CCI.Series(Bars,14);
var ema = EMAModern.Series(Close,13);
var days = 10;
SetBarColors( Color.Silver,Color.Silver);
var ls = LineStyle.Solid;
var cp = CreatePane( 30,true,true);
var mp = CreatePane( 30,true,true);
var ap = CreatePane( 30,true,true);
PlotSeries( mp, macd, Color.DarkGreen, ls, 2 );
PlotSeries( ap, adx, Color.Red, ls, 2 );
PlotSeries( cp, cci, Color.Black, LineStyle.Histogram, 2 );
PlotSeries( PricePane, ema, Color.Gray, ls, 2 );
for(int bar = GetTradingLoopStartBar( 14 * 3); bar < Bars.Count; bar++)
{
bool CAM_UP = (adx[bar] >= adx[bar-1]) & (macd[bar] > macd[bar-1]);
bool CAM_PB = (adx[bar] <= adx[bar-1]) & (macd[bar] < macd[bar-1]);
bool CAM_DN = (adx[bar] >= adx[bar-1]) & (macd[bar] < macd[bar-1]);
bool CAM_CT = (adx[bar] <= adx[bar-1]) & (macd[bar] > macd[bar-1]);
bool buyPullback = (CAM_PB && (cci[bar] > 0)) ||
(CAM_CT && CrossOver( bar,Close,ema));
SetBarColor( bar, CAM_UP ? Color.Green : CAM_PB ? Color.Gold: CAM_DN ? Color.Red : CAM_CT ? Color.DarkBlue : Color.Black );
SetSeriesBarColor( bar, cci, cci[bar] < 0 ? Color.Red : Color.Green );
if (IsLastPositionActive)
{
Position p = LastPosition;
if( CAM_DN && (Close[bar] < ema[bar]) )
SellAtMarket( bar+1, p, "CAM-DN" );
}
else
{
if(buyPullback)
{
AnnotateBar("v",bar,false,Color.Black);
BuyAtMarket( bar+1);
}
}
}
}
}
}
Eugene (Gene Geren)
Wealth-Lab team
www.wealth-lab.com