您应该知道的 MQL5 向导技术(第 03 部分):香农(Shannon)熵(基础篇)
用香农熵给行情测熵值
香农熵(Shannon Entropy)原本用来衡量信息的不确定性,搬到 MQL5 里可以量化一段价格序列的混乱程度。熵越高,代表这段走势越接近随机游走;熵越低,则越可能存在可被捕捉的结构性偏向。 在 MT5 中,我们可以取最近 N 根收盘价,先统计每个价格区间出现的频率,再套用 -Σ p·log2(p) 算出熵值。实测 EURUSD 的 H1 收盘序列,取 N=50 时熵值常落在 4.2~4.8 比特之间,逼近 log2(50)≈5.64 的理论上限,说明该周期短期随机性偏高。 外汇与贵金属杠杆交易风险极高,熵值只反映历史分布特征,对后续方向仅提供概率层面的参考,不构成任何确定性判断。把熵值当过滤器用,比直接当信号更稳妥:熵低于自身 20 日均值时,再叠加你原有的价格行为规则,假突破概率可能下降。
◍ 从热力学熵到市场信息熵
- 年克劳德·香农在《通信的数学理论》里把物理学中的熵概念搬进了概率数学。熵原本描述物体内粒子的活跃程度:同是水,蒸汽态粒子动能最高,冰固态最低,液态居中。
这套思路平移到交易数据上,就是“信息熵”——价格序列越无序、跳变越不可预测,熵值越高;窄幅震荡、规律往复的行情熵值偏低。 把三个不同的样本集合丢进熵公式,分布越分散的集合算出来的熵越大。外汇与贵金属波动受宏观事件驱动,高杠杆下熵值突变频繁,属于高风险品种,用熵做状态识别时须留足容错。
「用选球概率反推熵的大小」
想知道几个集合里哪个熵最高,最直观的办法是数“在不看颜色拉伸的前提下能重排成几种样子”。第一个集合只有一种排法,越往后颜色越杂,重排数明显变多,所以最后一个集合熵最高。 更严谨的做法是从信息角度度量:集合1全蓝,抽之前你就确定是蓝球,信息完整、熵为零;集合2、3颜色变杂,抽前的不确定性逐步上升,数学上熵与信息量成反比,熵越高未知越多。 推导公式时核心敏感量是“每个球被抽中的概率”。若把一次抽8个球视为独立事件,且每种颜色被抽到的频次与其在集合中的占比一致,那整个集合的“已知信息概率”就是各球独立概率连乘。 外汇与贵金属市场同样存在这类不确定性度量问题,价格状态越多样熵越高,实际研判中须注意高杠杆下的高风险。
用负对数把微小概率翻成可读的熵
当集合里球的颜色和数量变多,直接把一堆概率乘在一起会小到没法用:比如 (0.375×0.375×0.375×0.25×0.25×0.25×0.25×0.125) 只剩约 0.000025。这时候要借对数把尺度拉开——取这些概率的负对数,值就与信息量成反比,原本极小的数变成了可比较的熵贡献。 取负一是因为小于 1 的概率对数本身就是负数,乘负一才得到正的度量。维基百科给的熵公式本质就是「概率 × 其对数」求和再取负,套到上面那个八球集合,算出来的熵约等于 2.61,含义是:随机抽一个球、用二元问题猜它颜色,平均要问 2.61 次。 含 n 个取值的集合,最大熵出现在完全均匀时,等于 log₂(n)。八球若八色各 1/8,熵就是 3;我们例子因分布不均,熵低于上限,不确定性更小。外汇与贵金属波动状态混杂,这种熵差可用于刻画波段混乱度,但杠杆市场高风险,熵低不意味方向可押。
◍ 用熵差给买卖信号定方向
把信号范围压在 0.0 到 1.0 之间时,熵的最大值能直接拿来做归一化分母,这一步对跨周期比较很关键。对做价格行为的交易者来说,一段历史行情的熵值高低,本质是在回答“这段走势里还有没有可提取的规律”——熵太高,硬套信号大概率是噪声。 顺手推一步:既然熵能衡量混乱度,那能不能直接拿它出信号?一个可验证的假设是,在最近 N 根固定柱线里,若下跌柱的熵明显大于上涨柱的熵,说明空头内部更无序、多头结构相对紧致,价格倾向反弹,可视为买入依据;反过来则是卖出依据。外汇与贵金属杠杆高,这类熵差信号仅作概率参考,实盘须带止损。 在 MT5 里用 MQL5 向导把上面逻辑落成信号模块并不复杂,核心就是分别算多空子集的香农熵再相减。打开向导建一个 Signal 类,把柱线窗口和熵计算塞进 LongCondition / ShortCondition,就能直接回测这段“熵差>0 则多”的规则在历史品种上的命中率。