ADX输出为0
量化新人,已自建ADX用户函数,但写入程序输出为“0”如图,请教如何在开仓条件里让此指标生效?附相关部分代码Params Numeric UseADX(1); //ADX 1启用,0不启用 Numeric ADXPeriod(14); // ADX 周期 Numeric ADXLimit(25); // ADX 阈值Vars Series<Numeric> ADXValue; //ADX指标值Events OnBar(ArrayRef<Integer> indexs) { ADXValue = ADX(14); Bool BuyAllowed = High > MA_Close && (UseADX == 1 and ADXValue > ADXLimit); Bool SellAllowed = Low < MA_Close && (UseADX == 1 and ADXValue > ADXLimit); Commentary("ADXValue:"+Text(ADXValue)); Commentary("ADX:"+Text(ADX));
每一个k线上都是0吗? https://video.tbquant.net/video?id=video464 看视频输出诊断一下
回复:是的,每个K线都是0。 下面是自建ADX用户函数代码,编译也通过了,应该不会出现分母为零的情况,不明白..//------------------------------------------------------------------------// 简称: ADX// 名称: 平均动向指数// 类别: 用户函数// 类型: 用户函数// 输出: 数值型//------------------------------------------------------------------------Params Numeric Length(14); // 计算TR周期 Numeric Length1(6); // 计算ADX周期Vars Series<Numeric> TR; // 真实波幅 Series<Numeric> HD; // 最高价变化 Series<Numeric> LD; // 最低价变化 Series<Numeric> DMP; // 上升动向 Series<Numeric> DMM; // 下降动向 Series<Numeric> PDI; // 上升方向指标 Series<Numeric> MDI; // 下降方向指标 Series<Numeric> ADX; // 平均动向指数 Series<Numeric> ADXR; // 平均动向指数评估 Series<Numeric> Deviation; // 偏离率Begin // 计算真实波幅 TR = Summation(Max(Max(High - Low, Abs(High - Close[1])), Abs(Low - Close[1])), Length); // 计算最高价和最低价变化 HD = High - High[1]; LD = Low[1] - Low; // 计算上升动向和下降动向 DMP = Summation(IIF(HD > 0 And HD > LD, HD, 0), Length); DMM = Summation(IIf(LD > 0 And LD > HD, LD, 0), Length); // 计算上升方向指标和下降方向指标 PDI = DMP * 100 / TR; MDI = DMM * 100 / TR; // 计算ADX ADX = Average(Abs(MDI - PDI) / (MDI + PDI) * 100, Length1); // 计算ADXR ADXR = (ADX + ADX[length1]) / 2; // 计算偏离率 Deviation = ADX - ADXR; // 输出结果 Commentary("TR: " + Text(TR) + "\n" + "HD: " + Text(HD) + "\n" + "LD: " + Text(LD) + "\n" + "DMP: " + Text(DMP) + "\n" + "DMM: " + Text(DMM) + "\n" + "PDI: " + Text(PDI) + "\n" + "MDI: " + Text(MDI) + "\n" + "ADX: " + Text(ADX) + "\n" + "ADXR: " + Text(ADXR) + "\n" + "Deviation: " + Text(Deviation)); Return 0;End