请观看如何免费下载自动交易
请在Telegram上找到我们!
加入我们粉丝页
有趣的脚本?
因此发布一个链接 -
让其他人评价
喜欢这个脚本? 在MetaTrader 5客户端尝试它
显示:
22
等级:
(2)
已发布:
\MQL5\Include\SAX\
SAXAnalogs.mqh (21.01 KB) 预览
SAXAnalog.mq5 (13.41 KB) 预览
MQL5自由职业者 需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务

概述

我们开发的几乎所有图表分析工具都局限于数字世界。而这一工具则突破了这一局限。 由杰西卡·林(Jessica Lin)、埃蒙·基奥(Eamonn Keogh)及其同事于2003年提出的“符号聚合近似法”(SAX),会将一段价格数据转换成一串简短的字母,例如bddcbbba。 一旦市场数据被转化为字符串,便可对其进行计算机科学领域已掌握的所有文本处理操作:比对、计数、哈希计算、搜索等。

本文将这一方法应用于一个实际问题:市场当前呈现这种走势;历史上何时出现过类似走势,以及随后发生了什么? 该指标将当前市场窗口进行编码,扫描历史数据以寻找形状相似的窗口,读取每个匹配结果的已知未来走势,并将得出的结果分布以预测扇形图的形式绘制在图表上,同时配以显示其背后统计数据的评估面板。

该转换过程本身包含三个步骤,每个步骤都有其存在的理由:

  • 对窗口进行Z归一化,从而保留其纯粹的形态特征。若欧元兑美元和黄金以相同方式上涨,它们将映射到同一条归一化曲线上。
  • 分段聚合逼近:将归一化窗口切分为w个 等长段,并将每个段替换为该段的平均值。一个包含48根K线的窗口,当w=8时,将转化为8个数值,这种维度缩减在处理过程中能平滑噪声。
  • 离散化:利用将标准正态分布划分为等概率区间的断点,将每个区段的平均值映射为一个字母,因此每个字母的出现概率在先验上都是相等的。

价格窗口上SAX变换的三个步骤

SAX 处理流程:对窗口进行 z 归一化,将其求平均值划分为单元格,然后使用高斯分界点将每个单元格映射为一个字母。

使 SAX 搜索不仅快速而且准确的关键在于MINDIST——这是两个单词之间的距离,经证明可为 z 归一化序列之间的真实欧几里得距离提供下界。由于它永远只能低估真实距离,因此可用于剔除候选项,且不会有遗漏真实匹配的风险。 这正是此处采用两阶段搜索的依据:先利用低成本的词距离进行筛选,再根据真实的欧几里得距离对剩余候选项进行排序。已发布的验证框架证实,该流程在省去大量工作量的同时,返回的匹配结果与暴力搜索完全一致。

使用前请注意: 使 SAX 显得优雅的 z 归一化步骤会刻意忽略价格水平和波动率,而在交易中,这些往往正是您最关心的因素。该工具通过将每项结果以当时主导的波动率为单位进行衡量,尽可能地进行了补偿,但这一局限性确实存在,且无法通过调整消除。 预计“无优势”这一结论出现的频率将高于其他任何结论。在接近随机游走的市场中,这才是正确答案,而非功能故障。


指标绘制的内容

两个对象,均在新的K线收盘时重建。

扇形锥体将 历史数据的未来分布从最后一个收盘K线投影至未来。实线描绘每个步骤的未来价格中位数,上方和下方的虚线分别描绘第25百分位数和第75百分位数,因此随着历史数据间的一致性减弱,锥体逐渐变宽。 每一步的分布以ATR单位表示,并乘以当前ATR后投影到实际价格轴上,这使得来自平稳和剧烈行情时期的历史数据都能贡献到同一个扇形锥中。只有当判断结果为看涨或看跌时才会绘制该扇形锥,因此扇形锥的缺失本身就是一种信息,而非渲染失败。

判定面板 会显示锥体所隐藏的数值:


其含义

当前窗口的SAX编码,即搜索实际执行的查询。
analogs
找到的先例数量及其平均匹配距离。数量庞大但平均距离较差的情况,其匹配强度弱于数量较少但匹配距离较近的情况。
fwd H
在时间水平线上的正向移动中位数,以ATR倍数和百分比表示。
band
这些前瞻性移动的第25至75百分位数范围:即锥体的宽度(数值表示)。
上涨率
出现任何上涨的先例所占比例及其分布范围。若中位数在51%的上涨率下略微偏高,这仅是某个先例的偶然,而非趋势倾向。
结论
看涨、看跌、无优势、类比案例过少或无数据。

该判定刻意设计为难以获得。 首先判定“可比案例过少”,其次是“五五开”情况,只有同时满足两个 确信度区间的样本才会获得方向:中位数变动幅度必须以ATR为单位超过优势阈值, 上涨率必须脱离0.5附近的区间。若任一条件未满足,无论中位数结果如何,结论均为“无优势”。

欧元兑美元M30图表上的SAX模拟预测模型:扇形锥与判断面板

欧元兑美元(M30)的预测模型:扇形锥体投影出类比样本的中位数及四分位数区间,其后方的判定面板显示了对应的样本数据。


关键特征

设计上的严谨性

  • 无前瞻性。 匹配结果的窗口必须在查询窗口开始之前严格结束,因此查询本身未来的信息绝不会渗入其先例集。这是区分类比搜索与曲线拟合的唯一保障。
  • ATR标准化结果。 价格变动以比赛时生效的ATR倍数表示,因此来自行情平稳时段的先例与来自剧烈波动时段的先例处于可比地位。这是对z标准化所舍弃内容的补偿。
  • 允许给出“否”的判定。 当样本量过小,或两项指标的倾向性均不明确时,该工具将暂不给出预测,并隐藏预测锥体。

真正的 SAX 库,而非其近似实现

  • Z-标准化、PAA(包括窗口长度无法被词长整除的分数情况)、基于Acklam probit的高斯分界点、编码,以及一个可证明能对真实距离给出下界的MINDIST。此前该平台上均未提供这些功能。
  • 支持字母表大小为2至10的情况,断点在配置时构建一次并缓存。
  • 平滑窗口会被报告为平滑,而非被静默编码:当标准差接近零时,不存在需要归一化的形状,而人为构造形状将产生毫无意义的单词。
  • 一种暴力欧几里得度量作为开关随生产管道一同发布,因此可以将其修剪结果与应复现的答案进行比对,而非仅凭信任。

在实时图表上切实可行

  • 搜索每关闭一根K线执行一次(而非按 tick 执行),并从第1根K线开始读取历史数据,因此正在形成的K线永远不会进入查询集或先例集。
  • 面板框的大小根据实际渲染的文本确定,因此无论字体大小或内容如何,都不会出现内容被截断的情况;同时提供了浅色和深色主题,以便在任何图表背景上都能清晰显示。
  • 每个图表对象都带有统一的前缀,并在deinit时被移除,不会留下任何孤立对象。


推荐设置

设置
推荐值
备注
符号
任何流动性较高的交易品种
从设计上讲,形状匹配是无尺度的。开发过程及截图均以欧元兑美元(EURUSD)为例。
时间周期
M30 至 H4
需要足够的历史数据,以便所建立的先例具有实际意义。窗口、时间范围和历史数据扫描均以K线为单位进行测量,因此它们在不同时间周期之间保持不变。
历史数据
6000根K线
默认扫描深度。历史数据越多,先例越多,分布越稳定,但搜索时间会呈线性增加。
面板主题
匹配您的图表
默认采用深色主题。在白色图表上请切换为浅色主题,否则正文文字将难以辨认。


文件结构

一个指标和两个标题。标题以<SAX\...> 形式包含,因此必须位于独立的SAX 子文件夹中。

文件
角色
描述
Include\SAX\SAXTransform.mqh
该转换
Z 归一化、PAA、高斯分界点、字编码以及下限 MINDIST。可在任何序列上重复使用,不依赖于图表或交易。
Include\SAX\SAXAnalogs.mqh
搜索
两阶段“先筛选后排序”匹配、无前瞻性保护机制、ATR归一化结果、锥形模型背后的每步分布,以及判定分类。
Indicators\SAX\SAXAnalog.mq5
指标
针对每根新K线运行搜索,并绘制预测扇形锥和判定面板。不将任何内容绘制到缓冲区中;所有内容均为图表对象。


输入参数

输入
默认值
控制内容
InpWinLen
48 根K线
查询窗口长度:一个小节要被视为先例,其近期形态必须与多少小节相匹配。
InpHorizon
12 根K线
预测时限:在每个先例已知的未来中,结果的测量范围以及锥形区域的延伸范围。
InpWordLen, InpAlphabet
8, 4
SAX的分辨率。单词越长、字母表越大,区分能力越精细,因此匹配频率越低;单词越短、字母表越粗略,则能收集到更多相似度较低的先例。
InpMaxAnalogs, InpMinAnalogs
50, 10
保留多少个最接近的先例,以及当样本数低于该阈值时,无论这些样本如何显示,判定结果都将被强制设为“太少”。
InpEdgeATR
0.25
确信阈值:向前移动的中位数必须超过 ATR 的四分之一,才算作倾向。
InpMetric
MINDIST
两阶段“先修剪后排序”处理流程,这是生产环境中的设置。若需对每个候选方案进行穷举搜索,请切换至 Euclid:排序规则相同,不进行修剪,可用作正确性和速度的基准。
InpATRPeriod
14
用于对结果进行标准化并将锥体映射到价格轴上的ATR。
InpMaxHistory
6000根K线
向后回溯多远以查找先例。
颜色、边角、主题
蓝色/红色/灰色,左上角,深色
根据裁决结果、条带线颜色、面板的锚点角以及浅色或深色主题,设置锥形图和面板的强调色。


研究依据

该实现遵循了杰西卡·林(Jessica Lin)、埃蒙·基奥(Eamonn Keogh)及其同事的原始 SAX 研究成果,其SAX 页面 汇集了相关论文。

SAX 并非预测价格的“水晶球”,且该工具报告“无优势”的情况往往比报告其他结果更为常见。其价值在于那些罕见且有充分依据的场合——即许多真实的先例都指向同一方向——以及该工具拒绝伪装成其他情况的严谨性。 该库还为进一步研究提供了可能性:将SAX词汇作为机器学习模型的分类特征、用于异常检测的模式与不一致性发现,或基于词典的马尔可夫转移模型。

一篇配套文章推导了该变换及其下界,详细阐述了搜索过程及其条件判断,并展示了通过验证测试的流程:《MQL5 中的符号聚合近似(SAX):历史类比搜索与预测》

由MetaQuotes Ltd译自英文
原代码: https://www.mql5.com/en/code/75543

Trade Journal and Performance Analytics Dashboard Trade Journal and Performance Analytics Dashboard

一个轻量级的图表内仪表盘,可读取您的已平仓交易记录,并显示胜率、盈利因子、连胜记录和权益曲线——无需输入策略参数,仅基于您自身的交易数据,并自动刷新。

SHK Heikin Ashi MACD Signal Arrows SHK Heikin Ashi MACD Signal Arrows

一款 MetaTrader 5 图表指标,可绘制 Heikin Ashi 蜡烛图、显示经确认的买入和卖出箭头、支持可选的 MACD 柱状图背离过滤功能,并提供可配置的警报。

Global Macro Soros Global Macro Soros

全球宏观索罗斯。 一款受乔治·索罗斯宏观交易风格启发的、基于多时间框架趋势一致性的指标。

Trade Manager Panel Simple Interactive Chart Trading Tool with Risk Management for MT5 Trade Manager Panel Simple Interactive Chart Trading Tool with Risk Management for MT5

一个简单的 MQL5 交易管理面板,支持拖放绘制图表线、基于风险百分比的动态手数设定、ATR/点数止损模式,以及实时浮动盈亏监控。