 
等级: 超级版主
- 注册:
- 2021-5-18
- 曾用名:
|
INPUT:m(14); // 定义周期参数 m,通常ADX使用14周期
// 计算真实波幅(True Range,TR)及其相关指标
TR1 := SUM(MAX(MAX(HIGH - LOW, ABS(HIGH - REF(CLOSE, 1))), ABS(LOW - REF(CLOSE, 1))), m); // 计算m周期真实波幅总和
// 计算正向动量(+DM)和负向动量(-DM)
HD := HIGH - REF(HIGH, 1); // 当日最高价与前一天最高价之差
LD := REF(LOW, 1) - LOW; // 前一天最低价与当日最低价之差
PDM := SUM(IF(HD > 0 AND HD > LD, HD, 0), m); // 计算m周期正向动量(+DM)
MDM := SUM(IF(LD > 0 AND LD > HD, LD, 0), m); // 计算m周期负向动量(-DM)
// 计算方向指标(DI)
PDI := PDM * 100 / TR1; // 正向动向指数(+DI)
MDI := MDM * 100 / TR1; // 负向动向指数(-DI)
// 计算动向指数(DX)和平均趋向指数(ADX)
DX := ABS(PDI - MDI) / (PDI + MDI) * 100; // 动向指数
ADX : MA(DX, m); // 平均趋向指数
TR1 : MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR : MA(TR1,14);
if adx>20 and atr>1 then
begin
程序A
END
if not(adx>20 and atr>1) then
begin
程序B
END |
|