感谢您提出这个话题。
请就文章中引述的两部分有些矛盾的信息发表评论:
"
要将熵方程应用于连续变量,我们必须将指标值离散化。具体做法是将数值范围 划分为大小相等的区间,然后计算每个区间内的数值个数。使用这种方法,原来列举所有指标值最大范围的集合就会被子集取代,每个子集代表选定的区间。
...
区间 - 要采样的区间数。TTMTS 的作者为几千个样本指定了 20 个区间,2 是硬性规定的最小值。我在此基础上加入了自己的方法,即根据样本大小改变间隔数,具体为每 1000 个样本 51 个间隔。如果用户输入的数值小于 2,就可以使用该选项。 因此,将区间数设置为小于 2 的任何数值,使用的区间数都会根据分析的条数而变化。
"
问题:这是一回事吗?如果是,为什么指标值范围的分隔符数量取决于条数?这里的逻辑是什么?到目前为止,我认为这只对有累积部分的指标有用。
如果不是,那么区间分隔线的数量等于多少?
这篇文章缺少一个表格,无法清楚地显示转换指标值的好处。
你好,弗朗西斯
请详细说明如何测试 EntrophyAnalysis 的自定义指标。
我试图使用如下指标:
input ENUM_TIMEFRAMES Timeframe=PERIOD_H1;
输入 ENUM_INDICATOR IndicatorType=IND_CUSTOM;
input string CustomIndicatorName="Indicators\\NKGold\\Regression\\iNonLinRegress.ex5";
input bool UseDefaults=true;
input string IndicatorParameterTypes="int,CENUM_APPLIED_PRICE";
输入字符串 IndicatorParameterValues="34,priceHA_WEIGHTED";
出现如下错误
2025.03.26 19:53:11.282 EntropyIndicatorAnalysis (XAUUSD,H1) 自定义指标'Indicators\NKGold\Regression\iNonLinRegress.ex5' 无法加载 [4802]
2025.03.26 19:53:11.282 EntropyIndicatorAnalysis (XAUUSD,H1) 指标句柄无效,错误代码:4802
为什么有这么多字母?作者是否找到了一个有效的指标?换句话说,他是否找到了赚钱的东西?问题很简单:是否有一种赚钱的工具,而且获利的概率很高?还是所有工具都一样,就像轮盘赌一样:要么有效,要么无效。
这篇文章并没有声称自己发现了一定能印出钞票的圣杯。它的目的更务虚:展示如何衡量一个指标给学习模型带来的丰富信息。
-
高熵分仅意味着变量是非琐碎的(它的变化足以让算法学习)。它并不能保证方向、时机或成功的资金管理。
-
如果市场在所选范围内已经有效,如果交易成本吸收了信号,或者如果模型设计不当,那么即使是信息量很大的指标也可能被证明是非预测性的。
-
在实践中,需要叠加多个基石:选择熵值高的指标、严格的样本外测试、风险管理、稳健执行和实时监控。只有将所有这些步骤结合起来,我们才有希望获得微小的优势,而这必须随着市场的变化不断重新检查。
-
作者提供了一个学术诊断工具。它并不保证成功。每个人都可以自由地使用它来完善自己的特征,或者相反,意识到自己喜欢的指标没有任何新意。
简而言之,熵是温度计,不是灵丹妙药。它能帮助你快速发现死变量或开发不足的变量。它不能替代战略或风险控制。
...
区间 - 要采样的区间数。TTMTS 的作者为几千人的样本指定了 20 个区间,2 个是绝对最小值。我在此基础上添加了自己的方法,即根据样本大小改变间隔数,具体来说,1000 个样本的间隔数为 51。如果用户输入的数值小于 2,就可以使用该选项。因此,将区间值设置为小于 2 时,所使用的区间数将随分析的条数而变化。
"
问题:这是一回事吗?如果是,为什么指标值范围中的分隔符数量取决于条形图的数量?这背后的逻辑是什么?到目前为止,我只能假定这对有累加成分的指标有用。
如果不是这样,那么范围中的除数对应的是什么?
这篇文章缺少一个表格来清楚地显示转换指标值的好处。
要估算连续变量 的熵,我们要将其取值范围划分为相等的区间,并计算每个区间内的观测值。脚本允许您选择区间 数。如果输入 <2(或保留默认值),脚本会触发自己的启发式:每 1,000 个观测值中有 51 个区间,即与样本大小成比例的数量。如果输入的值大于 2,脚本就会原封不动地使用它,因此这并不是两种相互竞争的方法。一种方法描述了概念,另一种方法解释了代码如何 在您没有设置参数 的情况下选择参数。
如果区间太少,就会人为地将数值粘合在一起。熵会被低估(偏差)。如果小样本的区间数过多,就会出现很多空仓或只有一个观测值的仓。熵的噪声很大(方差)。 直方图有几种自动规则:斯特吉斯规则、平方根规则、弗里德曼-迪亚科尼斯规则、斯科特规则等。)它们都有一个相同的理念:在数据较多时提高分辨率,因为这样就可以估算出更精细的概率,而不会导致方差增大。
对于 1,000 个条形图,如果分布是均匀的,51 个区间 => 每个分区 20 个点。这一比例(15 至 30 个观测点/类)是作者从文献中提取的典型折衷方案。这与指标是否具有累积性无关。其逻辑纯粹是统计学上的。网格的精细程度与可用信息量相适应。
-
指标的精细分布越明显、
-
熵计算能捕捉到的细节(波峰和波谷)越多、
-
但要使这些频率保持稳定,则需要更多的数据。
的确,如果能显示同一指标在变换前后的熵值,文章会更有价值。 不过,演示很容易自己完成。只需在脚本中勾选 ApplyTransform=true,然后阅读双重输出:之前/之后。代码特意留出了这部分的交互性,以便每个人都能测试自己的资产和视野。
如果我理解正确的话,使用直方图对样本中的指标得分进行可视化与作者的数据转换方法无关。我的理解对吗?
我更感兴趣的是这些转换的连锁反应问题。对于神经网络,我可以这么认为,但对于树状方法,我就不这么认为了。
脚本绘制的直方图只是一种可视化诊断工具。它显示了指标值在变换前后在样本中的分布情况。函数 sqrt、log、tanh 等对数据起作用。直方图只是显示结果。因此,这两个阶段是独立的。首先,对序列进行变换(或不进行变换),然后绘制直方图,查看熵是否发生了变化。
对于已经变得相当单调的指标,变换(对数、平方)通常不会改变分数。另一方面,非单调变换(饱和的 tanh)会改变某些点的顺序。这意味着,某些变换能更好地为创建非线性互动奠定基础。
脚本绘制的直方图只是一种可视化诊断工具。它显示了指标值在变换前后在样本中的分布情况。函数 sqrt、log、tanh 等都会影响数据。直方图只是显示结果。因此,这两个步骤是独立的。首先,对序列进行转换(或不转换),然后绘制直方图,查看熵是否发生变化。
好了,我现在明白了。我原来想的是别的。
对已经变得相当单调的指数(对数、平方)进行变换通常不会改变结果。另一方面,非单调变换(tanh、饱和)会改变某些点的顺序。这意味着某些变换能更好地为产生非线性相互作用奠定基础。
这如何改变点的顺序?您能举例说明吗?到目前为止,我对这句话的理解是,原来有 ABC 个特征值按升序排列的点,变换后,按升序排列的点变成了 BAC。
好吧,我现在明白了。我原来想的是别的。
它是如何改变点的顺序的?能举例说明吗?到目前为止,我的理解是有 ABC 点,其特征值按升序排列,变换后,升序变成了 BAC。
脚本中的函数(root、log、tanh 等)都是单调递增的。它们都保留了点的顺序。我前面的句子有歧义。只有在使用非单调变换时,顺序才会从 ABC 变为 BAC。例如,除非我弄错了,否则函数 f(x)=∣x-50∣ 不是单调的,因为它围绕 x= 50 折叠了轴。因此,阶变为 BAC。这篇文章的作者在引言中指出,我们可以参考蒂莫西-马斯特斯(Timothy Masters)所著的《测试和调整市场交易系统(TTMTS)》一书。就我而言,我打算买下这本书,因为和你一样,我仍有一些疑问。此外,我对学习模型或神经网络不是很熟悉。显然,这本书很容易在在线销售网站上找到。它的内容应该会对我们有很大帮助,因为这篇文章无论多么有趣,无疑都是不完整的,而且/或者无论如何都是相当合成的。
新文章 衡量指标信息已发布:
机器学习已成为策略制定的流行方法。 虽然人们更强调最大化盈利能力和预测准确性,但处理用于构建预测模型的数据的重要性,仍未受到太多关注。 在本文中,我们研究依据熵的概念来评估预测模型构建的指标的适配性,如 Timothy Masters 的《测试和优调市场交易系统》一书中所述。
作为一个示例,我们检查上面分析的两个指标的一些统计属性。
威廉姆斯百分比范围的分布几乎揭示了所有数值如何分布在整个范围内,除了多模态之外,分布相当均匀。 这样的分布是理想的,反映在熵值中。
这与市场促进指数的长尾分布形成鲜明对比。 这样的指标对于大多数学习算法来说都是有问题的,需要转换值。 转换这些值应该会导致指标相对熵的改善。
作者:Francis Dube