EA SUPER TESTER 适用于 Expert Advisor 的多线程测试程序。
Table of Contents (click to show)
List
- 描述
- 开源代码
- 我们EA的真正价值
- 编写您的外汇交易策略
- 为 MetaTrader 5 编写 THE X
- MetaTrader 5 步骤 0:将指标加载到资源中!
- MetaTrader 5 步骤 1:指定信号名称!
- MetaTrader 5 步骤 2:指定信号显示名称!
- MetaTrader 5 步骤 3:指定筛选器名称!
- MetaTrader 5 步骤 4:在外部变量中指定指标或策略的参数!
- MetaTrader 5 步骤 5:创建指标句柄以加载到EA中!
- MetaTrader 5 步骤 6:声明变量以加载策略的指标!
- MetaTrader 5 步骤 7:声明用于存储指标数据的变量!
- MetaTrader 5 步骤 8:创建用于开仓的策略和信号!
- 错误代码
- MetaTrader 5 步骤 9:指定指标的筛选器或使用您的指标作为策略的筛选器!
- MetaTrader 5 步骤 10:这是最后一步!
- MetaTrader 5 总结与策略验证
- 为 MetaTrader 4 编写 THE X
- MetaTrader 4 总结与策略检查
- EA 中还有什么可以更改?
- 调试策略
描述
我们开发了一款通用智能交易系统,它包含了所有最有趣和最基本的功能。
此外,还加入了一个利用标准指标的信号模块。
这是一个策略构建器,允许您编写自己的策略。
它最初是一个非常受欢迎的项目。15年来,我们一直在完善算法,增加新的功能和指标,并修正功能错误。
本文将指导您如何编写策略,将指标集成到EA中,以及添加新的信号和筛选器。
开源代码
我们收到的一个常见问题是:
- 我可以将我的指标集成到EA中吗?
- EA的开源代码多少钱?
我们出售EA的开源代码已不是什么秘密。这适用于希望开发自己的EA或构建自己的信号的交易者。
此外,交易者经常购买开源代码来实现他们的专有策略并转售EA。
- EA The X 的开源代码可以在我们的交易EA市场中购买。
- Open Source The X for MetaTrader 5 (暂无)
- Open Source The X for MetaTrader 4 (暂无)
- 顺便说一句,我们有很多EA的开源代码。板块:策略EA (开源)
- 试试我们的 开源模板。
使用指标编写EA是一个复杂的过程。
我们提供交易EA编程服务。然而,开发过程经常面临延误,因为客户不确定他们需要哪些功能。
The X 是一个用于在外汇市场上交易的模块和功能集合,全球都在使用。我们开发了经常使用的功能,使EA能够满足每个交易者90%的需求。
当然,也存在需要经验丰富的程序员开发的独特策略。
此类策略很少见,需要精心准备。这项工作的成本取决于其复杂性。
我们EA的真正价值
从我们关于程序员工作成本的文章开始,我们可以估算出我们的交易机器人 The X 的大致成本:
我们的 EA 包含超过 10,000 行代码。虽然这看起来很多,但这是可控的,因为我们不使用 PL/SQL (编程语言/结构化查询语言) 编写EA。为什么? 因为很多人不熟悉 OOP (面向对象编程),处理 OOP 可能相当具有挑战性!
那么,让我们来计算一下:
- 1小时程序员编写功能和算法的成本 = 20美元。
- 1小时纠正错误的成本 = 5美元。
- 编写文本和视频的成本 = 10美元 (这个价格是基于互联网费率;所有说明和视频都是我自己制作的)。
- 假设为 The X 编写功能和模块花费了超过 1,000 小时!
- 使用指标编写信号很简单。因此,我们假设花费了 10 小时!
然而,有些方面无法立即完成:
- 调试功能可能需要额外的 1,000 小时!
- 制作说明、视频和推广也需要 1,000 小时!
总共,我们投入了超过 3,000 小时!
如果我们要委托这样一个算法,我们会拒绝。这既不合理也不盈利。
这样一个定制EA的总成本超过 35,000 美元!然而,我们的EA售价仅为十分之一!!!!
我们开源代码的成本要低十倍!
这样的定制订单永远不会被履行:
- 首先,因为客户不愿意投入如此大量的资金。
- 其次,程序员不愿意花费这么多时间进行开发。
我向您保证,编写这样一个复杂的交易机器人需要比创建交易策略更多的时间。
调试所有的模块和功能需要更长的时间。
我们非常感谢在过去五年中发现错误并提供修正的客户,以及贡献了他们的功能和指标以增强 EA THE X 功能的客户。
编写您的外汇交易策略
首先,我想提一下,我们已经更新了EA的代码。现在它非常容易理解并且有很好的注释。
您不需要深入研究每个功能的细节。您只需 10 个步骤就可以编写您的策略。
我们为使用我们的开源代码准备了一种非常用户友好的方法。
请记住:我们不免费为EA编写策略。如果您想为您的策略开发代码,请参阅 编程 板块以提交 订单!
初步步骤:
- 打开您从我们的EA市场购买的EA开源代码;
- 按 Ctrl + F 激活搜索栏;
- 输入术语 Step – 这个关键词将帮助您浏览我们的源代码并快速编写您的策略。
- 每个步骤都有很好的注释并提供了一个示例。
- 要学习如何编写您的策略,您可以逐渐取消标有星号 // * 的行的注释。
总共,开源代码中有 10 个步骤可让EA与您的指标配合工作。
我们将详细分析每个步骤!
由于 MT4 和 MT5 终端的编程不同,我们将把文章分为两部分:
如果您使用的是 EA THE X for MT4 终端,您可以直接进入 MetaTrader 4 终端上 The X 的编程部分。
为 MetaTrader 5 编写 THE X
您需要了解基本的编程规则来开发您的策略,或者使用现有文件中的指标(例如,来自互联网的 EA)添加现成的策略。
为 MetaTrader 5 编写EA比为 MetaTrader 4 更复杂。然而,MT5 终端允许创建更强大的策略,并具有更先进的策略测试器。
无论如何,您都应该购买终端将运行的开源代码。
MetaTrader 5 步骤 0:将指标加载到资源中!
// 步骤 0 ############################################## // 这部分代码用于在开源代码中编写您的策略 // // 要在编译期间将指标嵌入到 EA 中,您需要将其加载到 EA 的资源中 // // 例如: // * #resource "\\Indicators\\Examples\\MACD.ex5" // ################################################ ###########################
在这里,我们必须将我们需要的指标添加到资源中。
这确保了EA可以为市场编译,并防止编译后的EA在另一台计算机上找不到所需指标的不必要问题。
在市场中命名的规则: 使用完整的文件夹名称,以 Indicators 开头!
文件夹由 \\ 表示。
例如:
如果您的指标路径是:
C:\ROBO MT5\MQL5\Indicators\Examples\MACD.ex5
那么,该指标在编程语言中的路径写为:
“\\Indicators\\Examples\\MACD.ex5”
MetaTrader 5 步骤 1:指定信号名称!
// 步骤 1 ############################################## // 这部分代码用于在开源代码中编写您的策略 // // 在 // 后输入您的信号名称 // ################################################ #################### // 例如: // * Custom = 77, // 用于开源的信号 // ################################################ ############################
在这一步,我们必须将我们的信号或策略添加到 EA 中可能的信号列表中。
这有助于在EA设置阶段方便地管理信号。
例如:
- 您想将您的策略命名为 我的策略
- 策略编号也必须是唯一的。标准指标的信号占据了前 22 个数字!记住这个数字,因为我们稍后会需要它。
- 名称也必须是唯一的。例如,MYSTRATEGY1
最后,我们应该在代码中这样写:
MYSTRATEGY1 = 77, // 我的策略
您还可以添加更多策略并这样写,例如:
- MYSTRATEGY1 = 77, // 我的策略 a
- MYSTRATEGY2 = 78, // 我的策略 b
- MYSTRATEGY3 = 79, // 我的策略 c
MetaTrader 5 步骤 2:指定信号显示名称!
// 步骤 2 ############################################## // 这部分代码用于在开源代码中编写您的策略 // // 在 // 后输入将显示在屏幕上的信号名称 // ################################################ #################### // 例如: // * if (i == 77) s1 = "Custom"; // ################################################ ###########################
此步骤用于在我们的 EAPADpro EA 面板 中显示您的策略名称。
这很简单!但是,您必须使用上一步中的数字。
例如:
- if (i == 77) s1 = “My1”;
- if (i == 78) s1 = “My2”;
- if (i == 79) s1 = “My3”;
MetaTrader 5 步骤 3:指定筛选器名称!
// 步骤 3 ############################################## // 这部分代码用于在开源代码中编写您的策略 // // 在 // 后输入您的筛选器名称 // ################################################ #################### // 例如: // * FILTERCustom = 77, // 用于开源的筛选器 // ################################################ ###########################
在这一步,我们需要将我们的筛选器添加到 EA 中可能的筛选器列表中。
这确保了在EA设置阶段方便地管理筛选器。
通常,筛选器 使用与 信号 相同的指标,但条件是 筛选器 确定 信号 的当前位置,而 信号 反映实际的信号。
例如:
- 您想将您的 筛选器 命名为 我的筛选器 吗?
- 筛选器编号也应与策略编号匹配 (这样可以防止将来与其他数字混淆)。筛选器占据了标准指标的前 22 个数字!记住这个数字,因为我们稍后会需要它。
- 名称也必须是唯一的。例如,MYFILTER1
最后,我们应该在代码中这样写:
MYFILTER1 = 77, // 我的筛选器
您还可以添加更多筛选器并这样写,例如:
- MYFILTER1 = 77, // 我的筛选器 a
- MYFILTER2 = 78, // 我的筛选器 b
- MYFILTER3 = 79, // 我的筛选器 c
MetaTrader 5 步骤 4:在外部变量中指定指标或策略的参数!
// 步骤 4 ############################################## // 这部分代码用于在开源代码中编写您的策略 // // 指定您的指标或策略中将使用的所有外部变量 // // 例如: // * input string IndicatorName = "-------- Custom Indicator ----------------"; // * input int CUSTOMMAFastPeriod = 1; // * input int CUSTOMMASlowPeriod = 100; // * input ENUM_APPLIED_PRICE CUSTOMMAprice = PRICE_CLOSE; // ################################################ ###########################
在这一步,您必须输入策略中指标的所有外部设置,这些设置可以从 EA 中修改。这对于优化目的很有用。
此外,您可以在此处提取特定的策略参数。例如,线条交叉的水平,将指标的操作限制在图表上的最高价和最低价等等。
您不需要输入指标的所有参数。只需使那些您将来可能希望从 EA 设置中更改的参数即可。所有其他参数都可以设置为其默认值。
MetaTrader 5 步骤 5:创建指标句柄以加载到EA中!
// 步骤 5 ##############################################
// 这部分代码用于在开源代码中编写您的策略
//
// 在数组中创建一个条目,以便 EA 可以在初始化期间分配指标句柄
//
// 例如:
// * case 77:
// * h_custom[tf_num][sym_num] = iCustom(array_symbol, array_tf, "::Indicators\\Examples\\MACD", CUSTOMMAFastPeriod, CUSTOMMASlowPeriod, 9, CUSTOMMAprice);
// * if (h_custom[tf_num][sym_num] == INVALID_HANDLE)
// * {
// * PrintToLogs("无法获取 MACD 指标句柄");
// * return(INIT_FAILED);
// * }
// ################################################ ###########################
此步骤可确保我们的指标在 EA 初始化期间加载一次。在 MetaTrader 5 中,无需不断在图表上加载指标。
创建句柄时,我们存储已打开指标的句柄以供将来使用。
在这里要非常小心。创建句柄时,必须指定指标的所有外部变量并使用正确的名称。否则,EA 将无法加载指标。
请记住,我们将指标加载到 EA 资源中。因此,我们将从资源中调用指标!
您可以参阅 关于使用 iCustom 调用指标的 MQL5 文档。
编写此代码也需要策略编号。如果您的策略使用多个指标,则需要使用相同的编号指定每个指标。这可确保EA正确加载您的策略。
根据我们上面的示例,我们需要执行以下操作:
case 77:
h_custom[tf_num][sym_num] = iCustom(array_symbol, array_tf, "::Indicators\\Examples\\MACD", CUSTOMMAFastPeriod, CUSTOMMASlowPeriod, 9, CUSTOMMAprice);
if (h_custom[tf_num][sym_num] == INVALID_HANDLE)
{
PrintToLogs("无法获取 MACD 指标句柄");
return(INIT_FAILED);
}
break;
在这里,我只明确指定了两个外部参数。我用默认数字替换了该指标的参数 InpSignalSMA,以演示编程的本质!
同样,您可以添加多个指标和句柄。
如果策略使用多个指标,则需要声明每个指标。
例如:
case 77:
h_custom[tf_num][sym_num] = iCustom(array_symbol, array_tf, "::Indicators\\Examples\\MACD", CUSTOMMAFastPeriod, CUSTOMMASlowPeriod, 9, CUSTOMMAprice);
h_custom2[tf_num][sym_num] = iCustom(array_symbol, array_tf, "::Indicators\\Examples\\MACD", CUSTOMMAFastPeriod, CUSTOMMASlowPeriod, 15, CUSTOMMAprice);
if (h_custom[tf_num][sym_num] == INVALID_HANDLE || h_custom2[tf_num][sym_num] == INVALID_HANDLE)
{
PrintToLogs("无法获取 MACD 指标句柄");
return(INIT_FAILED);
}
break;
此外,对于您希望集成到 EA 中的其他策略!
MetaTrader 5 步骤 6:声明变量以加载策略的指标!
// 步骤 6 ############################################## // 这部分代码用于在开源代码中编写您的策略 // // 声明句柄数组变量 // // 例如: // * int h_custom[6][12]; // * int h_custom2[6][12]; // ################################################ ###########################
在这里,我们指定了上面创建的句柄的名称!
这很简单。
句柄被创建为数组,以支持 EA 中的多货币,并允许同时指定最多六个信号或筛选器!
MetaTrader 5 步骤 7:声明用于存储指标数据的变量!
// 步骤 7 ############################################## // 这部分代码用于在开源代码中编写您的策略 // // 声明指标值的数组变量 // // 例如: // * double custom1_buffer[]; // * double custom2_buffer[]; // ################################################ ###########################
在这里,我们指定了数据缓冲区的名称!
这很简单。
这些数组将存储有关每个柱的指标值的数据。如果您需要使用多个缓冲区,可以声明多个变量。
在我们的例子中,例如,我们需要两个缓冲区用于 MACD 指标的信号线和主线。
MetaTrader 5 步骤 8:创建用于开仓的策略和信号!
此步骤对 EA 至关重要。虽然所有其他步骤都是强制性的,但没有此步骤,EA将无法运行。
我在代码中加入了注释来解释每个部分!
策略编号必须与前面步骤中使用的编号一致!
- 分别为每个策略和信号编写代码。这取决于所选的策略和指标。处理策略的缓冲区涉及…
- 请注意,在此模块中,您可以指定任何策略。
- 在句柄中声明的所有指标都将加载到内存中并用于构建策略。
此步骤可分为三个子步骤:
- 1. 我们需要将数据缓冲区复制到我们的数据集中。在复制参数中,我们必须指定行号 (在我们的例子中,这些是 MACD 指标线)。
- 我们使用两条线:MAIN (主线) 和 SIGNAL (信号线)。
- 您可以阅读 关于 CopyBuffer 函数的文档。
- 2. 编写策略。在这种情况下,它是两条线的交叉。
- 重要:BUY (买入) 信号为 1,SELL (卖出) 信号为 -1。
- 3. 在这里,我们记录当根据信号开仓时将显示在日志中的信息。策略信息。
如果您正确填写了所有句柄和缓冲区,屏幕上应显示以下内容:
Alert(“恭喜您,您已经完成了一个演示编写策略的课程!”);
Alert(“恭喜您!您已经完成了一个演示编写策略的课程!”);
如果您收到错误消息,则需要识别并解决此错误的原因。
错误代码
最常见的错误:
| ERR_INDICATOR_UNKNOWN_SYMBOL | 4801 | 未知交易品种 |
| ERR_INDICATOR_CANNOT_CREATE | 4802 | 无法创建指标 |
| ERR_INDICATOR_NO_MEMORY | 4803 | 内存不足,无法添加指标 |
| ERR_INDICATOR_CANNOT_APPLY | 4804 | 指标无法应用于另一个指标 |
| ERR_INDICATOR_CANNOT_ADD | 4805 | 添加指标时出错 |
| ERR_INDICATOR_DATA_NOT_FOUND | 4806 | 未找到请求的数据 |
| ERR_INDICATOR_WRONG_HANDLE | 4807 | 指标句柄不正确 |
| ERR_INDICATOR_WRONG_PARAMETERS | 4808 | 创建指标时参数数量不正确 |
| ERR_INDICATOR_PARAMETERS_MISSING | 4809 | 创建指标时缺少参数 |
| ERR_INDICATOR_CUSTOM_NAME | 4810 | 数组中的第一个参数必须是自定义指标的名称 |
| ERR_INDICATOR_PARAMETER_TYPE | 4811 | 创建指标时数组中的参数类型不正确 |
| ERR_INDICATOR_WRONG_INDEX | 4812 | 请求的指标缓冲区索引无效 |
MetaTrader 5 步骤 9:指定指标的筛选器或使用您的指标作为策略的筛选器!
此步骤中的编程代码很简单,与上一步类似。
唯一的区别是,在此阶段,您将 指标 编写为 筛选器。
您不能使用指标指定信号,而只能指定筛选器,反之亦然!这一切都取决于策略。
MetaTrader 5 步骤 10:这是最后一步!
// 步骤 10 ############################################## ###################### // 这部分代码用于在开源代码中编写您的策略 // 这部分代码用于在开源代码中编写您的策略 // // 这是我们代码的结尾。如果您到了这一步,那么您已经创建了您的策略。 // 例如,我输入了一个秘密策略。如果您一切都做对了,您将在屏幕上收到警报形式的结果! // 感谢您选择我们的产品。我们竭诚为您服务! // // 我们的网站: // 我们的商店: /shop // MQL5 商店: https://www.mql5.com/users/vladon/seller // // // 这是我们代码的结尾。如果您到了这一步,那么您已经创建了您的策略。 // 例如,我输入了一个秘密策略。如果您一切都做对了,您将在屏幕上收到警报形式的结果! // 感谢您选择我们的产品。我们竭诚为您服务! // // 我们的网站: // 我们的商店: /shop // MQL5 商店: https://www.mql5.com/users/vladon/seller // ################################################ ###########################
这表明您的策略编程已完成。
祝您好运,盈利丰厚!
MetaTrader 5 总结与策略验证
如果您一切都做对了,您的策略将被集成到 EA 中,您将能够使用我的EA进行交易。
现在,我们需要测试我们的EA和策略。
- 加载终端;
- 开设一个模拟账户;
- 将 EA 附加到图表;
- 如果一切正常,您将收到有关成功添加策略的消息:
- 否则您将收到错误消息。在这种情况下,您需要仔细检查您的代码并重复所有步骤!
在策略测试器中检查EA:
- 打开终端;
- 打开策略测试器;
- 选择您的 EA、货币对、时间周期和日期范围。启用基于真实跳动点的每个跳动点测试;
- 打开设置标签页;
- 选择您的策略;
- 启用可视化;
- 按 START (开始);
- 应该会打开一个图表;
- 如果 EA 开仓,说明您一切都做对了!
为 MetaTrader 4 编写 THE X
您必须了解基本的编程规则来编写您的策略,或为现有文件中的指标(例如,来自互联网的 EA)添加现成的策略。
为 MetaTrader 5 编写 EA 比为 MetaTrader 4 更复杂。然而,MT5 终端允许您创建更强大的策略,并具有更先进的策略测试器。
另一方面,网上有大量适用于 MetaTrader 4 终端的策略和指标。因此,您可以使用 MT4 的代码!
另一个重要提示:在 MT4 中编写策略比在 MT5 中编写要容易得多!
无论如何,您都应该根据您将要使用的终端购买开源代码。
MetaTrader 4 步骤 0:将指标加载到资源中
// 步骤 0 ############################################## ###################### // 这部分代码用于在开源代码中编写您的策略 // 这部分代码用于在开源代码中编写您的策略 // // 要在编译期间将指标嵌入到 EA 中,您需要将其加载到 EA 的资源中 // 要在编译期间将指标嵌入到 EA 中,您需要将其加载到 EA 的资源中 // ################################################ #################### // 例如: // * #resource "\\ Indicators \\ MACD.ex4" // ################################################ ###########################
在这里,我们必须将我们需要的指标添加到资源中。
这将允许我们为市场编译一个EA,并防止编译后的 EA 在另一台计算机上找不到所需指标的不必要问题!
编写指标路径的规则:使用完整的文件夹名称,以 Indicators 开头!
文件夹由 \\ 表示
例如:
如果您的指标路径如下所示:
C:\ROBO MT4\MQL4\Indicators\Examples\MACD.ex4
那么,该指标在编程语言中的路径写为:
“\\Indicators\\Examples\\MACD.ex4”
MetaTrader 4 步骤 1:指定信号名称
// 步骤 1 ############################################## ###################### // 这部分代码用于在开源代码中编写您的策略 // 这部分代码用于在开源代码中编写您的策略 // // 在 // 后输入您的信号名称 // 在 // 后输入您的信号名称 // ################################################ #################### // 例如: // * Custom = 77, // 用于开源的信号 // ################################################ ############################
在这一步,我们必须将我们的 信号 或 策略 添加到EA中可能的信号列表中。
这允许在 EA 设置阶段方便地管理信号。
例如:
- 您想将您的策略命名为 我的策略
- 策略编号也必须是唯一的。标准指标的信号占据了前 22 个数字!记住这个数字以备将来参考。
- 名称也必须是唯一的。例如,MYSTRATEGY1
最后,您应该在代码中这样写:
MYSTRATEGY1 = 77, // 我的策略
您还可以添加更多策略并这样写,例如:
- MYSTRATEGY1 = 77, // 我的策略 a
- MYSTRATEGY2 = 78, // 我的策略 b
- MYSTRATEGY3 = 79, // 我的策略 c
MetaTrader 4 步骤 2:指定用于在屏幕上显示的信号名称
// 步骤 2 ############################################## ###################### // 这部分代码用于在开源代码中编写您的策略 // 这部分代码用于在开源代码中编写您的策略 // // 在 // 后输入将显示在屏幕上的信号名称 // 在 // 后输入将显示在屏幕上的信号名称 // ################################################ #################### // 例如: // * if (i == 77) s1 = "Custom"; // ################################################ ###########################
此步骤用于在我们的 EApadpro EA 面板中显示您的策略名称。
没有什么复杂的!但是您必须使用上一步中的数字。
例如:
- if (i == 77) s1 = “My1”;
- if (i == 78) s1 = “My2”;
- if (i == 79) s1 = “My3”;
MetaTrader 4 步骤 3:指定筛选器名称
// 步骤 3 ############################################## ###################### // 这部分代码用于在开源代码中编写您的策略 // 这部分代码用于在开源代码中编写您的策略 // // 在 // 后输入您的筛选器名称 // 在 // 后输入您的筛选器名称 // ################################################ #################### // 例如: // * FILTERCustom = 77, // 用于开源的筛选器 // ################################################ ###########################
在这一步,我们需要将我们的 筛选器 添加到 EA 中可能的筛选器列表中。
这允许在 EA 设置阶段方便地管理筛选器。
通常,筛选器 使用与 信号 相同的指标,条件是 筛选器 确定 信号 的当前位置,而 信号 确认交易操作。
例如:
- 您想将您的 筛选器 命名为 我的筛选器 吗?
- 筛选器的编号也应与策略的编号匹配 (这样做是为了避免将来与标准指标编号混淆)。筛选器占据了为标准指标保留的前 22 个数字!记住这个数字以备将来参考。
- 名称也必须是唯一的。例如,MYFILTER1
最后,您应该在代码中这样写:
MYFILTER1 = 77, // 我的筛选器
您还可以添加更多筛选器并这样写,例如:
- MYFILTER1 = 77, // 我的筛选器 a
- MYFILTER2 = 78, // 我的筛选器 b
- MYFILTER3 = 79, // 我的筛选器 c
MetaTrader 4 步骤 4:在外部变量中指定指标或策略参数
// 步骤 4 ############################################## ###################### // 这部分代码用于在开源代码中编写您的策略 // 这部分代码用于在开源代码中编写您的策略 // // 指定您的指标或策略中将使用的所有外部变量 // 指定您的指标或策略中将使用的所有外部变量 // ################################################ #################### // 例如: // * input string IndicatorName = "-------- Custom Indicator ----------------"; // * input int CUSTOMMAFastPeriod = 1; // * input int CUSTOMMASlowPeriod = 100; // ################################################ ###########################
在这一步,您必须输入策略中使用的指标的所有外部设置,这些设置可以从 EA 更改。这对于优化很有用。
此外,您还可以提取策略的特定参数,例如线条交叉的水平,基于图表上最高价和最低价限制指标的操作等等。
您不需要输入指标的所有参数。只包含那些您将来可能希望从 EA 设置中更改的参数就足够了。对于所有其他参数,您可以让指标使用其默认设置。
MetaTrader 4 步骤 5, 6, 7:放松!
// 步骤 5 ############################################## ###################### // 这部分代码用于在开源代码中编写您的策略 // 这部分代码用于在开源代码中编写您的策略 // // 步骤 5 仅 MT5 终端需要。所以在这一步,您可以放松一下,喝杯咖啡 // 步骤 5 仅 MT5 终端需要。所以在这一步,您可以放松一下,喝杯咖啡 // ################################################ ########################### // 步骤 6 ############################################## ###################### // 这部分代码用于在开源代码中编写您的策略 // 这部分代码用于在开源代码中编写您的策略 // // 步骤 6 仅 MT5 终端需要。所以在这一步,您可以放松一下,吃点零食 // 步骤 6 仅 MT5 终端需要。所以在这一步,您可以放松一下,吃点零食 // ################################################ ########################### // 步骤 7 ############################################## ###################### // 这部分代码用于在开源代码中编写您的策略 // 这部分代码用于在开源代码中编写您的策略 // // 步骤 7 仅 MT5 终端需要。休息一下,做点运动 // 步骤 7 仅 MT5 终端需要。休息一下,做点运动 // ################################################ ###########################
注意: MetaTrader 4 不需要将指标加载到内存中以供后续工作。当指标在 MT4 中再次被调用时,EA 会使用相同的句柄。
MetaTrader 4 步骤 8:创建用于开仓的策略和信号
此步骤对 EA 非常重要。虽然所有其他步骤都是强制性的,但没有此步骤,EA将无法运行。
我在代码中添加了注释!
策略编号与前面步骤中的编号一致!
- 分别为策略和信号编写代码。这取决于所选的策略和指标。设置策略缓冲区…
- 我想指出,在此模块中,您可以指定任何策略。
- 我们在句柄中声明的所有指标都将加载到内存中并用于构建策略。
此步骤可分为 2 个子步骤:
- 1. 编写策略。 在这种情况下,它是两条线的交叉。
- 重要: BUY (买入) 信号 为 1,SELL (卖出) 信号 为 -1。
- 2. 记录开仓时将显示在日志中的信息。策略信息
如果您收到错误消息,则需要确定错误的原因。
最常见的错误:
| ERR_INDICATOR_UNKNOWN_SYMBOL | 4801 | 未知交易品种 |
| ERR_INDICATOR_CANNOT_CREATE | 4802 | 无法创建指标 |
| ERR_INDICATOR_NO_MEMORY | 4803 | 内存不足,无法添加指标 |
| ERR_INDICATOR_CANNOT_APPLY | 4804 | 指标无法应用于另一个指标 |
| ERR_INDICATOR_CANNOT_ADD | 4805 | 添加指标时出错 |
| ERR_INDICATOR_DATA_NOT_FOUND | 4806 | 未找到请求的数据 |
| ERR_INDICATOR_WRONG_HANDLE | 4807 | 指标句柄错误 |
| ERR_INDICATOR_WRONG_PARAMETERS | 4808 | 创建指标时参数数量不正确 |
| ERR_INDICATOR_PARAMETERS_MISSING | 4809 | 创建指标时缺少参数 |
| ERR_INDICATOR_CUSTOM_NAME | 4810 | 数组中的第一个参数必须是自定义指标的名称 |
| ERR_INDICATOR_PARAMETER_TYPE | 4811 | 创建指标时数组中的参数类型不正确 |
| ERR_INDICATOR_WRONG_INDEX | 4812 | 请求的指标缓冲区索引无效 |
MetaTrader 4 步骤 9:指定指标的筛选器或使用您的指标作为策略的筛选器
在此步骤的代码编程中,没有什么复杂的,它与上一步类似。
唯一的区别是,在此阶段,您将 指标 编写为 筛选器。
您不能使用指标指定信号,而只能指定筛选器,反之亦然!这一切都取决于策略。
MetaTrader 4 步骤 10:这是最后一步!
// 步骤 10 ############################################## ###################### // 这部分代码用于在开源代码中编写您的策略 // 这部分代码用于在开源代码中编写您的策略 // // 这是我们代码的结尾。如果您到了这一步,那么您已经创建了您的策略。 // 例如,我输入了一个秘密策略。如果您一切都做对了,您将在屏幕上收到警报形式的结果! // 感谢您选择我们的产品。我们竭诚为您服务! // // 我们的网站: // 我们的商店: /shop // MQL5 商店: https://www.mql5.com/users/vladon/seller // // // 这是我们代码的结尾。如果您到了这一步,那么您已经创建了您的策略。 // 例如,我输入了一个秘密策略。如果您一切都做对了,您将在屏幕上收到警报形式的结果! // 感谢您选择我们的产品。我们竭诚为您服务! // // 我们的网站: // 我们的商店: /shop // MQL5 商店: https://www.mql5.com/users/vladon/seller // ################################################ ###########################
创建此步骤是为了让您在使用搜索时不会迷路。
这表明您的策略编程已完成。
祝您好运,盈利丰厚!
MetaTrader 4 总结与策略检查
如果您一切都做对了,您的策略将被集成到 EA 中,您将能够使用我的EA进行交易。
现在,我们需要测试我们的EA和策略。
- 加载终端;
- 开设一个模拟账户;
- 将 EA 附加到图表;
在策略测试器中检查EA:
- 打开终端;
- 打开策略测试器;
- 选择您的 EA、货币对、时间周期和日期范围。启用基于真实跳动点的每个跳动点测试;
- 打开设置标签页;
- 选择您的策略;
- 启用可视化;
- 按 START (开始);
- 应该会打开一个图表;
- 如果 EA 开仓,那么您一切都做对了!
EA 中还有什么可以更改?
当然,您可能希望个性化您的策略,并为我们的EA提供独特的外观!
您可以自行更改的参数:
// 更改 1:EA 版本 // EA 版本 #define versionea "18.008" // 更改 2:EA 徽标 // EA 徽标 #define BMPLOGO "Images\\dollar.bmp" // 更改 3:EA 图标 // EA 图标 // #property icon "\\Images\\dollar.bmp" // 更改 4:图表上的 EA 名称 // 图表上的 EA 名称 #define defEANAME "EXP-The X (OS)" // 更改 5:完整说明链接 // 完整说明链接 #define linkTOfull "www.expforex.com/zh/publ/4-1-0-166" // 更改 6:EA 模拟版本。仅在模拟账户或真实账户的 USDJPY 货币对上运行 // EA 模拟版本。仅在模拟账户或真实账户的 USDJPY 货币对上运行 bool DEMO = false;
建议不要更改所有其他参数,因为这可能会破坏 EA 的功能!
调试策略
下一步是测试和优化 The X 并找到您的最佳设置。
或者,调试和升级您的策略。
有时,这需要几天或几周。有时,甚至几个月。
外汇市场 – 风险提示! 这是一种风险很高的盈利方式。改进您的策略。
祝您好运,盈利丰厚!
在策略块中输出附加信息
这是我们开源代码中的一个可选功能。
您可以在 EAPADPRO 策略 块中输出任何参数的任何值。
1. 为此,创建一个局部变量,
例如,double EAPADPRO_StrategyValue1 = 0; double EAPADPRO_StrategyValue2 = 0;
2. 为此变量赋值,
例如,分配 ATR 指标的值 (找到 double atr = iATR 行):
EAPADPRO_StrategyValue1 = atr; EAPADPRO_StrategyValue2 = atrma;
完整的筛选器代码:
3. 接下来,将变量的值添加到信息输出块:
在代码中找到函数 CreateStrategy() 并添加一个新行:
ArrayAddStrategy("StrategyValue1", DoubleToString(EAPADPRO_StrategyValue1, 5), "", "");
ArrayAddStrategy("StrategyValue2", DoubleToString(EAPADPRO_StrategyValue2, 5), "", "");
函数的第一个参数是变量的名称。
函数的第二个参数是变量的值,格式方便!
注意! 添加偶数个参数以确保在屏幕上整洁显示!
这篇文章还有以下语言版本: English Portuguese Español Deutsch Українська Chinese Русский Français Italiano Türkçe 日本語 한국어 العربية Indonesian ไทย Tiếng Việt









