保持敬畏之心
交易是一场持久战
MQL4编程入门教学
68

MQL4编程入门教学

结语:MQL4编程学习之路,终点亦是新起点-图道交易
置顶

结语:MQL4编程学习之路,终点亦是新起点

作者:学长 如果你一直在看我的MQL4编程教学系列,从第一篇教学坚持到现在,请接受我最诚挚的祝贺!你已经完成了一段了不起的旅程。 现在的你不再是那个对代码望而生畏的门外汉,而是已经初步掌握了将交易理念转化为自动化程序的能力。这段旅程或许充满...

开篇语:MT4 EA策略开发 - 写在教学之前-图道交易
置顶

开篇语:MT4 EA策略开发 - 写在教学之前

近些年,外汇市场无疑成为了最吸引普通投资者的领域之一。全天24小时交易、灵活的杠杆、较低的入场门槛,这些特性给了我们普通人一个进入国际金融市场的机会。 而谈到外汇交易,几乎所有人都绕不开MetaTrader4(也就是我们常说的MT4)。它之...

EA交易是圣杯还是陷阱?如何辨别-图道交易

EA交易是圣杯还是陷阱?如何辨别

大家好! 聊到外汇交易,很多人肯定都动过跑EA的心思。这玩意儿听起来太美了:一个能7×24小时不休息、帮你自动赚钱的机器人,还能克服你“管不住手”的毛病,简直就是通往躺赚人生的快车道啊! 但现实是,这片海里到处都是坑。很多所谓的神...

MQL4(65):马丁格尔策略浅析-图道交易

MQL4(65):马丁格尔策略浅析

在EA策略中,很少有哪个名字像“马丁格尔”一样,同时被无数人追捧,又被无数人唾弃。它如同一位迷人的“恶魔”,向交易员许下一个看似永远不会输的诺言,但其背后,却隐藏着通往毁灭的深渊。 今天,我们不只学习马丁策略是什么,更要亲手解剖它,看清它致...

MQL4(64):如何调试你的EA-图道交易

MQL4(64):如何调试你的EA

每一位程序员,无论新手还是专家,其大部分时间都不是在写新代码,而是在调试。这并非失败的标志,恰恰是编程这门手艺的精髓。调试,就是侦探工作:我们根据线索,建立假设,最终找到并修复系统中的罪犯(Bug)。 在MQL4中,我们缺少花哨的现代调试工...

MQL4(59):采用挂单策略的进阶版EA程序-图道交易

MQL4(59):采用挂单策略的进阶版EA程序

本节展示的是一款采用挂单(止损单)方式进行交易,并融合了更多高级特性的EA程序代码。 相比于上一版,从市价单策略改为挂单策略,增加了更完善的市场状态检查、更严格的订单验证、改进了价格计算逻辑、增加了保证金检查、错误处理更加完善、订单管理更加...

MQL4(58):进阶版EA交易程序源码-图道交易

MQL4(58):进阶版EA交易程序源码

本节展示的EA源码相比于上一版,增加了更多高级功能:手数计算的改进、错误处理机制、交易环境繁忙检测、止损止盈的改进、订单管理的改进(分两步开单,先开仓再设置止损止盈,然后验证并调整止损止盈价格,确保符合经纪商要求)、手数规范化处理。 这些改...

MQL4(56):基础版EA交易程序源码-图道交易

MQL4(56):基础版EA交易程序源码

MQL4系列教学结束了。 从这篇文章开始,我们温习下整个系列教学里EA开发的过程。从最简单的基础版EA源码到进阶版,来感受一下我是如何给一个EA添砖加瓦、完善其功能的。这款EA是否盈利不重要,它的作用是来给大家演示一个EA的成型过程。 #p...

MQL4(55):自定义指标与脚本开发-图道交易

MQL4(55):自定义指标与脚本开发

若一本关于MQL语言的书籍,未能涵盖自定义指标与脚本的开发,那它无疑是不完整的。MetaTrader平台内置的指标虽多,但远非全部。幸运的是,MQL语言赋予了我们创造专属分析工具的强大能力。今天,我们将学习如何为我们的交易系统,打造独一无二...

MQL4(54):检查订单的盈利状况-图道交易

MQL4(54):检查订单的盈利状况

在交易过程中,有时需要查询某个持仓订单的当前浮动盈亏,或者一个已平仓订单的最终盈亏。通常有两种方式来获取这些盈利信息。若要得到以账户存款货币(例如美元)计价的盈利,可以使用 OrderProfit() 函数。但在此之前,必须先通过 Orde...

MQL4(53):终端全局变量-图道交易

MQL4(53):终端全局变量

我们已经掌握了EA这栋“房子”内部的两种变量:放在独立房间的“私人物品”(局部变量),和放在大厅的“公共家具”(程序内全局变量)。但现在思考一个问题:如果整栋房子突然断电(MT4重启或崩溃),会发生什么? 答案是:房子里的一切“记忆”都会丢...

MQL4(52):订单管理 - 处理多个订单-图道交易

MQL4(52):订单管理 - 处理多个订单

在某些交易策略中,您可能需要针对同一个入场信号(或持仓)下达多个订单,这些订单可以拥有各自不同的止损、止盈水平以及手数大小。实现这一需求有多种途径,最直接的一种方法是,发出的每一笔订单都单独编写一条 OrderSend() 指令。这种方式的...

MQL4(51):交易前检查 - 保证金和点差-图道交易

MQL4(51):交易前检查 - 保证金和点差

一个成功的交易策略,不仅仅在于何时入场,更在于何时不该入场。专业的交易员会主动规避那些高风险、低胜率的“垃圾时间”。今天我们就来为我们的EA安装上两套至关重要的“风险过滤器”,教会它这项宝贵的交易纪律。 我们将在下单前的最后一步,执行这套“...

MQL4(50):利用订单注释作为辅助标识符-图道交易

MQL4(50):利用订单注释作为辅助标识符

在此前的课程中,我们一直使用“魔术号”作为EA的唯一标识,来区分EA自己下的订单和手动订单。但如果你的EA变得更复杂,需要在同一个图表上,同时运行多个不同的、独立的子策略,那该怎么办? 比如,你的EA中既有一个长线的趋势跟踪策略,又有一个短...

MQL4(49):错误处理 - 订单重试机制-图道交易

MQL4(49):错误处理 - 订单重试机制

我们始终强调在尝试发出交易指令前,预先检验订单的各项参数。这样做是为了尽可能避免因参数设置错误或价格不当而引发的常见错误提示。然而,即便如此,实际交易中仍可能遭遇重新报价、交易环境繁忙或服务器通讯故障等问题。这些问题并非总能完全规避,但当它...

MQL4(46):EA演示版或账户使用限制-图道交易

MQL4(46):EA演示版或账户使用限制

当你投入了大量心血,终于开发出一款能稳定盈利的EA时,你可能会考虑将它商业化,或者至少,希望能安全地分享给朋友测试。这时,我们就必须为EA加上一把“锁”,以确保它不会被随意复制和滥用。 今天,我们就来学习如何为我们的EA打造一套简单而有效的...

MQL4(45):检查EA运行所需的配置选项-图道交易

MQL4(45):检查EA运行所需的配置选项

想象一下,你精心聘请了一位顶级的交易员(你的EA)来管理账户。你把他带到了交易大厅,却忘记给他办理进入交易室的“门禁卡”。他空有一身本领,却什么也做不了。 在MetaTrader平台中,“允许实时交易”、“允许导入DLL”这些选项,就是我们...

MQL4(44):转义字符和图表注释-图道交易

MQL4(44):转义字符和图表注释

从本章开始,我们将学习一些在开发EA时可能会非常实用的一些附加功能和技巧。 转义字符 在MQL4的字符串常量(即用双引号括起来的文本)中,如果您希望包含某些特殊字符,如双引号本身、单引号或反斜杠符号,您需要在这些特殊字符前加上一个反斜杠 (...

MQL4(42):创建简单的交易定时器-图道交易

MQL4(42):创建简单的交易定时器

日期时间变量实际上是基于从1970年1月1日开始计算的秒数。比如,2009年6月15日凌晨0点会被记录为1245024000。这种日期时间格式的好处是,它使过去和将来时间的比较及数学运算变得相当简便。 例如,若想判断一个日期是在另一个日期之...

MQL4(41):比较K线的值来判断金叉/死叉-图道交易

MQL4(41):比较K线的值来判断金叉/死叉

在构建交易策略时,我们往往不仅需要知道指标当前的值,还需要了解它相较于过去是如何变化的。例如,判断移动平均线 (MA) 是正在上升还是下降,或者一个震荡指标(如随机指标)是否刚刚穿越了某个关键水平(如超买/超卖线)。这都需要比较当前或最近完...

MQL4(40):if...else操作符与运算符-图道交易

MQL4(40):if...else操作符与运算符

在 MQL4编程中,我们使用条件运算符 if 和 else 来构建和评估交易系统的入场、出场及其他管理逻辑。您在本书的前面部分可能已经见过它们的应用,但为了照顾初学编程的读者,这里我们快速回顾一下它们的基本用法。 1. if 运算符 if ...

MQL4(38):调用自定义指标 - iCustom()-图道交易

MQL4(38):调用自定义指标 - iCustom()

网络上有成百上千可用于 MetaTrader 平台的自定义指标。如果您决定在您的EA中使用这类非平台内置的自定义指标,那么就需要进行一些额外的工作。 获取源代码的重要性:在使用自定义指标时,如果能拥有其 .mq4 源代码文件无疑是最佳情况。...

MQL4(36):在EA中获取K线/指标数据-图道交易

MQL4(36):在EA中获取K线/指标数据

在过去的几章中,我们致力于创建一系列用于执行订单处理机制的函数。这些函数是几乎所有EA都通用的基础模块,设计它们的初衷是希望它们能在各种交易场景中被复用,并尽可能保持灵活性。这样做的目的是让我们能够从繁琐的订单操作细节中解放出来,从而更专注...

MQL4(35):进一步升级EA程序-图道交易

MQL4(35):进一步升级EA程序

现在我们来修改均线交叉EA的 OnTick() 函数,以便应用我们新创建的那些功能。首先,在建立新的买单前,我们会检查当前是否已经有买单持仓。我们不再是去平掉单个卖单,而是直接调用一个函数来平掉所有卖单。这种方法不需要用到订单号。 // 买...

MQL4(34):风险管理 - 盈亏平衡止损-图道交易

MQL4(34):风险管理 - 盈亏平衡止损

盈亏平衡止损 除了追踪止损外,另一种常用的订单风险管理技术是盈亏平衡止损 。它的核心逻辑相对简单:当一笔订单的浮动盈利达到或超过预先设定的一个最小盈利点数后,就自动将该订单的止损位移动到其开仓价格。 这样做的目的是,一旦交易向有利方向发展并...

MQL4(33):风险管理 - 追踪止损的实现-图道交易

MQL4(33):风险管理 - 追踪止损的实现

追踪止损的实现 追踪止损是一种动态调整止损位的风险管理技术。其核心思想是:当订单产生浮动盈利时,自动将止损位朝着盈利方向移动,以“锁定”已获得的利润,并在价格反向回调时保护这些利润。 工作原理: 设置距离: 首先设定一个追踪距离,通常以pi...

MQL4(32):订单管理和统计-图道交易

MQL4(32):订单管理和统计

在开发 EA 时,经常需要知道当前由本EA管理的、符合特定条件的订单数量。例如,统计总共有多少订单、有多少买单、多少卖单、多少挂单等。这对于执行某些策略逻辑(如限制最大持仓数、判断是否已有同向订单)或进行信息展示都非常有用。我们可以创建一系...

​MQL4(25):封装平仓/删除挂单函数-图道交易

​MQL4(25):封装平仓/删除挂单函数

封装平仓函数 最后,我们将订单平仓的逻辑也封装成一个可重用的函数。这个函数将专注于关闭单个指定的市价订单。当您需要精确地关闭某一个特定的订单时(例如,基于订单号)这时下面这个函数就很有用,同时加入了必要的检查和错误处理。 关闭指定买单 (C...

​MQL4(23):封装手数计算与验证函数-图道交易

​MQL4(23):封装手数计算与验证函数

在前面的章节中,我们逐步构建了包含下单、错误处理、价格验证、手数计算等功能的代码逻辑。现在,我们将学习如何将这些代码块封装成可重用的函数。这样做的好处是: 将复杂的细节(如手数计算、价格验证等)隐藏在函数内部,使得 OnTick() 等核心...

​MQL4(21):EA交易环境与并发控制-图道交易

​MQL4(21):EA交易环境与并发控制

MetaTrader平台为所有运行在上面的EA提供了一个单一的交易执行线程。这意味着,在同一时刻,只有一个EA能够成功地执行交易相关的操作(如下单、平仓、修改订单等),无论您在终端中同时运行了多少个 EA 实例。这种机制是为了保证订单处理的...

​MQL4(20):资金管理与动态手数计算-图道交易

​MQL4(20):资金管理与动态手数计算

在构建交易策略时,除了精心设计入场、出场、止损和止盈规则外,确定每次交易使用多大的手数是风险管理中至关重要的一环。最简单直接的方法是设置一个固定的手数(例如,通过 extern 变量让用户输入),并在所有交易中都使用这个固定值。然而,这种方...

登录

找回密码

注册