在给定时间和/或SL后自动关闭订单 - 页 4

 

请使用SRC 按钮来发布代码。. . .

 

也许你正试图关闭一个订单两次。

if (OrderType() == OP_BUY || OP_SELL) 
{
bool Closed = OrderClose(OrderTicket(),OrderLots(), OrderClosePrice(), UseSlippage, Red); 
openbuy = 0;
opensell = 0;
}


if (OrderType() == OP_SELL) 
{
Closed = OrderClose(OrderTicket(),OrderLots(), OrderClosePrice(), UseSlippage, Red); 
opensell = 0;
openbuy = 0; 
} 
}

你只需要一个......并使用......。

if (OrderType() <= OP_SELL) 

包括OP_SELL和OP_BUY,请阅读:https://docs.mql4.com/constants/trading

 

我把代码改成了这样。

for(int i = OrdersTotal() - 1; i >= 0; i--)
    {
    if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
       {
       if((OrderOpenTime()+3600) < TimeCurrent())
          { 
           if (OrderType() == OP_BUY)          
              {
               bool Closed = OrderClose(OrderTicket() ,OrderLots(), OrderClosePrice(), UseSlippage, Red);           
               openbuy = 0;
              }
           if (OrderType() == OP_SELL)          
              {
               Closed = OrderClose(OrderTicket() ,OrderLots(), OrderClosePrice(), UseSlippage, Red);  
               opensell = 0;
              }              
          }
       }
    }

现在我需要找出我是如何让代码在击中StopLoss或TakeProfit时将opensell和openbuy计数为0的。

 
nirvanamac:

我把代码改成了这样。

现在我需要找出如何让代码在打到StopLoss或TakeProfit时将opensell和openbuy计数为0的方法。


opensell = 0;
openbuy =0;
for(int i = OrdersTotal() - 1; i >= 0; i--)
    {
    if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))   //==> select also on magicnumber and symbol
       {
       if(OrderMagicnumber()== magicnumber && OrderSymbol()== Symbol() && OrderType() == OP_BUY){openbuy++;}
       if(OrderMagicnumber()== magicnumber && OrderSymbol()== Symbol() && OrderType() == OP_SELL){opensell++;}
       if((OrderOpenTime()+3600) < TimeCurrent() && OrderMagicnumber()== magicnumber && OrderSymbol()== Symbol())
          { 
           if (OrderType() == OP_BUY)          
              {
               bool Closed = OrderClose(OrderTicket() ,OrderLots(), OrderClosePrice(), UseSlippage, Red);           
               openbuy = openbuy-1;    //openbuy--;
              }
           if (OrderType() == OP_SELL)          
              {
               Closed = OrderClose(OrderTicket() ,OrderLots(), OrderClosePrice(), UseSlippage, Red);  
               opensell = opensell-1;    //opensell--;
              }              
          }
       }
    }

直接选择magicnumber和符号,这段代码将以更好的方式编写。

如果你按照你的方式使用它,那么你将关闭所有运行时间超过一小时的未平仓交易(也不是从这个开始)。

 
deVries:

直接选择magicnumber和符号,这段代码将以更好的方式编写。

如果你按照你的方式使用它,那么你将关闭所有运行时间超过一个小时的未平仓交易(也不是从这个开始)。


嗨,deVries......我已经试过了,现在将用TP和SL来检查......非常感谢......。
 

哇,现在看起来不错:)不是性能,而是带有SL和TP的EA。