文章 "构建自动运行的 EA(第 09 部分):自动化(I)"

 

新文章 构建自动运行的 EA(第 09 部分):自动化(I)已发布:

尽管创建自动 EA 并非一项非常困难的任务,但在缺乏必要知识的情况下可能会犯许多错误。 在本文中,我们将研究如何构建初级自动化,其中包括创建一个触发器来激活盈亏平衡和尾随停止价位。

下面的视频演示了该系统的操作情况。 对于那些想象这是不同或不起作用的人,请观看视频并得出自己的结论。 尽管为了理解正在发生的事情,最好的办法是编译 EA,并在模拟账户上自行测试。 以这样的方式,对整个系统的理解将更加扎实和清晰。

作者:Daniel Jose

 
你好,丹尼尔,我叫罗伯塔,请问如何在 metatrader 中激活此 EA?
 
robertamega #:
你好,丹尼尔,我叫罗伯塔,请问如何在 metatrader 中激活这个 EA?

您需要编译它,然后它就会出现在平台默认的其他智能交易系统中,然后您就可以像使用其他程序一样在图表上运行它了。

有一个细节:必须在平台上启用Algo Trading,它才能工作:

<< 禁用 Algo Trading ;

<< 启用智能交易;

 

达尼,我不知道如何编译,也不太懂编程,我刚刚开始使用这个 metatrader 系统,你能帮我吗?





Daniel Jose #:

您需要编译它,然后它就会出现在平台默认的其他专家顾问中,然后您就可以像使用其他程序一样在图表上运行它。

有一个细节:必须在平台上启用Algo Trading 才能运行:

<< 禁用 Algo Trading ;

<< 启用算法交易;

 
robertamega #:

达尼,我不知道如何编译,也不太懂编程,我刚刚开始使用这个 metatrader 系统,你能帮我吗?





在这种情况下,我可以向您推荐我正在 YOUTUBE 上制作的一个播放列表。 它非常基础,但目标群体正是刚刚入门的用户。视频很短,集中在一个特定主题上,但始终针对 MetaTrader 初学者。稍后看看,也许能帮你迈出第一步。但要注意在平台上实际操作的内容,因为您将使用您的经纪账户和真金白银...我只是说小心...

播放列表链接在这里 :https://www.youtube.com/watch?v=Q5rgggKuUY4&amp; list=PLpkiMqQzUzgA3fgPE1D-ZcjnEKVwgEg8z

Tutor 01
Tutor 01
  • 2022.12.24
  • www.youtube.com
Para melhor visualização utilize dispositivos com resolução Full HD.Esta será uma pequena sequencia de vídeos voltadas para explicar como operar usando o Me...
 

下午好,丹尼尔、

首先,感谢您分享您的知识,这对我帮助很大!

我有一个关于交易服务器如何理解止损单和止盈单 的问题,它们是被视为单独的订单,还是属于单个 "结构性头寸 "的一部分?换句话说,当头寸平仓时,交易服务器是否总是会删除止损单和止盈单呢?

当您在文章中评论 "跛脚 "风险时,以及当您评论为了在对冲账户中激活追踪止损,我们需要允许 2 个未结头寸时,这个问题就出现了。

谢谢

 
Mackilem 盈单 的问题,它们是被视为单独的订单,还是属于单个 "结构性头寸 "的一部分?换句话说,当头寸被平仓时,交易服务器是否总是会删除止损单和止盈单呢?

当您在文章中评论 "跛脚 "风险时,以及当您评论为了在对冲账户中激活追踪止损,我们需要允许 2 个未结头寸时,这个问题就出现了。

谢谢

怀疑是其中的一部分。提出疑问并不可耻。在不了解情况的情况下保持怀疑和传播信息是可耻的。

但是,让我们分头行动。先了解一种情况,再了解另一种情况。

->当您在服务器上下单或开仓时,有两种方式:当您发送订单时,订单或仓位上已经设置了止损和止赢。在这种情况下,您只需向服务器发送一个请求。如果您还没有在订单中设置止损或止盈,您可以稍后通过调整来实现。无论如何,您在服务器上只有一个订单或头寸。这就是很多人所说的 OCO 订单。 换句话说,当止损或止盈执行后,头寸将被平仓,一切就像您可能已经知道的 OCO 订单一样。我想您对此不会有任何疑问。

->现在我们有一个问题,我在这一系列文章中都提到过。OCO 订单或头寸并不表示您的止盈或止损不会被跳过。只有在特定价格发生交易时,它们才会被执行。为了防止订单被跳过,有些程序员不使用 OCO 订单,而是采用一些不同的方法。正是这种不同的做法往往会产生 "跛脚 "订单,即在订单簿中列出了一个订单,但没有任何其他订单覆盖该订单。在这种情况下,我们至少要使用两个指令来控制仓位。这样做可以避免跳过止损,因为即使价格跳过 OCO 订单,也不会跳过账簿中的订单,而账簿中的订单正是用来关闭 MARRA 中的未平仓头寸的...但是,这对 HEDGING 类型的账户不起作用,因为这类账户允许您在同一资产上同时持有买入和卖出头寸。这几乎就像二元期权一样......但在 NETTING 账户上使用这种两张订单的技术时,头寸会被平仓。但您必须小心谨慎,避免在账簿中保留散单。

要理解这一点,您确实需要阅读本系列的全部 15 篇文章,并尝试我演示的自动系统。但要在模拟账户上进行,包括外汇市场和股票市场。这样你才会真正明白我在说什么。不要仅凭想象来理解它应该或可能如何运行。在模拟账户上测试该系统,包括使用对冲账户的外汇交易和使用净额账户的 BOLSA ...😁👍

 
Daniel Jose #:

怀疑是其中的一部分。询问并不可耻。在不了解情况的情况下保持怀疑和传播信息是可耻的。

但让我们分头进行。先了解一种情况,再了解另一种情况。

->当您在服务器上下单或建仓时,您可以通过两种方式来完成:当您发送请求时,已经在要建仓的订单或仓位上设置了止损和止盈。在这种情况下,您只需向服务器发送一个请求。如果您还没有在订单中设置止损或止盈,可以稍后通过调整来实现。无论如何,您在服务器上只有一个订单或头寸。这就是很多人所说的 OCO 订单。 换句话说,当止损或止盈执行后,头寸将被平仓,一切就像您可能已经知道的 OCO 订单一样。我想您对此不会有任何疑问。

->现在我们有一个问题,我在这一系列文章中都提到过。OCO 订单或头寸并不表示您的止盈或止损不会被跳过。只有在特定价格发生交易时,它们才会被执行。为了防止订单被跳过,有些程序员不使用 OCO 订单,而是采用一些不同的方法。正是这种不同的做法往往会产生 "跛脚 "订单,即在订单簿中列出了一个订单,但没有任何其他订单覆盖该订单。在这种情况下,我们至少要使用两个指令来控制仓位。这样做可以避免跳过止损,因为即使价格跳过 OCO 订单,也不会跳过账簿中的订单,而账簿中的订单正是用来关闭 MARRA 中的未平仓头寸的...但是,这对 HEDGING 类型的账户不起作用,因为这类账户允许您在同一资产上同时持有买入和卖出头寸。这几乎就像二元期权一样......但在 NETTING 账户上使用这种两张订单的技术时,头寸会被平仓。但您必须小心谨慎,避免在账簿中保留松散订单。

要理解这一点,您确实需要阅读本系列的全部 15 篇文章,并尝试我演示的自动系统。但要在模拟账户上进行,包括外汇市场和股票市场。这样你才会真正明白我在说什么。不要仅凭想象来理解它应该或可能如何运行。在模拟账户上测试该系统,包括使用对冲账户的外汇交易和使用净额账户的 BOLSA ...😁👍


非常感谢您的解释。我现在完全理解了。

是的,我刚刚读完所有文章,很快就会开始测试。


干杯

 

您好,我一直在跟进并实施您的 EA,但我遇到了一个无法解决的错误。您能帮助我找出错误吗?错误如下


C_ManagerAce.mqh' C_ManagerAce.mqh

'C_Orders.mqh' C_Orders.mqh

'C_Terminal.mqh' C_Terminal.mqh

C_Terminal::GetTerminalInfos' - 无法访问私有成员函数 C_ManagerAce.mqh

查看函数 'C_Terminal::GetTerminalInfos' 的声明 C_Terminal.mqh

C_Terminal::FinanceToPoints' - 无法访问私有成员函数 C_ManagerAce.mqh

查看函数 'C_Terminal::FinanceToPoints' 的声明 C_Terminal.mqh

C_Terminal::GetTerminalInfos' - 无法访问私有成员函数 C_ManagerAce.mqh

查看函数 'C_Terminal::GetTerminalInfos' 的声明 C_Terminal.mqh

C_Terminal::FinanceToPoints' - 无法访问私有成员函数 C_ManagerAce.mqh

查看函数 'C_Terminal::FinanceToPoints' 的声明 C_Terminal.mqh

C_Terminal::GetTerminalInfos' - 无法访问私有成员函数 C_ManagerAce.mqh

查看函数 'C_Terminal::GetTerminalInfos' 的声明 C_Terminal.mqh


我使用了与您完全相同的代码,因为我正在重新学习编程。我拥有计算机科学学士学位。我不明白为什么在编译我的代码时会出现这些错误。请帮助我


 
kinghussle #:

您好,我一直在跟进并实施您的 EA,但我遇到了一个无法解决的错误。您能帮助我找出错误吗?错误是


C_ManagerAce.mqh' C_ManagerAce.mqh

'C_Orders.mqh' C_Orders.mqh

'C_Terminal.mqh' C_Terminal.mqh

C_Terminal::GetTerminalInfos' - 无法访问私有成员函数 C_ManagerAce.mqh

查看函数 'C_Terminal::GetTerminalInfos' 的声明 C_Terminal.mqh

C_Terminal::FinanceToPoints' - 无法访问私有成员函数 C_ManagerAce.mqh

查看函数 'C_Terminal::FinanceToPoints' 的声明 C_Terminal.mqh

C_Terminal::GetTerminalInfos' - 无法访问私有成员函数 C_ManagerAce.mqh

查看函数 'C_Terminal::GetTerminalInfos' 的声明 C_Terminal.mqh

C_Terminal::FinanceToPoints' - 无法访问私有成员函数 C_ManagerAce.mqh

查看函数 'C_Terminal::FinanceToPoints' 的声明 C_Terminal.mqh

C_Terminal::GetTerminalInfos' - 无法访问私有成员函数 C_ManagerAce.mqh

查看函数 'C_Terminal::GetTerminalInfos' 的声明 C_Terminal.mqh


我使用了与您完全相同的代码,因为我正在重新学习编程。我拥有计算机科学学士学位。我不明白为什么在编译我的代码时会出现这些错误。请帮助我

您报告的错误是由于试图访问类主体之外的类私有内容。我建议你先从简单的东西开始。为此,首先要了解什么是私有子句和公有子句。但更主要的是,为什么要使用其中一个或另一个。

 
嗨,丹尼尔,晚上好!祝贺你的文章,它们是很好的学习材料。你不打算把这些课程录制到 YouTube 上吗?我很想看看你。