[存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. - 页 414

 
inoy:

如果在该符号上有另一个比顾问自己的订单更早开启的订单,顾问将不会按时关闭订单。
秩序。如果其他人的订单稍后开放,或者没有其他订单,那么OrderClose功能就能正常工作。请告知错误出在哪里


错误在于你只取了指数为0的订单,而没有在未结订单中寻找它。
 
Roger:

错误之处在于,你只是取了一个指数为0的订单,而不是在未结订单中寻找它。

请原谅,但在那个变体中情况是类似的。
//---- закрытие позиции
if(OrdersTotal() > 0)
for(int i=OrdersTotal();i>=0;i--)
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol()==Symbol()&& OrderMagicNumber() == MagicNumber)
if ( iTime(Symbol(),0,0) >= OrderOpenTime()+SecondsClose )
if (OrderType() == OP_BUY)
OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),NormalizeDouble((Ask - Bid) * Point,Digits), DodgerBlue);
请您提供问题的正确解决方案,好吗?
 
Avelox:

如何通过以下表达式在指标中输出蜂鸣声。

如果(num1 == 9) {
ObjectCreate(""+i, OBJ_TEXT, 0, Time[i+1],High[i+1]+10*Point ) 。
ObjectSetText(""+i, ""+DoubleToStr(num1,0), 16, "Arial", RoyalBlue)。

}

如果你能比"你可以使用OBJ_SICICOCI,看看MQL4文档中的细节,它有一切!" 更详细。

我自己设法解决了这个问题。


ObjectCreate(""+i,OBJ_TEXT, 0, Time[i+1],High[i+1]+10*Point ) 。
ObjectSetText(""+i, ""+DoubleToStr(num1,0), 18, "Arial", RoyalBlue)。
PlaySound("havecall.wav"); }
 
inoy:

请原谅,但在这种情况下,情况是类似的。 你能不能好心地提供一个适当的解决方案来解决这个问题?

//---- закрытие позиции
if(OrdersTotal() > 0) 
{
  for(int i=OrdersTotal();i>=0;i--) 
  {
    OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
    if (OrderSymbol()==Symbol()&& OrderMagicNumber() == MagicNumber) 
    {
      if ( iTime(Symbol(),0,0) >= OrderOpenTime()+SecondsClose ) 
      {
         if (OrderType() == OP_BUY)
         {
            OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),NormalizeDouble((Ask - Bid) * Point,Digits), DodgerBlue);
         }
      }
   }
}
 

嗯,也是,取代

for(int i=OrdersTotal();i>=0;i--) 

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


И еще, не понял, что за элемент в функции (подчеркнуто красным)?

OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),NormalizeDouble((Ask - Bid) * Point,Digits), DodgerBlue);

 
for ( Expression_1;; Expression_2)// 无条件{// 开头的大括号运算符块,// 循环体可以由......组成循环体//......的几个运算符组成}// 结束的大括号

你能告诉我退出这样的循环的条件是什么吗?或者像这样的一个循环

For ( ; ; )// 缺席。表达式和条件{// 开头的大括号 一个运算符块, // 一个循环体可以由 // ... 几个运算符组成的循环体}// 结束的大括号
 
VladimirR:

你能告诉我退出这种循环的条件是什么吗?或其中之一


突破
 

维宁、罗杰--谢谢,这很有帮助。

NormalizeDouble((Ask - Bid) * Point,Digits)是指点差大的符号的滑点,例如XAUUSD。

 
inoy:

维宁、罗杰--谢谢,这很有帮助。

NormalizeDouble((Ask - Bid) * Point,Digits)是指点差大的符号的滑点,例如XAUUSD。


所以,你能想象它是0吗?首先,滑差应该是一个正整数,其次,差额应该除以,而不是乘以点。
 
先生们,如何 "训练 "EA不在夜间交易? 即终端时间在23和02小时之间(GMT)...Hour()>=2&Hour()<=23并没有帮助...