if(OrderType()==OP_BUY){bid_ask=MarketInfo("USDJPY",MODE_BID);}
if(OrderType()==OP_SELL){bid_ask=MarketInfo("USDJPY",MODE_ASK);}
if((OrderStopLoss()!=0)&&(OrderTakeProfit()!=0))
if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)&&(OrderSymbol()=="USDJPY"))
{
int usdjpy_ticket_number=OrderTicket();
OrderClose(OrderTicket(),OrderLots(),bid_ask,3,CLR_NONE);
if(OrderSelect(usdjpy_ticket_number,SELECT_BY_TICKET,MODE_TRADES)==true)
Print("Ticket number for USDJPY = ",usdjpy_ticket_number);
Print("Order close time = ",OrderCloseTime());
}
西蒙。
"你的while循环没有找到任何票据.. ."
它没有 "可能 "找到历史库中的票据索引,它确实找到了,否则下面的函数就不会被执行。)
"一个池子的索引!=一个票据号码,我们以前不是经历过这个吗?"
现在让我澄清一下。
一个订单的票号是分配给一个订单的唯一票号,一旦请求被发送。
一个订单位置号是一个订单在订单池 索引中的位置(必须理解),类似于一个数组。
"为什么你期望已关闭的USDJPY订单在一个完全不同的池,即历史池中的相同位置结束?"
我不应该,因为它是一个独立的池子。
在我提出的代码中--
这 显然是在从历史池中选择订单,对吗?至少这是我从文档中了解到的。另外,我最近试着在不同的货币对 上开了大约5个订单,关闭了一个,然后打开了EA,它仍然执行所有的功能,包括Print(OrderCloseTime());。
谢谢你。
西蒙。
"你的while循环没有找到任何票据.. ."
它没有 "可能 "找到历史库中的票据索引,它确实找到了,否则下面的函数就不会被执行。)
你从历史库中选择的是索引位置为i 的订单,你怎么知道 你刚刚关闭的订单是在i 的位置?你的i 值是USDJPY订单在订单池中的位置 ......这两个池子是完全独立的,没有任何形式的联系。
西蒙。
"你的while循环没有找到一张票,而是找到了订单池中 的一个索引。"
是的,我相信我理解这一点。这不应该是一个问题。
"这些池子是完全独立的,没有任何形式的联系。"
这一点可以理解,但OrderClose()函数的代码块似乎是按照它的意图工作。我将调整代码块以保存订单票号 的值,以便继续进行你想解决的问题。同意吗?
首先,我想问这个问题。为什么一个订单的历史库位号不会与它现在的库位号相同?我 相信这个 数字是一样的。
谢谢你。
西蒙。
"你的while循环没有找到一张票,而是找到了订单池中 的一个索引。"
是的,我相信我理解这一点。这不应该是一个问题。
"这些池子是完全独立的,没有任何形式的联系。"
这一点是可以理解的,但OrderClose()函数代码块似乎是按照它的意图工作的。
对OrderClose()的调用没有改变,所以它应该仍然工作。
然而,这并不像预期的那样工作,因为这个概念有致命的缺陷......直到你明白为什么没有必要继续下去。
首先,我想问这个问题。为什么一个订单的历史仓位号与现在的仓位号不一样?我 相信这个数字是一样的。
你有多少未结订单?你在账户历史标签中的历史上有多少订单?
西蒙。
'账户历史'包含五十六个。
'交易'(未结订单)包含三个。
我在等着你写,"我想它确实有效WhooDoo。:)"
Hooold on, I checked the returnedPrint() function ticket number and it returned a different ticket number than the USDJPY order.
不起作用。证实了这一点。不过我很高兴我尝试了,这个教训值得讨论。
谢谢你。
西蒙。
'账户历史'包含五十六个。
'交易'(未结订单)包含三个。
西蒙。
57.
谢谢你。
西蒙。
57.
谢谢你。
西蒙。
它不会的。我最近重新发现了这一点。
谢谢你。