- 显示:
- 5935
- 等级:
- 已发布:
- 2008.04.12 05:54
- 已更新:
- 2014.04.21 14:52
-
需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务
指标 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);
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];
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];
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];
ADXFinal = alpha2*ADXLead + (1 - alpha2) * ADXFinal[1];
{在图表上标出}
Plot1( DIPlusFinal, "DMI+" ) ;
Plot2( DIMinusFinal, "DMI-" ) ;
Plot3( ADXFinal, "ADX" ) ;
Plot3( ADXFinal, "ADX" ) ;
实际上,如果你尝试获取在初始的平滑线ADX文本中强调深刻性,这个平滑线可以分为两步。假设我们有一个次序 P 并且需要停顿。这样,我们需要按照下面的公式执行:
V0 = (8*P0 - 7*P1 + 3*V1) / 4,
位置:
- P0 为次序的当前值 (价格或指标);
- P1 为次序的先前值 ;
- V1 为震荡的先前值;
- V0 为震荡的当前值。
或者是不同方法:
V0 = (Vol(P) + 3*V1) / 4,
位置:
Vol(P) = 8*P0 - 7P1 - Ehlers' burst。
第二步,我们获取简单的重量平滑线:
W0 = (1*V0 + 2*W1) / (2 + 1).
位置:
- W0 为 次序P的当前平滑线值;
- V0 为次序 P的当前震荡值;
- W1 为先前平滑值。

由MetaQuotes Ltd译自俄语
原代码: https://www.mql5.com/ru/code/7072