关于OnTradeTransaction函数的问题 - 页 6

 
Mikalas:

不,交易不会丢失,只是可能不按一定的顺序来。

只有TRADE_TRANSACTION_REQUEST总是排在第一位,否则你将不会得到订单票。

仔细阅读文件。

迈克尔,对不起,但在我看来,你只回复了最后一个帖子,而这是这一页上第一个帖子所描述的一切的结果。

而且,听到你建议阅读文件,这很奇怪。我读了它,重读了它,又读了它。

你说的 "Warrant Ticket "是什么意思? 我在文件中没有看到它。

 
AlexeyVik:

迈克尔,我很抱歉,但在我看来,你只回应了最后一个帖子,而且是作为本页第一个帖子中描述的一切的结果。

而听到你建议阅读文件,似乎很奇怪。我读了它,重读了它,又读了它。

你说的 "订货单 "是什么意思? 我在文件中没有看到这个。

乌龙票是分配给一个订单的唯一号码。

这个数字在订单有效期 内以及在历史上都不会改变。

我们使用tikcet获得关于订单的信息。

 
Mikalas:

乌龙票是分配给一个已下订单的唯一号码。

这个数字在整个订单有效期 内以及在历史上都不会改变。

我们用tikcet获得有关订单的信息。

谢谢你,米哈伊尔。实际上,我以为你是指订单的票。但它应该更精确。


但是,门票的行为仍然相当奇怪。

例如:在测试器中运行的门票和卷。

我们在买入0.1手,票面2中建仓。卖出止损0.78票3被放置。

当SellStop被激活时,仓位剩下0.68;订单3的成交量为0.78,历史上出现负利润。

同时,有一个位置有票4

而且,绝对不清楚用2号票的位置的损失消失到哪里去了。


一般来说,我们不能总是相信所写的东西。因为它并没有完全写好。

如果一个仓位以挂单开仓,则票据保持不变,但如果订单关闭了另一个,则创建新的票据。

 

如果头寸和挂单在同一方向,票据也会发生同样的情况。票价变化。


 
AlexeyVik:

显然,这是交易的损失...而且,首先,(从文件中剪下),(从文件中剪下)。

瓦西里,这是一个测试器还是一个演示?我有测试者的样本。我想知道OnTradeTransaction在测试者和账户上的触发是否有区别?我偶尔会检查一下。

这是个演示。也许事件模型 在测试器中和在实时中是不同的。

 

我在MT5的Forts上有几个机器人。包括同一乐器上的几个。我通过浏览交易历史,来确定哪个 "机器人 "有多少份合同。一般来说,它是有效的。我已经决定尝试使用OnTradeTransaction。如何实现它的想法很简单--当一笔交易发生时,我们看看有多少合同被买入或卖出,以及什么波特进行了交易(使用对交易的特殊注释或神奇数字),并将这些信息保存在一个文件中。问题是这样的。如果我们在每个EA中都有OnTradeTransaction,它将如何被顺序或平行地调用?假设,例如,已经执行了一笔交易--发生了很多事件,OnTradeTransaction将在每个Bot中为每个事件持续调用?也就是说,制作一个负责所有机器人的OnTradeTransaction处理程序是否更容易?如果有的话,我不是一个程序员,尽管我已经对很多东西进行了编程。代码可能很俗气,但我总是能让它正常工作。

 
votor:

我在MT5的Forts上有几个机器人。包括同一乐器上的几个。我通过浏览交易历史,来确定哪个 "机器人 "有多少份合同。这一切基本上是可行的。我已经决定尝试使用OnTradeTransaction。如何实现它的想法很简单--当一笔交易发生时,我们看看有多少合同被买入或卖出,以及什么波特进行了交易(使用对交易的特殊注释或神奇数字),并将这些信息保存在一个文件中。问题是这样的。如果我们在每个EA中都有OnTradeTransaction,那么它将如何按顺序或并行地被调用?假设,例如,已经执行了一笔交易--发生了很多事件,OnTradeTransaction将在每个Bot中为每个事件持续调用?也就是说,制作一个负责所有机器人的OnTradeTransaction处理程序是否更容易?如果有的话,我不是一个程序员,尽管我已经对很多东西进行了编程。代码可能很俗气,但我总是让它正常工作。

是的,OnTradeTransaction将在每个EA中发挥作用。它们应该按符号过滤,如果一个符号上有多个专家顾问,则按魔力过滤。

 

谢谢你的答复。我已经检查过了,我看到它在所有的EA中都有效。问题是(也许这是一个愚蠢的问题),如果所有这些OnTradeTransactions 是在所有EA中串联处理的,首先在一个EA中,然后在下一个,等等,而不是并行的,对吗? 我的意思是,由于它们的处理是顺序的(?),最好为所有机器人创建一个处理器,并在其中过滤我们需要的东西。

 
votor:

谢谢你的答复。我已经检查过了,我看到它在所有的EA中都有效。问题是(也许这是一个愚蠢的问题),如果所有这些在所有EA中的OnTradeTransaction 帖子是按顺序工作的,首先在一个EA中,然后在下一个,等等,而不是平行的,对吗? 我的意思是,既然它们的处理是按顺序的(?),最好为所有机器人创建一个处理程序,在其中过滤我们需要的东西。

我没有检查过,但似乎没有规律可循。这就像谁先站起来一样,不留余地。而且有可能,如果你在同一时间起床,那么每个人的拖鞋。

到目前为止,在我看来,按符号和魔术师过滤是最好的选择。他在谁的位置上写了关于它的信息。

 

显然,我不善于解释的东西。这里有一个现实生活中的例子。以下是代码。

void OnTradeTransaction(constMqlTradeTransaction& trans,

const MqlTradeRequest& request,

const MqlTradeResult& result)

{

数++。

Print("Ontrade_test = ",Count);

}

该处理程序在两个专家顾问系统中实现,因此当进行一次交易时,它在两个专家顾问系统中被多次执行。该代码输出。

18:31:06.495 ontrade_trans_functions (MXI-12.17,H1) Ontrade_test = 1

18:31:06.495 ontrade_trans_functions2 (MXI-12.17,H1) Ontrade_test = 1

18:31:06.497 ontrade_trans_functions (MXI-12.17,H1) Ontrade_test = 2

18:31:06.497 ontrade_trans_functions2 (MXI-12.17,M5) Ontrade_test = 2

18:31:06.498 ontrade_trans_functions (MXI-12.17,M5) Ontrade_test = 3

18:31:06.498 ontrade_trans_functions2 (MXI-12.17,H1) Ontrade_test = 3

18:31:06.500 ontrade_trans_functions (MXI-12.17,M5) Ontrade_test = 4

18:31:06.500 ontrade_trans_functions2 (MXI-12.17,H1) Ontrade_test = 4 ...

等等。

你可以看到,两个专家顾问系统的OnTradeTransaction 响应时间是相同的,单位是毫秒因此,我有一个问题:交易事件是先到一个EA的OnTradeTransaction,然后到另一个EA的下一个,还是以某种方式同时到达所有EA的所有处理程序?好吧,这就像一个并行的多线程操作或在编程中被称为的任何东西。我确信所有的事情都是按顺序发生的,只是在一毫秒内处理,但我问的是以防万一。