mcpField
M
mql5-indicator-patterns

mql5-indicator-patterns

github.com/terrylica开发2505 次安装今天更新
代码仓库

关于 mql5-indicator-patterns

mql5-indicator-patterns 是用于在 MetaTrader 5 中创建和调试 MQL5 自定义指标的技能,重点介绍显示设置、缓冲区管理与重算模式,帮助排查常见绘图问题。

主要功能

  1. 01为小数值设置显示范围
  2. 02配置可见与隐藏缓冲区
  3. 03检测新柱并跟踪重算
  4. 04计算预热区间与绘图对齐
  5. 05排查指标显示和更新问题

适用场景

  1. 01创建自定义 MQL5 指标
  2. 02修复指标图表空白或错位
  3. 03避免滚动窗口重算时发生漂移

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/terrylica/cc-skills --skill mql5-indicator-patterns

安装后在 Claude Code 中输入/mql5-indicator-patterns确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
buffer-patterns.md
complete-template.md
debugging.md
display-scale.md
evolution-log.md
recalculation.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. 为较小的值(范围 < 1.0)设置明确的比例
  2. 使用隐藏缓冲区跟踪重新计算
  3. 新柱检测可防止滚动窗口漂移
  4. 使用静态变量高效维护状态
  5. 正确计算预热值以防止未对齐
  6. 使用正向索引提高代码清晰度

这些模式可解决实际 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 开始重新计算

参考文档

详细信息请参阅:

执行后反思

此技能执行完成后,在结束前检查:

  1. 命令是否成功? — 如果没有,请修复导致失败的说明或错误表。
  2. 参数或输出是否发生变化? — 如果底层工具的接口发生偏移,请更新用法示例和参数表,使其保持一致。
  3. 是否需要变通方法? — 如果必须临时调整(使用不同标志、增加额外步骤),请更新此 SKILL.md,避免下次调用时重复采用相同的变通方法。

仅在问题真实且可复现时更新,不要基于猜测更新。

评论

支持 Markdown