dengesiz parantezler

 

Parantezleri nasıl doğru yerleştireceğimi bulamıyorum. Lütfen hatamın ne olduğunu açıklayın.

 int start()
  { 
//----
   { 
   pending = ExistOrders( NULL );
   if (pending > 0 ) { return ;}
   positions = ExistPositions( NULL );
   if (positions > 0 ) { return ;}
   } else { 
   ticket= OrderSend ( Symbol (),OP_SELL, 0 , 1 ,Bid, 3 ,Bid+ 20 * Point ,Bid- 40 * Point , "" ,magic, 0 , Red );}
   }
   
//----
   return ( 0 );
  }
 
liana :

Parantezleri nasıl doğru yerleştireceğimi bulamıyorum. Lütfen hatamın ne olduğunu açıklayın.

en uzun satırda ekstra kıvrımlı kapanış ayracı
 
int start() { 
//----
   pending = ExistOrders( NULL );
   if (pending > 0 ) return ( 0 ); // если оператор одиночный фигурные скобки можно не ставить
   positions = ExistPositions( NULL );
   if (positions > 0 ) {
       return ( 0 );     // хотя со скобками тоже правильно
   }
   else { // else относится к ближайшему if
      ticket= OrderSend ( Symbol (),OP_SELL, 0 , 1 ,Bid, 3 ,Bid+ 20 * Point ,Bid- 40 * Point , "" ,magic, 0 , Red );   
   }
//----
   return ( 0 );
}

bunu yapabilirsiniz, ancak kod daha fazla satır alır:

 int start() 
{ 
//----
   pending = ExistOrders( NULL );
   if (pending > 0 ) 
       return ( 0 ); // если оператор одиночный фигурные скобки можноне ставить
   positions = ExistPositions( NULL );
   if (positions > 0 ) 
   {
       return ( 0 );     // хотя со скобками тоже правильно
   }
   else 
   { 
      // else относится к ближайшему if
      ticket= OrderSend ( Symbol (),OP_SELL, 0 , 1 ,Bid, 3 ,Bid+ 20 * Point ,Bid- 40 * Point , "" ,magic, 0 , Red );   
   }
//----
   return ( 0 );
}

Bunu da yapabilirsiniz, ancak düzenleme sırasında rahatsızlıklar vardır:

 int start() 
{  pending = ExistOrders( NULL );
   if (pending > 0 ) 
       return ( 0 ); // если оператор одиночный фигурные скобки можноне ставить
   positions = ExistPositions( NULL );
   if (positions > 0 ) 
   {   return ( 0 );     // хотя со скобками тоже правильно
   }
   else 
   { // else относится к ближайшему if
      ticket= OrderSend ( Symbol (),OP_SELL, 0 , 1 ,Bid, 3 ,Bid+ 20 * Point ,Bid- 40 * Point , "" ,magic, 0 , Red );
   }
//----
   return ( 0 );
}

örneğin, açılış parantezinin bulunduğu satırı silmeniz veya taşımanız gerekiyorsa, ek manipülasyonlar yapmanız gerekir.

Yani seçenek 1 daha iyi.

 
ilunga :
en uzun satırda ekstra kıvrımlı kapanış ayracı

Kaldırırsam - "bitiş freni bekleniyor" yazar
 
valenok2003 :


Sürümünüzü kopyaladım - yine "dengesiz parantezler" yazıyor
 
liana :

Sürümünüzü kopyaladım - yine "dengesiz parantezler" yazıyor

evet anladım hemen düzeltiyorum
 
int start() { 
//----
   pending = ExistOrders(NULL);
   if(pending > 0 ) return(0); // если оператор одиночный фигурные скобки можно не ставить
   positions = ExistPositions(NULL);
   if(positions > 0 ) {
      return(0);     // хотя со скобками тоже правильно
   }
   else { // else относится к ближайшему if
      ticket=OrderSend(Symbol(),OP_SELL,0,1,Bid,3,Bid+20*Point,Bid-40*Point,"",magic,0,Red);
   }
//----
   return(0);
}
 

Nedense, tüm seçenekleriniz bir nedenden dolayı "bitiş freni bekleniyor" gösteriyor. Sebebi nedir?

valenok2003 :

bunu yapabilirsiniz, ancak kod daha fazla satır alır:

Bunu da yapabilirsiniz, ancak düzenleme sırasında rahatsızlıklar vardır:

örneğin, açılış parantezinin bulunduğu satırı silmeniz veya taşımanız gerekiyorsa, ek manipülasyonlar yapmanız gerekir.

Yani seçenek 1 daha iyi.

 

İşte kodun tamamı. Düzeltmediğim için "bitiş freni bekleniyor", ardından "dengesiz parantezler" yazıyor.

Yardım edin, bir saattir bu parantezlerle uğraşıyorum.
Açık ve bekleyen emir olup olmadığını kontrol etmek ve ardından bir emir açmak istiyorum.

 int pending;
int positions;
int ticket;
int magic= 576 ;

int start() { 
//----
   pending = ExistOrders( NULL );
   if (pending = True ) return ( 0 ); // ???? ???????? ????????? ???????? ?????? ????? ?? ???????
   positions = ExistPositions( NULL );
   if (positions = True ) {
       return ( 0 );     // ???? ?? ???????? ???? ?????????
   }
   else { // else ????????? ? ?????????? if
      ticket= OrderSend ( Symbol (),OP_SELL, 0 , 1 ,Bid, 3 ,Bid+ 20 * Point ,Bid- 40 * Point , "" ,magic, 0 , Red );   
   }
//----
   return ( 0 );
}
//+------------------------------------------------------------------+
//+----------------------------------------------------------------------------+
//|  Exist pending. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+

bool ExistOrders( string sy= "" , int op=- 1 , int mn=- 1 , datetime ot= 0 ) {
   int i, k= OrdersTotal (), ty;
 
   if (sy== "0" ) sy= Symbol ();
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
      ty= OrderType ();
       if (ty> 1 && ty< 6 ) {
         if (( OrderSymbol ()==sy || sy== "" ) && (op< 0 || ty==op)) {
           if (mn< 0 || OrderMagicNumber ()==mn) {
             if (ot<= OrderOpenTime ()) return (True);
          }
        }
      }
    }
  }
   return (False);
}
//+----------------------------------------------------------------------------+
//| Exist open Positions. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+

bool ExistPositions( string sy= "" , int op=- 1 , int mn=- 1 , datetime ot= 0 ) {
   int i, k= OrdersTotal ();
 
   if (sy== "0" ) sy= Symbol ();
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
       if ( OrderSymbol ()==sy || sy== "" ) {
         if ( OrderType ()==OP_BUY || OrderType ()==OP_SELL) {
           if (op< 0 || OrderType ()==op) {
             if (mn< 0 || OrderMagicNumber ()==mn) {
               if (ot<= OrderOpenTime ()) return (True);
            }
          }
        }
      }
    }
  }
 

liana :

İşte kodun tamamı. Düzeltmediğim için "bitiş freni bekleniyor", ardından "dengesiz parantezler" yazıyor.

Yardım edin, bir saattir bu parantezlerle uğraşıyorum.
Açık ve bekleyen emir olup olmadığını kontrol etmek ve ardından bir emir açmak istiyorum.


Son ExistPositions işleviniz kapalı değil. Ve bool dönüş değeri yok, ayrıca bir hata var. Yani, koşullar karşılanmazsa, işlev yine de bir şeyler döndürmelidir.

Kodları kopyalarken dikkatli olun.

 
valenok2003 :

Son ExistPositions işleviniz kapalı değil. Ve bool dönüş değeri yok, ayrıca bir hata var.
Teşekkürler (Kim'in işlevini yanlış kopyaladı).
Şimdi düzeltildi - tekrar "bitiş freni bekleniyor" yazıyor
 int pending;
int positions;
int ticket;
int magic= 576 ;

int start() { 
//----
   pending = ExistOrders( NULL );
   if (pending = True ) return ( 0 ); // ???? ???????? ????????? ???????? ?????? ????? ?? ???????
   positions = ExistPositions( NULL );
   if (positions = True ) {
       return ( 0 );     // ???? ?? ???????? ???? ?????????
   }
   else { // else ????????? ? ?????????? if
      ticket= OrderSend ( Symbol (),OP_SELL, 0 , 1 ,Bid, 3 ,Bid+ 20 * Point ,Bid- 40 * Point , "" ,magic, 0 , Red );
   }
//----
   return ( 0 );
}
//+------------------------------------------------------------------+
//+----------------------------------------------------------------------------+
//|  Exist pending. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+

bool ExistOrders( string sy= "" , int op=- 1 , int mn=- 1 , datetime ot= 0 ) {
   int i, k= OrdersTotal (), ty;
 
   if (sy== "0" ) sy= Symbol ();
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
      ty= OrderType ();
       if (ty> 1 && ty< 6 ) {
         if (( OrderSymbol ()==sy || sy== "" ) && (op< 0 || ty==op)) {
           if (mn< 0 || OrderMagicNumber ()==mn) {
             if (ot<= OrderOpenTime ()) return (True);
          }
        }
      }
    }
  }
   return (False);
}

//+----------------------------------------------------------------------------+
//|  Exist open positions. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+

bool ExistPositions( string sy= "" , int op=- 1 , int mn=- 1 , datetime ot= 0 ) {
   int i, k= OrdersTotal ();
 
   if (sy== "0" ) sy= Symbol ();
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
       if ( OrderSymbol ()==sy || sy== "" ) {
         if ( OrderType ()==OP_BUY || OrderType ()==OP_SELL) {
           if (op< 0 || OrderType ()==op) {
             if (mn< 0 || OrderMagicNumber ()==mn) {
               if (ot<= OrderOpenTime ()) return (True);
            }
          }
        }
      }
    }
  }
   return (False);