首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有适当的误差反馈,OrderClose不能在MQL4中工作

没有适当的误差反馈,OrderClose不能在MQL4中工作
EN

Stack Overflow用户
提问于 2021-02-22 22:59:03
回答 1查看 617关注 0票数 0

因此,我有这个EA,应该在一定条件下结束两个交易。有时它只关闭1/2,有时两者都很顺利地关闭。我不能真正确定它关闭的时间,只有一次,并检测到一个模式,这样我就可以发现逻辑错误。

P.S.:很明显,在1张图表/对的范围内,交易来自不同对的EA。

错误消息是: OrderClose函数的无效票证

但是交易显然是存在的,我确保每次重新启动EA时,我都会在int中找到它,如果交易已经打开(通过评论检测到),它就会有这样的信息:“购买交易:票证号码,确认”。因此,我知道,事实上,它是公认的,并在适当的int内使用。对错误的来源有什么想法吗?

代码语言:javascript
复制
OrderClose(TicketA,LotSize,iClose(NULL,0,0),Slippage,clrGray);
OrderClose(TicketB,LotSize,iClose(SymbolB,0,0),Slippage,clrGray);

这个能解决这个问题吗?我是说..。它将被误判2/4的关闭命令..。但我并不在乎它有多漂亮。

代码语言:javascript
复制
OrderClose(TicketA,LotSize,Ask,Slippage,clrGray);
OrderClose(TicketB,LotSize,Bid,Slippage,clrGray);
OrderClose(TicketA,LotSize,Ask,Slippage,clrGray);
OrderClose(TicketB,LotSize,Ask,Slippage,clrGray);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-24 00:19:44

确保您没有在某个地方重写TicketATicketB变量。

您可以使用OrderLots()函数而不是使用LotSize,特别是当此值在EA过程中发生更改时。此外,通过检查OrderType(),您将避免在收盘价上出现错误。

示例:

代码语言:javascript
复制
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的收盘价

示例:

代码语言:javascript
复制
MarketInfo("EURUSD",MODE_BID);

检查MarketInfo()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66324667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档