[MT4指标]John Ehlers的指标Smoothed ADX
指标 Smoothed ADX 是应论坛访问者的需要编写的。该指标很简单。 在指标的搜索结果里没有什么都找到。所以提供以下代码供参考:
输入数据: {declaring inputs}
宽度( 14 ),
ADXTrend( 25 ), alpha1(0.25), alpha2(0.33);
变量: {declaring variables}
DMIPlus( 0 ), DMIMinus( 0 ), DMI( 0 ), ADX( 0 ),
DIPlusLead(0), DIMinusLead(0), DIPlusFinal(0), DIMinusFinal(0),
ADXLead(0), ADXFinal(0);
{现在调用 ADX 函数,不需要计算}
Value1 = DirMovement( H, L, C, Length, DMIPlus, DMIMinus, ADX);
{这个部分实际上是原始ADX指标的平滑线, DI+, DI- and ADX 线是平整的}
DIPlusLead = 2* DMIPlus + (alpha1 - 2) * DMIPlus [1] + (1 - alpha1) * DIPlusLead[1];
DIPlusFinal = alpha2*DIPlusLead + (1 - alpha2) * DIPlusFinal[1];
DIMinusLead = 2* DMIMinus + (alpha1 - 2) * DMIMinus [1] + (1 - alpha1) * DIMinusLead[1];
DIMinusFinal = alpha2*DIMinusLead + (1 - alpha2) * DIMinusFinal[1];
ADXLead = 2*ADX + (alpha1 - 2) * ADX[1] + (1 - alpha1) * ADXLead[1];
ADXFinal = alpha2*ADXLead + (1 - alpha2) * ADXFinal[1];
{在图表上标出}
Plot1( DIPlusFinal, "DMI+" ) ;
Plot2( DIMinusFinal, "DMI-" ) ;
Plot3( ADXFinal, "ADX" ) ;
实际上,如果你尝试获取在初始的平滑线ADX文本中强调深刻性,这个平滑线可以分为两步。假设我们有一个次序 P 并且需要停顿。这样,我们需要按照下面的公式执行:
V0 = (8*P0 - 7*P1 + 3*V1) / 4,
位置:
[list][*]P0 为次序的当前值 (价格或指标);[*]P1 为次序的先前值 ;[*]V1 为震荡的先前值;[*]V0 为震荡的当前值。[/list]
或者是不同方法:
V0 = (Vol(P) + 3*V1) / 4,
位置:
Vol(P) = 8*P0 - 7P1 - Ehlers' burst。
第二步,我们获取简单的重量平滑线:
W0 = (1*V0 + 2*W1) / (2 + 1).
位置:
[list][*]W0 为 次序P的当前平滑线值;[*]V0 为次序 P的当前震荡值;[*]W1 为先前平滑值。[/list]在Smoothed ADX中,这个平滑线计算用于标准指标 ADX三次缓冲。这就是获得指标被称作Smoothed ADX的原因。如果是平滑线指标 RSI,我们叫它 Smoothed RSI等等。下图显示的是指标 Smoothed ADX, 的确不像原始指标-标准ADX (Average Directional Movement Index)。
ADX_Smoothed.rar

ADX_Smoothed.rar