使用 Universal Expert Advisor 和开源软件,只需 10 个步骤即可编写您的交易策略

EA SUPER TESTER 适用于 Expert Advisor 的多线程测试程序。
EA SUPER TESTER 适用于 Expert Advisor 的多线程测试程序。

Table of Contents (click to show)

List

描述

The X 是一款交易策略构建器

我们开发了一款通用智能交易系统,它包含了所有最有趣和最基本的功能。

此外,还加入了一个利用标准指标的信号模块。

这是一个策略构建器,允许您编写自己的策略。

它最初是一个非常受欢迎的项目。15年来,我们一直在完善算法,增加新的功能和指标,并修正功能错误。

本文将指导您如何编写策略,将指标集成到EA中,以及添加新的信号和筛选器。

开源代码

我们收到的一个常见问题是:

  1. 我可以将我的指标集成到EA中吗?
  2. EA的开源代码多少钱?

我们出售EA的开源代码已不是什么秘密。这适用于希望开发自己的EA或构建自己的信号的交易者。

此外,交易者经常购买开源代码来实现他们的专有策略并转售EA。

  1. EA The X 的开源代码可以在我们的交易EA市场中购买。
  2. Open Source The X for MetaTrader 5 (暂无)
  3. Open Source The X for MetaTrader 4 (暂无)
  4. 顺便说一句,我们有很多EA的开源代码。板块:策略EA (开源)
  5. 试试我们的 开源模板
https://expforex.com/zh/templates/

使用指标编写EA是一个复杂的过程。

我们提供交易EA编程服务。然而,开发过程经常面临延误,因为客户不确定他们需要哪些功能。

The X 是一个用于在外汇市场上交易的模块和功能集合,全球都在使用。我们开发了经常使用的功能,使EA能够满足每个交易者90%的需求。

当然,也存在需要经验丰富的程序员开发的独特策略。

此类策略很少见,需要精心准备。这项工作的成本取决于其复杂性。

我们EA的真正价值

从我们关于程序员工作成本的文章开始,我们可以估算出我们的交易机器人 The X 的大致成本:

我们的 EA 包含超过 10,000 行代码。虽然这看起来很多,但这是可控的,因为我们不使用 PL/SQL (编程语言/结构化查询语言) 编写EA。为什么? 因为很多人不熟悉 OOP (面向对象编程),处理 OOP 可能相当具有挑战性!

那么,让我们来计算一下:

  1. 1小时程序员编写功能和算法的成本 = 20美元。
  2. 1小时纠正错误的成本 = 5美元。
  3. 编写文本和视频的成本 = 10美元 (这个价格是基于互联网费率;所有说明和视频都是我自己制作的)。
  4. 假设为 The X 编写功能和模块花费了超过 1,000 小时!
  5. 使用指标编写信号很简单。因此,我们假设花费了 10 小时!

然而,有些方面无法立即完成:

  1. 调试功能可能需要额外的 1,000 小时!
  2. 制作说明、视频和推广也需要 1,000 小时!

总共,我们投入了超过 3,000 小时!

如果我们要委托这样一个算法,我们会拒绝。这既不合理也不盈利。

这样一个定制EA的总成本超过 35,000 美元!然而,我们的EA售价仅为十分之一!!!!

我们开源代码的成本要低十倍!

这样的定制订单永远不会被履行:

  1. 首先,因为客户不愿意投入如此大量的资金。
  2. 其次,程序员不愿意花费这么多时间进行开发。

我向您保证,编写这样一个复杂的交易机器人需要比创建交易策略更多的时间。

调试所有的模块和功能需要更长的时间。

我们非常感谢在过去五年中发现错误并提供修正的客户,以及贡献了他们的功能和指标以增强 EA THE X 功能的客户。

编写您的外汇交易策略

首先,我想提一下,我们已经更新了EA的代码。现在它非常容易理解并且有很好的注释。

您不需要深入研究每个功能的细节。您只需 10 个步骤就可以编写您的策略。

我们为使用我们的开源代码准备了一种非常用户友好的方法。

请记住:我们不免费为EA编写策略。如果您想为您的策略开发代码,请参阅 编程 板块以提交 订单

初步步骤:

  1. 打开您从我们的EA市场购买的EA开源代码;
  2. Ctrl + F 激活搜索栏;
  3. 输入术语 Step – 这个关键词将帮助您浏览我们的源代码并快速编写您的策略。
  4. 源代码中的搜索功能
  5. 每个步骤都有很好的注释并提供了一个示例。
  6. 要学习如何编写您的策略,您可以逐渐取消标有星号 // * 的行的注释。

总共,开源代码中有 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设置阶段方便地管理信号。

在代码中指定信号名称

例如:

  1. 您想将您的策略命名为 我的策略
  2. 策略编号也必须是唯一的。标准指标的信号占据了前 22 个数字!记住这个数字,因为我们稍后会需要它。
  3. 名称也必须是唯一的。例如,MYSTRATEGY1

最后,我们应该在代码中这样写:

MYSTRATEGY1 = 77, // 我的策略

您还可以添加更多策略并这样写,例如:

  1. MYSTRATEGY1 = 77, // 我的策略 a
  2. MYSTRATEGY2 = 78, // 我的策略 b
  3. MYSTRATEGY3 = 79, // 我的策略 c

MetaTrader 5 步骤 2:指定信号显示名称!

// 步骤 2 ##############################################
// 这部分代码用于在开源代码中编写您的策略
//
// 在 // 后输入将显示在屏幕上的信号名称
// ################################################ ####################
// 例如:
// * if (i == 77) s1 = "Custom";
// ################################################ ###########################

此步骤用于在我们的 EAPADpro EA 面板 中显示您的策略名称。

这很简单!但是,您必须使用上一步中的数字。

显示信号名称

例如:

  1. if (i == 77) s1 = “My1”;
  2. if (i == 78) s1 = “My2”;
  3. if (i == 79) s1 = “My3”;

MetaTrader 5 步骤 3:指定筛选器名称!

// 步骤 3 ##############################################
// 这部分代码用于在开源代码中编写您的策略
//
// 在 // 后输入您的筛选器名称
// ################################################ ####################
// 例如:
// * FILTERCustom = 77, // 用于开源的筛选器
// ################################################ ###########################

在这一步,我们需要将我们的筛选器添加到 EA 中可能的筛选器列表中。

这确保了在EA设置阶段方便地管理筛选器。

通常,筛选器 使用与 信号 相同的指标,但条件是 筛选器 确定 信号 的当前位置,而 信号 反映实际的信号。

例如:

  1. 您想将您的 筛选器 命名为 我的筛选器 吗?
  2. 筛选器编号也应与策略编号匹配 (这样可以防止将来与其他数字混淆)。筛选器占据了标准指标的前 22 个数字!记住这个数字,因为我们稍后会需要它。
  3. 名称也必须是唯一的。例如,MYFILTER1

最后,我们应该在代码中这样写:

MYFILTER1 = 77, // 我的筛选器

您还可以添加更多筛选器并这样写,例如:

  1. MYFILTER1 = 77, // 我的筛选器 a
  2. MYFILTER2 = 78, // 我的筛选器 b
  3. 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. 分别为每个策略和信号编写代码。这取决于所选的策略和指标。处理策略的缓冲区涉及…
  2. 请注意,在此模块中,您可以指定任何策略。
  3. 在句柄中声明的所有指标都将加载到内存中并用于构建策略。
创建策略和信号

此步骤可分为三个子步骤:

  1. 1. 我们需要将数据缓冲区复制到我们的数据集中。在复制参数中,我们必须指定行号 (在我们的例子中,这些是 MACD 指标线)。
  2. 我们使用两条线:MAIN (主线) 和 SIGNAL (信号线)。
  3. 您可以阅读 关于 CopyBuffer 函数的文档
  4. 2. 编写策略。在这种情况下,它是两条线的交叉。
  5. 重要:BUY (买入) 信号为 1,SELL (卖出) 信号为 -1
  6. 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和策略。

  1. 加载终端
  2. 开设一个模拟账户
  3. EA 附加到图表;
  4. 如果一切正常,您将收到有关成功添加策略的消息:
    • 策略添加成功消息
  5. 否则您将收到错误消息。在这种情况下,您需要仔细检查您的代码并重复所有步骤!

在策略测试器中检查EA:

  1. 打开终端
  2. 打开策略测试器
  3. 选择您的 EA货币对时间周期日期范围。启用基于真实跳动点的每个跳动点测试;
    • 策略测试器设置截图
  4. 打开设置标签页;
    • 设置标签页截图
  5. 选择您的策略
  6. 启用可视化
  7. START (开始)
  8. 应该会打开一个图表;
  9. 如果 EA 开仓,说明您一切都做对了!
    • 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 设置阶段方便地管理信号。

信号命名示例

例如:

  1. 您想将您的策略命名为 我的策略
  2. 策略编号也必须是唯一的。标准指标的信号占据了前 22 个数字!记住这个数字以备将来参考。
  3. 名称也必须是唯一的。例如,MYSTRATEGY1

最后,您应该在代码中这样写:

MYSTRATEGY1 = 77, // 我的策略

您还可以添加更多策略并这样写,例如:

  1. MYSTRATEGY1 = 77, // 我的策略 a
  2. MYSTRATEGY2 = 78, // 我的策略 b
  3. MYSTRATEGY3 = 79, // 我的策略 c

MetaTrader 4 步骤 2:指定用于在屏幕上显示的信号名称

// 步骤 2 ############################################## ###################### 
// 这部分代码用于在开源代码中编写您的策略 
// 这部分代码用于在开源代码中编写您的策略 
// 
// 在 // 后输入将显示在屏幕上的信号名称 
// 在 // 后输入将显示在屏幕上的信号名称 
// ################################################ #################### 
// 例如: 
// * if (i == 77) s1 = "Custom"; 
// ################################################ ###########################

此步骤用于在我们的 EApadpro EA 面板中显示您的策略名称。

没有什么复杂的!但是您必须使用上一步中的数字。

信号名称显示示例

例如:

  1. if (i == 77) s1 = “My1”;
  2. if (i == 78) s1 = “My2”;
  3. if (i == 79) s1 = “My3”;

MetaTrader 4 步骤 3:指定筛选器名称

// 步骤 3 ############################################## ###################### 
// 这部分代码用于在开源代码中编写您的策略 
// 这部分代码用于在开源代码中编写您的策略 
// 
// 在 // 后输入您的筛选器名称 
// 在 // 后输入您的筛选器名称 
// ################################################ #################### 
// 例如: 
// * FILTERCustom = 77, // 用于开源的筛选器 
// ################################################ ###########################

在这一步,我们需要将我们的 筛选器 添加到 EA 中可能的筛选器列表中。

这允许在 EA 设置阶段方便地管理筛选器。

通常,筛选器 使用与 信号 相同的指标,条件是 筛选器 确定 信号 的当前位置,而 信号 确认交易操作。

筛选器和信号之间的差异示例

例如:

  1. 您想将您的 筛选器 命名为 我的筛选器 吗?
  2. 筛选器的编号也应与策略的编号匹配 (这样做是为了避免将来与标准指标编号混淆)。筛选器占据了为标准指标保留的前 22 个数字!记住这个数字以备将来参考。
  3. 名称也必须是唯一的。例如,MYFILTER1

最后,您应该在代码中这样写:

MYFILTER1 = 77, // 我的筛选器

您还可以添加更多筛选器并这样写,例如:

  1. MYFILTER1 = 77, // 我的筛选器 a
  2. MYFILTER2 = 78, // 我的筛选器 b
  3. 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将无法运行。

我在代码中添加了注释!

策略编号与前面步骤中的编号一致!

  1. 分别为策略和信号编写代码。这取决于所选的策略和指标。设置策略缓冲区…
  2. 我想指出,在此模块中,您可以指定任何策略。
  3. 我们在句柄中声明的所有指标都将加载到内存中并用于构建策略。
策略缓冲区示例

此步骤可分为 2 个子步骤:

  1. 1. 编写策略。 在这种情况下,它是两条线的交叉。
  2. 重要: BUY (买入) 信号1SELL (卖出) 信号-1
  3. 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和策略。

  1. 加载终端
  2. 开设一个模拟账户
  3. EA 附加到图表;

在策略测试器中检查EA:

  1. 打开终端
  2. 打开策略测试器
  3. 选择您的 EA货币对时间周期日期范围。启用基于真实跳动点的每个跳动点测试;
    • 策略测试器选择截图
  4. 打开设置标签页;
    • 策略测试器设置标签页截图
  5. 选择您的策略
  6. 启用可视化
  7. START (开始)
  8. 应该会打开一个图表;
  9. 如果 EA 开仓,那么您一切都做对了!
    • 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




    Please wait, contacting ...

     

    风险警告:


    过去的交易业绩并不保证未来的结果。

    保证金外汇交易具有高风险,可能不适合所有投资者。

    请注意,使用交易机器人涉及巨大风险,您的损失可能超过初始投资。

    请谨慎行事,仔细评估自己的财务状况,并考虑向合格的专业人士寻求建议。

    免责声明

    本网站使用Cookie以提升您的体验。通过使用本网站,您同意我们的 数据保护政策免责声明
    阅读更多