MACD直方图指定回溯周期正向值平均值计算异常求助
问题原因
你的代码存在3个核心逻辑错误,直接导致计数器和平均值计算结果异常:
- 持久化变量未重置:用
var关键字声明的avgGreenCounter、avgHistogramGreen属于全局持久化变量,整个脚本运行周期内只会初始化1次,每次K线刷新、每次函数调用都不会重置初始值,计数器会从脚本启动开始累计所有历史周期的正值,自然数值远高于你预期的单周期回溯统计结果。 - 平均值计算逻辑错误:你写的
(avgHistogramGreen + hist[i]) / 2是逐次对两个值取平均,不是指定回溯期内所有正值的算术平均,计算结果完全不符合需求。 - 循环范围偏差:
for i = 0 to _lookback by 1会遍历共_lookback+1根K线(包含当前未闭合K线),如果你的需求是回溯过去X根已闭合K线,范围设置不符合预期。
修正后的代码
f_getAvgHistoGreen(_lookback) => sumGreen = 0.0 avgGreenCounter = 0 // 如果不需要包含当前未闭合K线,把i的起始值改为1即可 for i = 0 to _lookback if hist[i] >= 0 avgGreenCounter += 1 sumGreen += hist[i] // 避免没有正值时的除零错误 avgHistogramGreen = avgGreenCounter > 0 ? sumGreen / avgGreenCounter : na [avgGreenCounter, avgHistogramGreen]
调用方式和之前保持一致即可
[avgGreenCounter, avgHistogramGreen] = f_getAvgHistoGreen(50)
内容的提问来源于stack exchange,提问作者sesto1
相关产品推荐
相关产品推荐

