Skip to main content

CCI + DPO + MACD for Amibroker (AFL)

sm_d about 16 years ago Amibroker (AFL)

  • Rating:
    4 / 5 (Votes 6)
  • Tags:
    oscillator, trading system, amibroker, exploration

This Signal was discussed on the VV forum. I am not sure who developed it. It combines the three indicators, MACD, DPO AND Trix into one timing Signal. A Signal will only occur when all three conditions exist. The two timing signals are buy/cover and short/sell signal. The purpose is to keep the user in the market all the time.

Indicator / Formula

Copy & Paste Friendly
_SECTION_BEGIN("CCI + DPO + MACD"); 
// Written by Barry Scarborough 2/15/05
// Updated 8/10/05 - corrected DPO formula
//
// This Signal was discussed on the VV forum. I am not sure who developed it.
// It combines the three indicators, MACD, DPO AND Trix into one timing Signal. 
// A Signal will only occur when all three conditions exist. 
// The two timing signals are buy/cover and short/sell signal. The purpose is to keep the user in the market all the time.

// macd 
// Param allows changing parameters without changing the code, the default are the standard defaults for MACD
r1 = Param( "MACD Fast avg", 12, 2, 200, 1 );
r2 = Param( "MACD Slow avg", 26, 2, 200, 1 );
r3 = Param( "MACD Signal avg", 9, 2, 200, 1 ); 
upMacd = IIf(MACD(r1,r2) > Signal(r1,r2,r3), 1, 0); // up and down signal

// dpo - detrended price oscillator
n = Param("DPO period", 14, 2, 100, 1);
p = int( ( n / 2) + 1);
movA = MA(C, n);
dpo = C -  Ref(movA, -p);
upDpo = dpo > 0; 
dnDpo = dpo < 0; 

// CCI
periods = Param("CCI period", 20, 2, 100, 1 ); // default is 10
myCCI = CCI( periods );

// signal conditions
myBuy = upDpo AND upMacd AND myCCI > 0;
myShort = dnDpo AND !upMacd AND myCCI < 0; 

Buy = Cover = ExRem(myBuy, myShort);	// this removes additional signals between the first buy up to the short signal
Short = Sell = ExRem(myShort, myBuy);

Plot( Buy * C, "CCI(" + NumToStr(periods,1.0) +  
	") DPO(" + NumToStr(n,1.0) +  
	") MACD(" + NumToStr(r1,1.0) + "," + NumToStr(r2,1.0) + "," + NumToStr(r3,1.0) +  
	") - myBuy ",  colorGreen); // a positive spike that indicates a buy or cover trade.
Plot( -Short * C , "myShort ", colorRed); // a negative signal that indicates a short or sell signal

// explore varables
Filter = Buy OR Short; 
AddColumn(Close, "Close", 1.2);
AddColumn(Buy, "Buy/Cover", 1.0);
AddColumn(Short, "Sell/Short",1.0);
_SECTION_END();

3 comments

almost 9 years ago

Strange indicator… in MT4 CI when it peaks on the top means the trend goes down and when it troughs in the bottom it means the trend is up… basically catching the bottoms and tops… but this one looks a bit weird and looks like works the opposite. Would appreciate some clarification, if possible.

Leave Comment

Please login here to leave a comment.