voidOnTradeTransaction(constMqlTradeTransaction& trans,
constMqlTradeRequest& request,
constMqlTradeResult& result)
{
// Здесь надо поставить фильтр по типу транзакции// По символу и магику// и только если всё совпало, тогда
Count++; Print("Ontrade_test = ",Count);
}
显然,我不善于解释的东西。这里有一个现实生活中的例子。以下是代码。
等等。
我们可以看到,两个专家顾问系统中OnTradeTransaction 的响应时间都是毫秒 级的。因此,我有一个问题:"交易 "事件是先到一个EA的OnTradeTransaction,然后再到另一个EA的下一个,还是它以某种方式同时到达所有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的所有处理程序?好吧,这就像一个并行的多线程操作或在编程中被称为的任何东西。我确信一切都按顺序发生,只是在一毫秒内快速工作,但我问的是以防万一。
一个符号(m_symbol.Name())和一个魔法(m_magic)的OnTradeTransaction处理器。
先抓交易
贸易_交易_交易_添加
将交易添加到历史记录中。这是由订单执行或账户余额交易的结果。
然后我们看一下它是否是一个交易
拒绝接受
市场退出
OnTradeTransaction 事件是一个广播事件,你的终端执行的所有行动都被 "转储 "到那里。
只是,每个EA都要过滤自己的行动。
然后在每个类型中,我们按票据过滤,如果订单是异步发送的,那么
首先,我们通过其请求ID获得票据,然后我们通过票据进行过滤。
TRADE_TRANSACTION_REQUEST 事件总是排在第一位,其他事件 "随心所欲"。
添加
这一点已经讨论过很多次了。
在交易所交易中查到它
谢谢你,它似乎正在解决如何 "记录 "正确的交易。