如何解决如果没有正确的错误反馈,OrderClose 在 MQL4 中不起作用
所以我有这个 EA,它应该在某些条件下关闭 2 笔交易。有时它只关闭 1/2,有时它平滑地关闭。我无法确定它只关闭一个的时间并检测一种模式以便我可以发现逻辑错误。
P.S.:显然,交易来自 1 个图表/对内的 EA 运行的不同对。
错误信息是这样的: OrderClose 函数的无效票据
但是交易显然存在,并且我确保每次重新启动 EA 时我都将它包含在 int 中,如果交易已经打开(通过评论检测到),它会显示如下消息: “购买交易:[票号],已确认。” 所以我知道事实上它是被认可的,并且在适当的 int 范围内被使用。对错误来源有任何想法吗?
OrderClose(TicketA,LotSize,iClose(NULL,0),Slippage,clrGray);
OrderClose(TicketB,iClose(SymbolB,clrGray);
这会解决这个问题吗?我的意思是......它会被错误的 2/4 关闭订单......但我真的不在乎它看起来有多漂亮。
OrderClose(TicketA,Ask,Bid,clrGray);
OrderClose(TicketA,clrGray);
解决方法
确保您没有在某处覆盖 TicketA
或 TicketB
变量。
您可以使用 OrderLots()
函数代替 LotSize
,尤其是在 EA 过程中该值发生变化时。此外,通过检查 OrderType()
,您将避免在收盘价时出错。
示例:
if(yourCloseCondition){
if(OrderSelect(ticket,SELECT_BY_TICKET)){
if(OrderType() == OP_BUY){
if(OrderClose(ticket,OrderLots(),Bid,0)){
//Print("success");
}
}
if(OrderType() == OP_SELL){
if(OrderClose(ticket,Ask,0)){
//Print("success");
}
}
}
}
还要检查文档:OrderClose() 和 OrderType()。
更新:
对于在 1 个图表内运行的不同货币对,使用 MarketInfo
的收盘价
示例:
MarketInfo("EURUSD",MODE_BID);
检查MarketInfo()。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。