文章 "如何将MetaTrader 5中的交易复制到MetaTrader 4"

 

新文章 如何将MetaTrader 5中的交易复制到MetaTrader 4已发布:

如今,在MetaTrader 5的实盘帐户上进行交易是否可行?如何进行此类交易?本文不仅从理论上解答这些问题,同时还提供可用的源代码,让你能够把MetaTrader 5终端上的交易复制到MetaTrader 4。本文对EA交易的开发者和练习交易者都非常有用。

引言

曾几何时,许多交易者都认为MetaTrader 5对于实盘交易来说是一个不成熟的、不可靠的平台。但是没多久,公众看法就发生了改变,现在大家都在问MetaTrader 5何时能具备实盘交易的能力。许多交易者已经对MetaTrader 5的优点大加赞赏了。另外,由MetaQuotes软件公司举办的交易锦标赛引起了广大MQL5语言开发者的兴趣。现在,这种兴趣转化为从交易中获利的愿望。“何时MetaTrader 5才能具备实盘交易能力?”这个问题公众问错了对象。它应该由经纪商来回答。何时转到新平台上来的最终决定权在他们手上。

然 而面对这种情况,一个普通交易者能做什么呢?答案显而易见,你可以利用MetaTrader 4提供的实盘交易机会,作为MetaTrader 5交易的载体。例如,写一个拷贝工具。将两个MetaTrader 4终端在Web上进行捆绑并不是一件新鲜事。现在我们要实现MetaTrader 4和MetaTrader 5之间的捆绑。

序言

为 了将前面提到的想法付诸实施,有必要阐明如下问题:“利润来自哪里?”以及“交易者如何把控利润的增长?”咋一看,答案显而易见。低买高卖。但是,让我们 考虑一下利润的组成部分。利润来源于买卖的价差和下单数量的乘积。也就是说,利润有两个组成部分:报价和交易头寸的交易量。

交易者能够控制什么呢?这两个组成部分哪一个才是能够被交易者把控的呢?当然是交易头寸的交易量了。报价来自于经纪商,交易者无法改变。那么得到的第一个结论是:为了实现交易复制,必须保持交易头寸交易量的同步。

作者:Nikolay Demko

 

也许这是今天最有趣的话题。

至少对我个人来说,这是最有趣的一篇文章。

 

我同意,这个话题在当前是有意义的。它允许不等待区议会摇摆。

 

这篇文章很有用,也很有针对性,感谢作者!


有一点令人困惑:

Чтобы не пропустить момент изменения позиции, следящая система должна быть реализована в функции OnTimer(), т.к. следить придется за всеми инструментами сразу, а тики приходят на разных символах в разное время. Также требуется передать сигнал об изменении содержимого файла.

为什么不是OnTrade()

 
komposter:

为什么不是OnTrade()

我同意,正常的 OnTrade() 处理是必要的,高级驯兽师也是必要的。在任何 EA 中,缺少它们都是一个错误,尤其是在多人 EA 中...

作者白白拒绝了库,你可以用它们做更多的事(我说的不是专业软件)。

虽然这是对的,但我们有更多的想象空间:)

PS

我还希望看到不同时刻的例子,而不仅仅是平均值和金字塔法(我只看到过这两种方法,也许是我不够细心)。

我从这里开始:

1.2 交易头寸量

让我们详细了解一下,平仓的订单有区别吗?不会影响利润吗?例如,我们有两个在不同时间开仓、不同时间平仓的订单,但它们的有效期 有重叠。也就是说,让我们尝试在订单会计系统中模拟交易头寸。

让我们通过变量来计算一下,如果我们改变订单的平仓水平,利润会发生什么变化:

类型
成交量
开仓水平
平仓水平
卖出0.11.393881.38438
卖出0.11.38868
1.38149
 

我想就 DLL 和附加软件补充几句。

目前,我正在考虑一种变体,它可以在 DLL 的帮助下传输信号和交换信息(必须可以使用 ini-files)。

我认为最大的任务(我长久以来的梦想)是开发一个服务器,其主要任务是收集和处理来自不同平台的信息(最好还能收集和处理来自多个客户端的信息)。

 
Interesting:

我同意,缺少计时器是任何 moult.... 的一个缺陷。

作者放弃使用库是个错误,你可以用库做更多事情(我指的不是专业软件)。

虽然这是对的,但我们有更多的想象空间:)

PS

我还希望看到不同时刻的示例,而不仅仅是平均值和金字塔法(我只看到过这两种方法,也许是我不够细心)。

我从这里开始:

1.2 交易头寸量

让我们详细了解一下,平仓的订单有区别吗?不会影响利润吗?例如,我们有两个在不同时间开仓、不同时间平仓的订单,但它们的有效期 有重叠。也就是说,让我们尝试在订单会计系统中模拟交易头寸。

让我们通过变量来计算一下,如果我们改变订单的平仓水平,利润会发生什么变化:

类型
成交量
开仓水平
平仓水平
卖出0.11.393881.38438
卖出0.11.38868
1.38149

这个例子的重点是说明利润取决于投入预测的资金,在更复杂的情况下也是一样(只是不想在文章中加入大量证明相同事情的例子)。

关于库,我并不反对 ex5 库,但我不想使用 dll,因为这会打击最终用户的积极性。

实际上,谁会想在购买的同时感染木马呢?MQ 试图在其政策中坚持安全性。

所以我只是坚持他们的形象,因为没有 dll 就意味着代码是安全的。

 
komposter:

这篇文章很有用,也很有针对性,感谢作者!


有一点令人困惑:

为什么不是OnTrade()

这个想法很有趣,所有发送到服务器的信息都会在OnTrade() 中显示 但只需进行过滤,传输到文件中的不是请求,而是服务器对已执行订单的响应。

我只是没想到这个方向。

 
Urain:

这个例子的本质是要说明,利润取决于投入预测的资金,在更复杂的情况下也是一样(只是不想在文章中用大量的例子来证明同样的事情)。


只有当您将 MT4 交易流程调整到 MT5 时才会相同,否则在某些情况下可能会存在差异(而且差异很大)。

这里只举两个例子:"翻转 "和 "修剪"(如果写得足够紧凑,就不会占用太多篇幅)。

我确信,翻转和截断才是这类系统最 "棘手 "和最复杂的方面。

Urain

关于库,我并不反对 ex5 库,但我不想使用 dll,因为这会让最终用户望而却步。

实际上,谁会想在购买的同时感染木马呢。MQ 试图在其政策中坚持安全性。

因此,我只是在他们的形象上加了一笔,只要没有 dll,代码就是安全的。

至于 ex5 库,我同意(创建一个专门的类库可能是一个很好的解决方案),但有一个很大的 "但是"--仅基于 MQL5 的解决方案的功能远远不如 DLL 提供的所有可能性。

而 DLL 的问题比许多人想象的要容易解决,有两种选择:

1. 发布库的源代码;

2.将源代码提供给 MQ,让他们检查源代码、编译库并将其公开。

PS

我还会考虑同步两个平台的余额信息(当然,如果可能的话)。

 
Interesting:

只有当您将 MT4 交易流程调整到 MT5 时才会出现同样的情况,否则在某些情况下可能会出现差异(而且差异相当大)。

这里只举两个例子:"翻转 "和 "截断"(如果写得足够紧凑,就不会占用太多空间)。

我确信,翻转和截断才是此类系统最 "棘手 "和最复杂的方面。

至于 ex5 库,我同意(创建一个专门的类库可能是一个很好的解决方案),但有一个很大的 "但是"--仅基于 MQL5 的解决方案的功能远远不如 DLL 提供的所有可能性。

而 DLL 的问题比许多人想象的要容易解决,有两种选择:

1. 发布库的源代码;

2.将源代码提供给 MQ,让他们检查源代码、编译库并将其公开。

PS

我还会考虑同步两个平台的资产负债表信息(当然,如果可能的话)。

翻转和切割时都不会有差异,差异只出现在当前时刻的报价水平差异和执行滞后上。

理想情况下,如果 MT 之间的报价相同且滞后为 0,那么交易将带来相同的利润。

您明白了吧,利润是通过下注获得的。如果您在相同的时间、相同的终端、相同的报价下相同的注,您将获得相同的利润。

关于 dll,MQ 不可能深入研究每一个第三方代码,检查其安全性,而编译器 delphi 或 srp 并非每个人都有。您可以发布一个圣经的代码,然后用另一个编译文件代替。因此目前只能使用 ex5。

 
Urain:

这个想法很有意思,所有发送到服务器的信息都会在OnTrade() 中显示 但只需要过滤,不是将请求传送到文件,而是将服务器对已执行订单的响应传送到文件。

我只是没想到这个方向。

事实上,OnTrade 是处理仓位列表变化的理想场所。您只需对其进行初始化,以便在启动时立即复制现有交易(而不是在下一个交易事件 时)。

过滤事件非常简单--检查头寸列表,只有当列表中发生变化时才继续处理。