MACD theo phong cách giao dịch mới
Chỉ báo này được tạo ra bởi Karthik Marar. Nó dựa trên macd cổ điển nhưng có khả năng làm mịn vượt trội. Việc làm mịn này giúp loại bỏ tiếng ồn của macd cổ điển như bạn thấy trong hình ảnh. MACD thích ứng với hai đường trung bình thích ứng, một đường trung bình thích ứng với chu kỳ trội và đường còn lại thích ứng với hai lần chu kỳ trội. Vì điều cơ bản đằng sau MACD là sự khác biệt của hai đường trung bình động, chúng tôi không thể tìm thấy sự khác biệt nhiều giữa MACD thông thường (12, 26) và MACD thích ứng. Tuy nhiên, chỉ báo MACD thích ứng ít bị biến động hơn và bắt kịp xu hướng rất tốt đồng thời nắm bắt các điểm ngoặt kịp thời. MACD thích ứng chắc chắn tốt hơn một bậc so với MACD thông thường.
Ảnh minh họa
_SECTION_BEGIN("Dominant Period");
SetBarsRequired( 1000, 1000);
prc = ( High + Low ) / 2;
Cyclepart = 0.7 ;
pi=4*atan(1);
RTD=180/pi;
DTR=pi/180;
Smooth[0] = Detrender[0] = I1[0] = Q1[0] = jI[0] = jQ[0] = I2[0] = I3[0] = Q3[0] = Q2[0] = Re[0] = Re1[0] =Im[0] = Im1[0] = 0;
Period[0] = Period1[0] = alpha = cycle = SmoothPeriod[0] = imagpart[0] = realpart[0] = DCPhase[0] = 0;
for ( i = 6; i < BarCount; i++ )
{
Smooth[i] = ( 4 * prc[i] + 3 * prc[i-1] + 2 * prc[i-2] + prc[i-3] ) / 10;
Cycle[i] = ((1-0.5*alpha[i])^2)*(Smooth[i] - 2*Smooth[i-1] + Smooth[i-2]) + 2*(1-alpha[i])*Cycle[i-1] - ((1-alpha[i])^2)*Cycle[i-2];
AmpCorr[i] = 0.075 * Period[i-1] + 0.54;
Detrender[i] = ( 0.0962 * Smooth[i] + 0.5769 * Smooth[i-2] - 0.5769 * Smooth[i-4] - 0.0962 * Smooth[i-6] ) * AmpCorr[i];
Q1[i] = ( 0.0962 * Detrender[i] + 0.5769 * Detrender[i-2] - 0.5769 * Detrender[i-4] - 0.0962 * Detrender[i-6] ) * AmpCorr[i];
I1[i] = Detrender[i-3];
jI[i] = ( 0.0962 * I1[i] + 0.5769 * I1[i-2] - 0.5769 * I1[i-4] - 0.0962 * I1[i-6] ) * AmpCorr[i];
jQ[i] = ( 0.0962 * Q1[i] + 0.5769 * Q1[i-2] - 0.5769 * Q1[i-4] - 0.0962 * Q1[i-6] ) * AmpCorr[i];
I2[i] = I1[i] - jQ[i];
Q2[i] = Q1[i] + jI[i];
I3[i] = 0.2 * I2[i] + 0.8 * I3[i-1];
Q3[i] = 0.2 * Q2[i] + 0.8 * Q3[i-1];
Re[i] = I3[i] * I3[i-1] + Q3[i] * Q3[i-1];
Im[i] = I3[i] * Q3[i-1] - Q3[i] * I3[i-1];
Re1[i] = 0.2 * Re[i] + 0.8 * Re1[i-1];
Im1[i] = 0.2 * Im[i] + 0.8 * Im1[i-1];
{
if ( Im1[i] != 0 AND Re1[i] != 0 ) Period1[i] = 360*DTR / atan( Im1[i] / Re1[i] );
else
Period1[i] = Period1[i-1];
}
{
if ( Period1[i] > 1.5 * Period1[i-1] ) Period2[i] = 1.5 * Period1[i-1];
else
{
if ( Period1[i] < 0.67 * Period1[i-1] ) Period2[i] = 0.67 * Period1[i-1];
else
Period2[i] = Period1[i];
}
}
{
if ( Period2[i] < 6 ) Period3[i] = 6;
else
{
if ( Period2[i] > 50 ) Period3[i] = 50;
else
period3[i]=Period2[i];
}
}
Period[i] = 0.2 * Period3[i] + 0.8 * Period[i-1];
SmoothPeriod[i] = 0.33 * Period[i] + 0.67 * SmoothPeriod[i-1];
DCPeriod[i] = int(SmoothPeriod[i]+0.5);
}
sp=DCperiod;
_SECTION_END();
_SECTION_BEGIN("Adaptive MACD V.1.0");
SetChartBkColor(colorWhite);
fastper = 2/((sp)+1);
slowper = 2/(2*sp+1);
slowema = AMA(C,slowper);
fastema = AMA(C,fastper);
MACDee = fastema-slowema;
sig = MA(MACDee,9);
Plot(MACDee,EncodeColor(colorBlue)+"MACD - Adaptive V.1.0"+"("+WriteVal(dcperiod/2,0)+","+WriteVal(dcperiod,0)+")",colorLime,1|styleThick);
Plot(MA(MACDee,9),"sig",colorRed,1|styleThick);
r = MACDee;
s = MA(MACDee,9);
j = MACDee-MA(MACDee,9);
SetBarFillColor(IIf( r-s > 0, colorAqua, colorOrange));
PlotOHLC(0,j,0,j,"",IIf( r-s > 0, colorAqua, IIf(r-s <0 ,colorOrange,colorWhite)), styleCandle |styleOwnScale) ;
_SECTION_END();
Hưng Nguyên