Hatalar, hatalar, sorular - sayfa 847

 

Derleyici bana İngilizce bir şey ifade etti. Parantez bir program değildir, program genellikle bu parantez ve dengesiz bir parantez ile yanlıştır. Ve parantezler var. Lütfen bana hatayı nerede arayacağımı söyler misiniz?

'}' - beklenmedik program sonu Redo.mq5 3562 1
'{' - dengesiz parantezler 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);   
} 

//////////////////////////////////////////////////////////////////////////////////////////////
 
Sanırım sorun daha yüksek - işte bakıyorum, nasıl göründüğüm önemli değil, her şey doğru ..
 
Yedelkin :

Eh, zaten yukarıda ekledim. Tekrar ediyorum: Expert Advisor için "yeni" alıntı, OnTick() işlevinin bir sonraki yürütülmesinin tamamlanmasından hemen sonra gelen alıntı olacaktır, bu alıntı "çubuktaki ilk onay işareti" olmasa bile. Yeni bir çubuğun oluşması için bir şartınız var

ancak uzman "önceki" çubukta gelen teklifi işlemeyi bitirdikten sonra kontrol edilecektir. ..OnTick() işlevi 90 saniye boyunca yürütülür ve 00.00.00'da başlatılırsa, "M1'de yeni bir onay işaretinin koşulu en azından bir süre içinde yerine getirilecektir", yani: 00.01.30'dan sonra

Teşekkürler, böyle olması gerekiyor.
 
Dimka-novitsek :

Derleyici bana İngilizce bir şey ifade etti. Parantez bir program değildir, program genellikle bu parantez ve dengesiz bir parantez ile yanlıştır. Ve parantezler var. Lütfen bana hatayı nerede arayacağımı söyler misiniz?

'}' - beklenmedik program sonu Redo.mq5 3562 1
'{' - dengesiz parantezler Redo.mq5 3330 1

Belki kodu yazarken kaşlı ayraçlar eksiktir (derleyici ne derse desin)?

 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);   
   }
}
 
Teşekkürler!!
 
Üzgünüm, aynı soru. '{' gibi küfür ediyor - bazı operatörler Bracket.mq5 612 62'yi bekliyor 20-25 dakika veya belki daha uzun bir süredir ayrı bir Uzman Danışmanda sıralıyorum ve nedenini bulamıyorum, hepsi büyük
 /////////////////////////////////////////////////////////////////////// 

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 ;

           }

    }



  }
//+------------------------------------------------------------------+
parantez 6 kez vysvitili n-çifti, tüm eşleştirilmiş gibi. Ve çok karanlık değiller, çok fazla değiller. Her şeye bakıyorum, zpt'li noktalar, diğer parantezler.. Bak, lütfen, yapabilirsen!
 
Dimka-novitsek :
Üzgünüm, aynı soru. Bu '{' gibi yemin ediyor - bazı operatörler Bracket.mq5 612 62'yi bekliyor 20-25 dakika veya belki daha fazla bir süredir ayrı bir Expert Advisor'da yineliyorum ve nedenini bulamıyorum, hepsini çizdim büyük parantezler n-çiftlerinde 6 kez, her şey eşlenmiş gibi görünüyor. Ve çok karanlık değiller, çok fazla değiller. Her şeye bakıyorum, zpt'li noktalar, diğer parantezler.. Bak, lütfen, eğer yapabilirsen!

Kodun sadece sizin için değil herkes için anlaşılır olması için MetaEditor editöründe oldukça kullanışlı bir özellik bulunmaktadır. Buna Styler denir (ayrıntılar için bağlantıyı takip edin). Araçlar => Styler'da bulunur . Kısayol tuşları Ctrl+, . Deneyin ve anlamanız daha kolay hale gelecektir. ))

 
Evet, şu anda, üzgünüm.
 
/////////////////////////////////////////////////////////////////////// 

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 ;

                }

    }



}
//+------------------------------------------------------------------+
Burada sadece üç çift temel parantez var.
 
Dimka-novitsek :
Burada sadece üç çift temel parantez var.

Derleyici, tökezlediği satırı gösterir. Bir dahaki sefere bu satırları vurgulamalıyız. Ve sonra vlomy "612. satır ve imlecin 62. konumu"nu arar.

İşte bu satırda

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

Doğru ve yanlışın parantez içine alınmamasını sevmiyorum. Bilmiyorum belki dil böyle bir kayda izin veriyor ama Feng Shui'ye göre şöyle olmalı:

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