错误、漏洞、问题 - 页 847

 

编译员用英语向我表达了一些意思。支架上的东西不是一个程序,这个支架上的程序总体上是错误的,支架是不平衡的。但也有括号。能否请您告诉我在哪里寻找错误?

'}'- 程序结束时出现错误 Redo.mq5 3562 1
'{' - 不平衡的括号 Redo.mq5 3330 1

//////////////////////////////////////////////////////////////////////////////////////////////

int waitIfBusy() 
{   
   for (int Yx = 0;  MQL5InfoInteger(MQL5_TRADE_ALLOWED) && Yx < 50; Yx++) Sleep(125);   
   if (Yx >= 50) Print("Торговый поток занят больше ", DoubleToString(25 * Yx / 1000, 2), " секунд");
   else if (Yx > 0) Print("Торговый поток был занят ", DoubleToString(25 * Yx / 1000, 2), " секунд");   
   return (Yx);   
} 

//////////////////////////////////////////////////////////////////////////////////////////////
 
我相信问题出在更高的地方------这样看的话,就可以了......
 
Yedelkin:

嗯,我已经在上面完成了。让我重复一遍:专家顾问的 "新 "报价是在下一个OnTick()函数完成后立即到达的报价,即使这个报价不是 "条形图上的第一个点"。 你的新条形图的条件是

...如果OnTick()函数 执行了90秒,并在00.00.00开始,"M1上的新刻度线的条件将至少执行一次,即在00.01.30之后。

谢谢,应该是这样的。
 
Dimka-novitsek:

编译员用英语向我表达了一些意思。支架上的东西不是程序,程序总体上是错误的,这个支架和不平衡的支架。但也有括号。请告诉我,在哪里可以寻找到错误?

'}'- 程序意外结束 Redo.mq5 3562 1
'{' - 不平衡的括号 Remake.mq5 3330 1

也许在写代码时缺少大括号(不管编译器怎么说)?

int waitIfBusy() 
{   
   for (int Yx = 0;  MQL5InfoInteger(MQL5_TRADE_ALLOWED) && Yx < 50; Yx++) 
   {
    Sleep(125);   
   if (Yx >= 50) Print("Торговый поток занят больше ", DoubleToString(25 * Yx / 1000, 2), " секунд");
   else 
     if (Yx > 0) Print("Торговый поток был занят ", DoubleToString(25 * Yx / 1000, 2), " секунд");   
   return (Yx);   
   }
}
 
谢谢你!!!。
 
对不起,同样的问题。它说'{'--一些操作者预期的小括号.mq5 612 62 我已经在一个单独的EA中尝试了大约20-25分钟,我找不到原因。
/////////////////////////////////////////////////////////////////////// 

bool OrderClose(string Symb)
  {



    PositionSelect(Symb);  Print("Start@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");

   long PositionID=0;
    PositionID=PositionGetInteger(POSITION_IDENTIFIER);//Идентификатор позиции - это уникальное число, которое присваивается каждой вновь открытой позиции и не изменяется в течение всей ее жизни. Переворот позиции не изменяет идентификатора позиции.

     Print("PositionID");
    Print(PositionID);
   HistorySelect(
                 TimeCurrent()-(60*60*24*7*4),// с даты
                 TimeCurrent() // по дату
                 );

     for(int i=0; HistoryDealsTotal()>i; i++) 
   
     {
      ulong TicetSdelki;
      TicetSdelki=
                  HistoryDealGetTicket(
                  i        // номер сделки
                 );

                   long  HistoryID=HistoryDealGetInteger(
                  TicetSdelki,// тикет
      DEAL_POSITION_ID          // идентификатор свойства
      );                          //Идентификатор позиции, в открытии, изменении или закрытии которой участвовала эта сделка. Каждая позиция имеет уникальный идентификатор, который присваивается всем сделкам, совершенным на инструменте в течение всей жизни позиции.

                                  // Print ( i ); Print ( "HistoryID" ); Print ( HistoryID ); 
      if(HistoryID!=0 && PositionID!=0 && PositionID==HistoryID)
        {
         ulong TicetTojSdelki; TicetTojSdelki=TicetSdelki;

         string TYP="";
         if(HistoryDealGetInteger(TicetTojSdelki,DEAL_TYPE)==DEAL_TYPE_BUY){ TYP="OP_SELL";}
         if(HistoryDealGetInteger(TicetTojSdelki,DEAL_TYPE)==DEAL_TYPE_SELL){ TYP="OP_BUY";}
         ulong resultat=OrderSendSELLi(Symbol(),TYP,HistoryDealGetDouble(TicetTojSdelki,DEAL_VOLUME),10,10,
                                       ASK(Symbol())+300 *SymbolInfoDouble(Symbol(),SYMBOL_POINT),BID(Symbol())-300 *SymbolInfoDouble(Symbol(),SYMBOL_POINT)," com ",600,600,0);
       
         if(resultat==10009)return true;else  return false;

           }

    }



  }
//+------------------------------------------------------------------+
我从P上看了6次,似乎都是成对的。而且他们不是那么黑,不是那么多。我什么都在看,有点子的点子,其他的括号......如果可以的话,请看一看!
 
Dimka-novitsek:
对不起,同样的问题。它说'{'--一些操作者预期的小括号.mq5 612 62我在一个单独的EA中尝试了大约20-25分钟或者更多,我找不到原因,所有的大括号我都看到了6次,都是成对的。而且他们不是那么黑,不是那么多。我什么都在看,有点子的点子,其他的括号......如果可以的话,请看一看!

为了使代码不仅对你而且对其他人都能理解,在MetaEditor 中有一个非常有用的功能。它被称为Styler(点击此链接了解详情)。点击工具=>造型器。快捷键Ctrl+, . 试试吧,这将有助于你理解它。))

 
是的,马上,对不起。
 
/////////////////////////////////////////////////////////////////////// 

bool OrderClose(string Symb)


{



    PositionSelect(Symb);  Print("Start@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");

   long PositionID=0;
    PositionID=PositionGetInteger(POSITION_IDENTIFIER);//Идентификатор позиции - это уникальное число, которое присваивается каждой вновь открытой позиции и не изменяется в течение всей ее жизни. Переворот позиции не изменяет идентификатора позиции.

     Print("PositionID");
    Print(PositionID);
   HistorySelect(
                 TimeCurrent()-(60*60*24*7*4),// с даты
                 TimeCurrent() // по дату
                 );

     for(int i=0; HistoryDealsTotal()>i; i++) 
   
     {
                     ulong TicetSdelki;
                     TicetSdelki=
                     HistoryDealGetTicket(
                     i        // номер сделки
                     );

                     long  HistoryID=HistoryDealGetInteger(
                     TicetSdelki,// тикет
                     DEAL_POSITION_ID          // идентификатор свойства
                     );                          //Идентификатор позиции, в открытии, изменении или закрытии которой участвовала эта сделка. Каждая позиция имеет уникальный идентификатор, который присваивается всем сделкам, совершенным на инструменте в течение всей жизни позиции.

                                  // Print ( i ); Print ( "HistoryID" ); Print ( HistoryID ); 
                if(HistoryID!=0 && PositionID!=0 && PositionID==HistoryID)
                {
                            ulong TicetTojSdelki; TicetTojSdelki=TicetSdelki;
                            string TYP="";
                            if(HistoryDealGetInteger(TicetTojSdelki,DEAL_TYPE)==DEAL_TYPE_BUY){ TYP="OP_SELL";}
                            if(HistoryDealGetInteger(TicetTojSdelki,DEAL_TYPE)==DEAL_TYPE_SELL){ TYP="OP_BUY";}
                            ulong resultat=OrderSendSELLi(Symbol(),TYP,HistoryDealGetDouble(TicetTojSdelki,DEAL_VOLUME),10,10,
                            ASK(Symbol())+300 *SymbolInfoDouble(Symbol(),SYMBOL_POINT),BID(Symbol())-300 *SymbolInfoDouble(Symbol(),SYMBOL_POINT)," com ",600,600,0);
       
                            if(resultat==10009)return true;else  return false;

                }

    }



}
//+------------------------------------------------------------------+
只有三对基本括号
 
Dimka-novitsek:
只有三对括号

编译器指出了它跳过的那一行。下一次,你应该强调这样的线条。要找到 "第612行和第62个光标位置 "是件很麻烦的事。

在这条线路上。

if(resultat==10009)return true;else  return false;

我不喜欢true和false没有被括号包围。我不知道语言是否允许,但在fen-shui中应该是这样写的。

if(resultat==10009) 
    return(true);
else  
    return(false); 
原因: