因此,我有这个EA,应该在一定条件下结束两个交易。有时它只关闭1/2,有时两者都很顺利地关闭。我不能真正确定它关闭的时间,只有一次,并检测到一个模式,这样我就可以发现逻辑错误。
P.S.:很明显,在1张图表/对的范围内,交易来自不同对的EA。
错误消息是: OrderClose函数的无效票证
但是交易显然是存在的,我确保每次重新启动EA时,我都会在int中找到它,如果交易已经打开(通过评论检测到),它就会有这样的信息:“购买交易:票证号码,确认”。因此,我知道,事实上,它是公认的,并在适当的int内使用。对错误的来源有什么想法吗?
OrderClose(TicketA,LotSize,iClose(NULL,0,0),Slippage,clrGray);
OrderClose(TicketB,LotSize,iClose(SymbolB,0,0),Slippage,clrGray);这个能解决这个问题吗?我是说..。它将被误判2/4的关闭命令..。但我并不在乎它有多漂亮。
OrderClose(TicketA,LotSize,Ask,Slippage,clrGray);
OrderClose(TicketB,LotSize,Bid,Slippage,clrGray);
OrderClose(TicketA,LotSize,Ask,Slippage,clrGray);
OrderClose(TicketB,LotSize,Ask,Slippage,clrGray);发布于 2021-02-24 00:19:44
确保您没有在某个地方重写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, OrderLots(), Ask, 0)){
//Print("success");
}
}
}
}还可以检查docs:OrderClose()和OrderType()。
更新:
对于在1张图表内运行的不同对,请使用MarketInfo的收盘价
示例:
MarketInfo("EURUSD",MODE_BID);检查MarketInfo()。
https://stackoverflow.com/questions/66324667
复制相似问题