Follow Expforex

使用 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以提升您的体验。通过使用本网站,您同意我们的 数据保护政策免责声明
    阅读更多