新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 455

 

你好!


机器人根据某些信号打开和关闭订单,但在订单关闭后,需要在同一方向上放置一个挂单,但只有一个。

也就是说,在挂单被放置、触发和关闭后,没有其他事情要发生,机器人在等待信号来打开一个常规订单。


你能告诉我如何实现这一点吗?

 
Snower: 日安!

机器人根据某些信号打开和关闭订单,所以我需要机器人在相同的方向上下一个挂单,但只有一个。

也就是说,在挂单被放置、触发和关闭后,不需要发生其他事情,机器人在等待信号来打开一个正常订单。

你能告诉我这是如何实现的吗?

这非常简单。在两个for循环中,你分析1)订单的历史,2)正在进行的订单。在分析的基础上,你弄清楚情况,并使用条件性的if语句来执行所需的行动。还是你需要更多的细节?

 
STARIJ:

就这么简单。在两个for循环中,你分析了1)历史订单和2)正在进行的订单。根据分析,你弄清了情况,并使用条件if语句来执行所需的行动。还是需要更多的细节?

如果你能详细说明,我将非常感激。

 
Snower: 如果你能详细说明,我将非常感激。

你想让我把哪部分拼出来? 或者全部拼出来?

 
LRA:

你想让我写哪一部分? 或者全部都写?

循环本身,ifs,我可以设置为

 
Vladislav Andruschenko:
)))我已经工作了10年,从来没有过这样的想法。你喜欢艰难的情况。

现在他们将是

 

这个代码的问题是什么? 有时它打开1个交易,有时打开2个?

我应该是每对交易最多1次,但我一定是在什么地方弄错了。


...
if(!Orderex(_Symbol))
{
   OrderSend(NULL,OP_SELL,lot,Bid,30,Bid+stop*Point,Bid-take*Point,NULL,magicf,0,clrRed);
}
...
bool Orderex(string symbol)
{
   for(int i=OrdersTotal(); i>0; i--)
      {
         OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
         if(OrderSymbol()==symbol && OrderMagicNumber()==magicf) return true;
      
      
      
      }


   return false;
}
 
Roman Sharanov:

这个代码的问题是什么? 有时它打开1个交易,有时打开2个?

我应该是每对交易最多1次,但我一定是在什么地方弄错了。


for(int i=OrdersTotal()-1; i>=0; i--)
 
Konstantin Nikitin:

而更有趣的是这个

for(int i = OrdersTotal(); i-- >=0;)
 
啊哈,是的,账户是从头开始的 :)
原因: