你好。
我试图在我的EA中检测一个停止执行。不幸的是,我只得到由 MqlTradeTransaction提供的DEAL_ENTRY_IN,传递给OnTradeTransaction。
这似乎只是回测中的情况。
有谁知道如何在回测中可靠地检测被触发的止损--最好是与价格和(部分)利润一起?
谢谢。
在OnTradeTransaction中,你必须检查:
trans.order_state = ORDER_STATE_PLACED;
紧随其后的是另一个交易,即:
trans.type = TRADE_TRANSACTION_DEAL_ADD;
在OnTradeTransaction中,你必须检查是否有 。
后面是另一个交易,其中有:
你好Angevoyageur。
请看一下我的转储。这个转储将所有交易打印到一个文件中。我的EA非常简单。它买入或卖出,并带有止损和目标。不幸的是,我在日志中找不到任何交易,即
与触发的止损或目标有关的交易。
20130507 00:26:59:672 entry short at 1.32176 <- entry short 20130507 00:26:59:672 symbol=EURUSD price=1.3217600 volume=0.01 sl=1.3229200 tp=1.3202000 order=2 deal=2 entry-type=IN trans-type=DEAL_ADD order_type=BUY deal_type=DEAL_TYPE_SELL type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit=0.00 20130507 00:26:59:672 symbol=EURUSD price=1.3217600 volume=0.01 sl=1.3229200 tp=1.3202000 order=2 deal=0 entry-type=IN trans-type=ORDER_DELETE order_type=SELL deal_type=DEAL_TYPE_BUY type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit=0.00 20130507 00:26:59:672 symbol=EURUSD price=1.3217600 volume=0.00 sl=1.3229200 tp=1.3202000 order=2 deal=0 entry-type=IN trans-type=HISTORY_ADD order_type=SELL deal_type=DEAL_TYPE_BUY type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit=0.00 20130507 00:26:59:672 symbol= price=0.0000000 volume=0.00 sl=0.0000000 tp=0.0000000 order=0 deal=0 entry-type=IN trans-type=REQUEST order_type=BUY deal_type=DEAL_TYPE_BUY type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit=0.00 /// before the entry long, the stop or target of entry short should be triggerd. /// The EA does not allow to enter new trade before latest is closed, simply by check current positions for symbol before open an entry tradde. 20130507 00:26:59:674 entry long at 1.32140 <- entry long 20130507 00:26:59:674 symbol=EURUSD price=1.3214000 volume=0.01 sl=1.3200900 tp=1.3231100 order=3 deal=3 entry-type=IN trans-type=DEAL_ADD order_type=BUY deal_type=DEAL_TYPE_BUY type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit=0.00 20130507 00:26:59:674 symbol=EURUSD price=1.3214000 volume=0.01 sl=1.3200900 tp=1.3231100 order=3 deal=0 entry-type=IN trans-type=ORDER_DELETE order_type=BUY deal_type=DEAL_TYPE_BUY type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit=0.00 20130507 00:26:59:674 symbol=EURUSD price=1.3214000 volume=0.00 sl=1.3200900 tp=1.3231100 order=3 deal=0 entry-type=IN trans-type=HISTORY_ADD order_type=BUY deal_type=DEAL_TYPE_BUY type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit=0.00 20130507 00:26:59:674 symbol= price=0.0000000 volume=0.00 sl=0.0000000 tp=0.0000000 order=0 deal=0 entry-type=IN trans-type=REQUEST order_type=BUY deal_type=DEAL_TYPE_BUY type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit=0.00 /// As you can see, my entry short shows transaction BUY, SELL, SELL what ever the purpose of this confusing transactions is. /// No a bit about stop or target orders
那么,如何获得止损和目标的交易?我在这里谈的是回溯测试。不知道在真实条件下是否也是如此。
你好,Angevoyageur。
请看一下我的转储。这个转储将所有交易打印到一个文件中。我的EA非常简单。它买入或卖出,并带有止损和目标。不幸的是,我在日志中找不到任何交易,即
与触发的止损或目标有关的交易。
那么,如何获得止损和目标的交易?我在这里谈的是回溯测试。不确定在真实条件下是否也是如此。
好吧,对不起,我误解了你的第一个问题,当你说 "触发的止损 "时,我想到的是一个挂单(买入止损或卖出止损)。
你确定你需要监控交易吗?如果你一次只做一笔交易,你可以用PositionSelect(_Symbol)简单地检查你的开仓情况。
好的,对不起,我误解了你的第一个问题,当你说 "触发的止损 "时,我想到的是一个挂单(买入止损或卖出止损)。
你确定你需要监控交易吗?如果你一次只做一笔交易,你可以用PositionSelect(_Symbol)简单地检查你的开仓情况。
你好。
为了检查一个头寸是否开放,我已经做了CPositionInfo.Select。
但是,一旦止损或目标被触发,如何获得已执行的止损或目标价格?有什么聪明的方法吗?
为什么不检查交易历史?
能否请你提供更多的细节。我需要执行的止损或目标价格。没有触发目标或止损的交易ID或票据(没有作为交易传递)。
历史记录提供了DEAL_PRICE,但我需要一个交易#或票据。应该选择哪种票据或交易?谢谢你。

- www.mql5.com
能否请你提供更多的细节。我需要执行的止损或目标价格。没有触发目标或止损的交易ID或票据(没有作为交易传递)。
历史记录提供了DEAL_PRICE,但我需要一个交易#或票据。应该选择哪种票据或交易?谢谢你。
当触发止损或止盈时,你有一个与你的交易相反的交易。例如,您有一个买入0.25手的仓位。当你的sl/tp被触发时,你将有一个卖出类型的交易,你可以使用OnTradeTransaction来监控,或者当你知道你的头寸被关闭时,简单地查看交易历史。
你好,Angev。
这是我的问题:显然我不能使用OnTradeTransaction。请看我上面的日志。那里没有列出止损或目标订单--所以没有执行与止损或目标有关的交易。 转储是为传给OnTradeTransaction的每一笔交易而创建的。
再一次,我说的是回溯测试。
我唯一能做的就是测试你的代码,如果你提供的话。我没有这样的问题。
你好,angevoyageur。
我在附件中找到一个简单的EA,证明了这个问题。该EA开仓做多,并带有止损和目标,然后做空,再做多,如此循环。
也包含了一个抛售方法。只需应用EUR.USD 1分钟1周,观察回测 日志中的交易转储。
谢谢你的帮助。
你好。
我试图在我的EA中检测一个停止执行。不幸的是,我只得到由 MqlTradeTransaction提供的DEAL_ENTRY_IN,传递给OnTradeTransaction。
这似乎只是回测中的情况。
有谁知道如何在回测中可靠地检测被触发的止损--最好是与价格和(部分)利润一起?
谢谢你