首页 技术指标 帖子

如何使用归一化提升震荡指标的有效性

附件
8572.zip (1.37 KB, 下载 0次)

在交易中,我们常常会思考震荡指标的有效性,而归一化这些指标的值是一个重要的步骤。归一化的目的是将指标的震荡范围调整到[-1, 1]之间,这样可以为我们提供更多的操作可能性。比如,我们可以通过具体的数值(如0.5、0.8等)来控制指标的值,而不是依赖于市场中那些模糊不清的估算值。当然,如果指标已经完成了归一化处理,那就不需要再考虑这个步骤了;如果没有,欢迎使用我的代码,别对我的原始代码太苛刻哦。

参数说明:

string Indicator - 需要传递给icustom()函数的指标名。不幸的是,MQL4的自动化工具无法支持标准指标的添加。不过,谁能阻止一个好奇的程序员去改动程序中的条目呢?
int mode - 初始指标中所需行的编号...
int param1
int param2 - 以及其参数。不幸的是,MQL开发者的想象力似乎只够写出支持可变参数的函数(例如Print),并且支持地址运算(我个人觉得这样做只是为了让普通用户感到自愧不如 :)))。所以我们得手动操作。

示例图片:

备注:

计算分为两个阶段:
1. 在初始化阶段(init()函数,如果有人还不知道的话:),我们会分析整个指标数据数组,以计算出显著周期,即可以提供指标均方值(MSV)的历史周期。
我来解释一下。假设我们有一个震荡器,并且已经计算出其多个连续震荡周期的均方值。我们约定需要3个周期(就像我定义的 #define PERIODS_CHARACTERISTIC 3,我建议不要使用更多,否则处理器会过载)。计算的本质在于确定平均每个周期的柱数(即2*两个零点之间的平均间隔),然后将得到的值乘以3。

2. 接下来,我们需要计算每个柱的均方值(就像方差的平方根),对获得的三个周期进行归一化处理,最后通过压缩函数f(x)=tanh(x)(双曲正切,我自己写的函数 :)))将其调整到动态范围[-1, 1]。

这是一个纯粹的技术示例。图片中的绿色线是我很久以前的震荡器,用于描述市场活动(实际上它与MACD类似,但基于成交量)。蓝色线是同样的震荡器,但已经经过-=归一化器=-处理。可以清楚地看到+-0.75、+-0.5、+-0.25这些水平,所有的极值和零点交叉点的位置都保持不变,增加和减少的区域也一目了然。

好了,就这些了…如果有人不喜欢,那可不是我的错哦!

相关帖子

评论 (0)