【发布时间】:2021-05-25 15:04:24
【问题描述】:
这是OrderClose()的正确实现吗?
for(int ii = 0; ii < OrdersTotal(); ii++)
{
if(OrderSelect(ii, SELECT_BY_POS, MODE_TRADES))
{
if(OrderType() == OP_BUY && OrderMagicNumber() == MagicStart && OrderSymbol() == symb)
{
int tikt = OrderTicket();
if(!OrderClose(tikt,OrderLots(),bid,4,clrPurple))
{
Print("Close Error", GetLastError());
}
}
if(OrderType() == OP_SELL && OrderMagicNumber() == MagicStart && OrderSymbol() == symb)
{
int tikt = OrderTicket();
if(!OrderClose(tikt,OrderLots(),ask,4,clrPurple))
{
Print("Close Error", GetLastError());
}
}
}
}
我在开始交易之前使用此代码。例如,如果有买入信号,则先关闭卖出,然后打开买入;如果有卖出信号,则先关闭卖出,然后打开买入。
但它只是第一次这样做,之后就不会工作了。假设有卖出信号。然后它将关闭买入并打开卖出,但是当有第二个买入信号时,它不会关闭卖出,也不会打开买入。
专家选项卡中没有错误。我在专家选项卡中收到的唯一信息是这样的消息:Positions order mismatch。它不像错误或警告那样显示,它只是作为消息显示。
【问题讨论】: