Join our facebook group for Amibroker afl code discussion https://www.facebook.com/groups/603980776889348

CCI MACD DPO Combined System


CCI MACD DPO Combined System
CCI MACD DPO Combined System


//www.aflcode.com
_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();

Previous
Next Post »