您现在的位置是:焦点 >>正文

mql5语言编程手册

焦点3472人已围观

简介```html MQL5语言编程手册 MQL5语言编程手册 打开MetaEditor,新建一个EA,光标在OnTick()里闪。绝大多数人第一行代码是Comment("Hello"),第二 ...

```html MQL5语言编程手册

MQL5语言编程手册

打开MetaEditor,语言编新建一个EA,程手册光标在OnTick()里闪。语言编绝大多数人第一行代码是程手册Comment("Hello"),第二行就卡住了——MQL5和MQL4长得像,语言编骨子里是程手册两套东西。MQL4的语言编OrderSend有十一个参数,MQL5把它拆成了MqlTradeRequest结构体加MqlTradeResult,程手册不习惯的语言编人骂骂咧咧,习惯的程手册人回不去了。这种断裂感贯穿整个MQL5学习曲线:你以前会的语言编,一半作废;你不会的程手册,才是语言编它真正想给你的。

数据类型这块,程手册MQL5比MQL4严谨得多。语言编datetime在MQL4里就是个整数,MQL5里还是整数,但编译器会盯着你别乱赋值。string不再需要StringConcatenate这种老古董,直接用+号拼接,内存管理交给运行时。我见过有人把MQL4的代码复制过来,满屏的StringGetChar、StringSetChar,编译能过,跑起来效率低得可怜。MQL5的字符串是引用计数的,知道这点,写代码时就会少很多无谓的拷贝。

事件驱动不是摆设

OnTick()只是入口之一。OnTimer()、OnTrade()、OnChartEvent()、OnBookEvent(),每个都有明确用途。有个做黄金剥头皮的朋友,把订单管理逻辑全塞在OnTick里,回测时看着挺好,实盘一上就出问题——OnTick触发频率跟行情有关,没行情时订单状态变了也没人管。后来他把持仓同步逻辑挪到OnTrade()里,稳定多了。MQL5的事件模型逼着你把逻辑拆开,拆得对不对是另一回事,但至少提供了正确的工具。

指标缓冲区这块值得单独说。MQL4的指标最多8个缓冲区,MQL5放开到512个,但没人会真用满。SetIndexBuffer()绑定数组,PlotIndexSetInteger()设置绘图样式,这套流程比MQL4清晰。有个细节:MQL5的指标计算和绘图是分离的,OnCalculate()返回rates_total表示计算完成,返回0表示数据还没准备好。我见过有人返回prev_calculated,结果指标在历史数据加载时反复重算,CPU直接拉满。手册里写得清楚,但翻手册的人少。

交易函数是重头戏

OrderSend()在MQL5里变成了OrderSend(request, result),request里填什么,result里返回什么,手册里列得明明白白。但真正要命的是订单状态机。一个市价单从发出到成交,中间可能经历ORDER_STATE_STARTED、ORDER_STATE_PLACED、ORDER_STATE_PARTIAL、ORDER_STATE_FILLED,每个状态对应不同的处理逻辑。用MQL4思维写MQL5交易模块,最常见错误就是发完单立刻去查持仓,结果PositionSelect()返回false——单子还在路上呢。正确做法是等OnTrade()事件,或者循环检查OrderSend的返回值。

历史数据访问也有坑。CopyBuffer()、CopyRates()、CopyTime(),这些函数返回实际复制的元素个数,不是请求的个数。请求100根K线,可能只给你80根,剩下20根是空值。有人直接拿数组下标访问,越界了还不知道为什么。手册里用粗体标了“always check the returned value”,但粗体字往往被跳过。

面向对象不是选修课

MQL5支持类、继承、多态、模板,这不是装饰。写一个多品种EA,不用类的话,全局变量满天飞,品种一多就乱。用类封装每个品种的持仓、挂单、风控参数,代码量可能差不多,但改起来一个天一个地。我自己的习惯是:任何超过300行的EA,至少拆成三个类——信号类、订单类、风控类。手册里关于虚函数和接口的部分写得偏简略,得配合实际代码才能吃透。

标准库是个宝藏。Trade\Trade.mqh封装了CTrade类,OrderSend那套繁琐流程被包成了Buy()、Sell()、PositionClose()。但别急着用——CTrade的默认参数不一定适合你的策略,滑点设置、成交模式、订单类型都得自己调。有人直接拿CTrade跑实盘,结果市价单变成了挂单,因为填充模式没设对。手册里Trade.mqh的注释比正文还长,值得逐行读。

最后说调试。MQL5的调试器比MQL4强太多,断点、单步、监视窗口都有。但Print()和Comment()仍然是主力。有个技巧:用FileWrite()把关键变量写到CSV里,回测完用Excel分析,比在终端里翻日志快十倍。手册里没写这个,但每个老手都这么干。

MQL5手册不是读一遍就完事的。第一遍看语法,第二遍看交易函数,第三遍看标准库,第四遍——你会发现之前漏掉的细节全冒出来了。它不厚,但密度大,每页都值得折角。

```

Tags:

相关文章

  • cf异地登录模型程序

    焦点

    凌晨三点,我盯着屏幕上的日志文件,心跳漏了一拍。账号在黑龙江哈尔滨登录,而我的手机正握在手里,定位显示在广东深圳。这不是灵异事件,是我自己写的CF穿越火线)异地登录模型程序在报警。 这个程序的核心逻辑 ...

    【焦点】

    阅读更多
  • 创意工具箱网站

    焦点

    打开浏览器,输入“创意工具箱”四个字,跳出来的结果多半是设计素材站或在线PS工具。我要说的不是这些。我指的是一个真正装东西的箱子——一个你随时能翻、能改、能拆开重组的私人工作台。它可能是一个文件夹,一 ...

    【焦点】

    阅读更多
  • 携程的优势与劣势分析

    焦点

    ```html 携程的优势与劣势分析 body { font-family: 'Segoe UI', Roboto, 'Helvetica Neue', sans-serif; line-h ...

    【焦点】

    阅读更多


友情链接