关于 mql-developer
mql-developer 是面向 MetaTrader 平台 MQL4 和 MQL5 项目的参考与开发指南,适合开发 Expert Advisor、指标及交易功能的开发者。它按主题提供语言、架构、交易操作、外部通信和测试资料,并提示常见问题。
主要功能
- 01查阅 MQL4 与 MQL5 参考资料
- 02选择 EA 架构与设计模式
- 03指导订单、持仓和风险管理
- 04涵盖指标与图表界面
- 05说明 API 通信与回测
适用场景
- 01规划 Expert Advisor 项目
- 02实现交易处理和风险控制
- 03开发自定义指标或图表面板
- 04配置 Strategy Tester 并进行验证
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ thomaspraun/ mql-developer --skill mql-developer安装后在 Claude Code 中输入/mql-developer确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
LICENSEREADME.mdreferences/trading-operations.mdexternal-communication.mdmql5-reference.mdarchitecture-patterns.mdmql4-reference.mdbacktesting.mdindicators-and-ui.mdsecurity-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 的主要区别
| 方面 | MQL4 | MQL5 |
|---|---|---|
| 范式 | 过程式(类似 C) | 完全面向对象(类似 C++) |
| 交易模型 | 仅订单(OrderSend) | 订单 + 成交 + 持仓(CTrade) |
| 账户模型 | 仅对冲 | 净额 + 对冲 |
| 指标缓冲区 | 最多 8 个 | 最多 512 个 |
| 绘图样式 | 6 种基础样式 | 18 种(基础 + 颜色) |
| 标准库 | 精简 | 全面 |
| 数据库 | 无 | 内置 SQLite |
| 套接字 | 无 | TCP + TLS |
| OpenCL | 不支持 | 支持 |
核心工作流
创建智能交易系统
- 定义策略信号逻辑(入场/出场条件)
- 选择架构:简单型(单文件)或模块化(信号 + 交易 + 风险 + 筛选器)
- 实现订单/持仓管理,并妥善处理错误和重试
- 添加风险管理(仓位规模、回撤控制)
- 添加筛选条件(时间、点差、波动率)
- 使用策略测试器进行回测(先测试开盘价,再测试每个 Tick)
- 进行滚动前推验证和蒙特卡洛测试
创建自定义指标
- 选择窗口:
indicator_chart_window或indicator_separate_window - 定义缓冲区和绘图(MQL5 中使用
indicator_buffers、indicator_plots) - 实现
OnCalculate(),使用prev_calculated高效地重新计算 - 设置绘图样式、颜色和标签
- 如有需要,处理多时间框架数据
与外部 API 通信
- 在“工具 > 选项 > 智能交易系统”中将 URL 加入白名单
- 使用
WebRequest()发起 REST 调用(POST/GET) - 手动构建 JSON(MQL 没有原生 JSON 支持)
- 使用字符串函数解析响应
- 使用
EventSetTimer()实现轮询模式 - 通过重试处理网络错误
关键注意事项
- 双精度比较:切勿对双精度数使用
==。请使用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()和交易操作的返回值 - 为魔法数字添加注释,并解释不明显的交易逻辑
官方文档
- MQL4:https://docs.mql4.com/
- MQL5:https://www.mql5.com/en/docs
- MQL5 文章:https://www.mql5.com/en/articles
- MQL5 代码库:https://www.mql5.com/en/code