mcpField
M
mql-developer

mql-developer

github.com/thomaspraun开发55437 次安装37 周前更新
代码仓库

关于 mql-developer

mql-developer 是面向 MetaTrader 平台 MQL4 和 MQL5 项目的参考与开发指南,适合开发 Expert Advisor、指标及交易功能的开发者。它按主题提供语言、架构、交易操作、外部通信和测试资料,并提示常见问题。

主要功能

  1. 01查阅 MQL4 与 MQL5 参考资料
  2. 02选择 EA 架构与设计模式
  3. 03指导订单、持仓和风险管理
  4. 04涵盖指标与图表界面
  5. 05说明 API 通信与回测

适用场景

  1. 01规划 Expert Advisor 项目
  2. 02实现交易处理和风险控制
  3. 03开发自定义指标或图表面板
  4. 04配置 Strategy Tester 并进行验证

安装

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

$npx skills add https://github.com/thomaspraun/mql-developer --skill mql-developer

安装后在 Claude Code 中输入/mql-developer确认已加载。

包含的文件

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

LICENSE
README.md
references/
trading-operations.md
external-communication.md
mql5-reference.md
architecture-patterns.md
mql4-reference.md
backtesting.md
indicators-and-ui.md
security-licensing.md

详细介绍

MQL 开发者

MetaTrader 平台专业 MQL4/MQL5 开发指南。

快速参考导航

根据任务加载相应的参考文件:

任务参考文件
MQL4 语法、类型、函数、预定义变量references/mql4-reference.md
MQL5 语法、OOP、CTrade、标准库references/mql5-reference.md
项目结构、EA 架构、设计模式references/architecture-patterns.md
订单、持仓、风险管理、追踪止损references/trading-operations.md
自定义指标、UI 面板、脚本、图表对象references/indicators-and-ui.md
WebRequest、JSON、REST API、Node.js 集成references/external-communication.md
策略测试器、优化、滚动前推、蒙特卡洛references/backtesting.md
代码保护、许可、反反编译references/security-licensing.md
大型参考文件的搜索模式

要在大型文件中定向查找,请搜索以下章节标题:

mql4-reference.md: Data Types、Variables、Operators、Arrays、Strings、Program Types、Predefined Variables、Technical Indicator Functions、Order Management、Market Information、Account Functions、Preprocessor、Error Handling、Common Gotchas、File Operations、WebRequest、Utility Functions、Global Terminal Variables

architecture-patterns.md: Project Structure、Simple Single-File、Modular EA、State Machine、Multi-Timeframe、Multi-Symbol、Singleton、Strategy Pattern、Observer、Include File Design、Complete Templates

mql5-reference.md: OOP Features、Trade Functions、CTrade、Native Trade、Event Handlers、Standard Library、Key Enumerations、SQLite、Sockets、Resources、OpenCL

MQL4 与 MQL5 的主要区别

方面MQL4MQL5
范式过程式(类似 C)完全面向对象(类似 C++)
交易模型仅订单(OrderSend)订单 + 成交 + 持仓(CTrade)
账户模型仅对冲净额 + 对冲
指标缓冲区最多 8 个最多 512 个
绘图样式6 种基础样式18 种(基础 + 颜色)
标准库精简全面
数据库无内置 SQLite
套接字无TCP + TLS
OpenCL不支持支持

核心工作流

创建智能交易系统
  1. 定义策略信号逻辑(入场/出场条件)
  2. 选择架构:简单型(单文件)或模块化(信号 + 交易 + 风险 + 筛选器)
  3. 实现订单/持仓管理,并妥善处理错误和重试
  4. 添加风险管理(仓位规模、回撤控制)
  5. 添加筛选条件(时间、点差、波动率)
  6. 使用策略测试器进行回测(先测试开盘价,再测试每个 Tick)
  7. 进行滚动前推验证和蒙特卡洛测试
创建自定义指标
  1. 选择窗口:indicator_chart_window 或 indicator_separate_window
  2. 定义缓冲区和绘图(MQL5 中使用 indicator_buffers、indicator_plots)
  3. 实现 OnCalculate(),使用 prev_calculated 高效地重新计算
  4. 设置绘图样式、颜色和标签
  5. 如有需要,处理多时间框架数据
与外部 API 通信
  1. 在“工具 > 选项 > 智能交易系统”中将 URL 加入白名单
  2. 使用 WebRequest() 发起 REST 调用(POST/GET)
  3. 手动构建 JSON(MQL 没有原生 JSON 支持)
  4. 使用字符串函数解析响应
  5. 使用 EventSetTimer() 实现轮询模式
  6. 通过重试处理网络错误

关键注意事项

  • 双精度比较:切勿对双精度数使用 ==。请使用 NormalizeDouble() 或容差
  • 4 位与 5 位报价经纪商:1 pip = 1 点(4 位)或 10 点(5 位)。务必检测
  • 平仓时反向循环:平仓时从 OrdersTotal()-1 向下迭代到 0(MQL4)
  • ECN 经纪商:有些需要分两步操作:先调用 OrderSend(),不设置 SL/TP,然后调用 OrderModify()
  • 成交策略(MQL5):始终通过 SYMBOL_FILLING_MODE 检测,切勿硬编码为 FOK
  • WebRequest 的限制:同步阻塞,无法在指标或策略测试器中使用
  • 交易上下文忙碌(MQL4):每个终端同一时间只能有一个 EA 进行交易
  • 数组索引:序列数组的索引 0 = 最新柱。使用 ArraySetAsSeries() 进行控制

项目结构(推荐)

MQL5/                          (or MQL4/)
├── Experts/
│   └── MyEA/
│       └── MyEA.mq5           // EA entry point
├── Indicators/
│   └── MyIndicator.mq5
├── Scripts/
│   └── MyScript.mq5
├── Include/
│   ├── Core/
│   │   ├── CTradeManager.mqh  // Order execution + retries
│   │   ├── CRiskManager.mqh   // Position sizing + drawdown
│   │   └── CSignalBase.mqh    // Signal interface
│   ├── Communication/
│   │   ├── CHttpClient.mqh    // WebRequest wrapper
│   │   └── CJsonHelper.mqh    // JSON build/parse
│   ├── UI/
│   │   └── CPanel.mqh         // Trading panel
│   └── Utils/
│       ├── CTimeFilter.mqh    // Session/time filters
│       └── CSymbolHelper.mqh  // Multi-market helpers
└── Libraries/

对于较简单的项目,可以接受将 EA 写在单个文件中并内嵌函数。

代码风格约定

  • 成员变量使用 m_ 前缀(例如,m_magicNumber)
  • 全局变量使用 g_ 前缀(例如,g_isInitialized)
  • 用户参数使用 input,而非 extern
  • 在 MQL4 中始终使用 #property strict
  • 向服务端发送前,规范化所有价格:NormalizeDouble(price, Digits)
  • 始终检查 OrderSelect()、OrderSend() 和交易操作的返回值
  • 为魔法数字添加注释,并解释不明显的交易逻辑

官方文档

评论

支持 Markdown