关于 mql5-indicator-patterns
mql5-indicator-patterns 是用于在 MetaTrader 5 中创建和调试 MQL5 自定义指标的技能,重点介绍显示设置、缓冲区管理与重算模式,帮助排查常见绘图问题。
主要功能
- 01为小数值设置显示范围
- 02配置可见与隐藏缓冲区
- 03检测新柱并跟踪重算
- 04计算预热区间与绘图对齐
- 05排查指标显示和更新问题
适用场景
- 01创建自定义 MQL5 指标
- 02修复指标图表空白或错位
- 03避免滚动窗口重算时发生漂移
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ terrylica/ cc-skills --skill mql5-indicator-patterns安装后在 Claude Code 中输入/mql5-indicator-patterns确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/buffer-patterns.mdcomplete-template.mddebugging.mddisplay-scale.mdevolution-log.mdrecalculation.md详细介绍
MQL5 可视化指标模式
经过实战验证的模式,可用于创建自定义 MQL5 指标,确保正确显示、缓冲区管理和实时更新。
自我演进技能:此技能会在使用过程中持续改进。如果说明有误、参数发生偏差,或需要采用变通方法,请立即修复此文件,不要拖延。仅在问题真实且可复现时才更新。
何时使用此技能
在以下情况下使用此技能:
- 为 MetaTrader 5 创建自定义 MQL5 指标
- 调试指标显示或缓冲区问题
- 设置 OnCalculate 并正确处理预热
- 实现新柱检测模式
快速参考
基本模式
显示比例(适用于小于 1.0 的值):
IndicatorSetDouble(INDICATOR_MINIMUM, 0.0);
IndicatorSetDouble(INDICATOR_MAXIMUM, 0.1);
缓冲区设置(可见 + 隐藏):
SetIndexBuffer(0, BufVisible, INDICATOR_DATA); // Visible
SetIndexBuffer(1, BufHidden, INDICATOR_CALCULATIONS); // Hidden
新柱检测(防止漂移):
static int last_processed_bar = -1;
bool is_new_bar = (i > last_processed_bar);
预热计算:
int StartCalcPosition = underlying_warmup + own_warmup;
PlotIndexSetInteger(0, PLOT_DRAW_BEGIN, StartCalcPosition);
常见问题
显示空白:设置明确的比例(参见“显示比例”参考)
滚动窗口漂移:使用带隐藏缓冲区的新柱检测(参见“重新计算”参考)
绘图未对齐:正确计算 PLOT_DRAW_BEGIN(参见“完整模板”参考)
正向索引数组:始终设置 ArraySetAsSeries(buffer, false)
关键模式
用于生产环境中的 MQL5 指标:
- 为较小的值(范围 < 1.0)设置明确的比例
- 使用隐藏缓冲区跟踪重新计算
- 新柱检测可防止滚动窗口漂移
- 使用静态变量高效维护状态
- 正确计算预热值以防止未对齐
- 使用正向索引提高代码清晰度
这些模式可解决实际 MT5 开发中最常见的指标开发问题。
故障排除
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 指标窗口空白 | 未为较小的值设置比例 | 明确设置 INDICATOR_MINIMUM/MAXIMUM |
| 数值随时间漂移 | 未重置滚动窗口 | 使用带隐藏缓冲区的新柱检测 |
| 绘图起始位置未对齐 | PLOT_DRAW_BEGIN 错误 | 计算:underlying_warmup + own_warmup |
| 数组索引反转 | 已启用序列模式 | 调用 ArraySetAsSeries(buffer, false) |
| 缓冲区数值不正确 | INDICATOR_DATA 类型错误 | 对隐藏缓冲区使用 INDICATOR_CALCULATIONS |
| 缓冲区编译错误 | 缓冲区数量不匹配 | 使 #property indicator_buffers 与 SetIndexBuffer 匹配 |
| 指标未更新 | OnCalculate 返回值错误 | 返回 rates_total 以表示计算成功 |
| 性能问题 | 重新计算所有柱 | 仅从 prev_calculated 开始重新计算 |
参考文档
详细信息请参阅:
执行后反思
此技能执行完成后,在结束前检查:
- 命令是否成功? — 如果没有,请修复导致失败的说明或错误表。
- 参数或输出是否发生变化? — 如果底层工具的接口发生偏移,请更新用法示例和参数表,使其保持一致。
- 是否需要变通方法? — 如果必须临时调整(使用不同标志、增加额外步骤),请更新此 SKILL.md,避免下次调用时重复采用相同的变通方法。
仅在问题真实且可复现时更新,不要基于猜测更新。
评论
支持 Markdown