paranthèses non équilibrées - page 2

 

Quelle que soit l'expression utilisée, faites en sorte de terminer la chaîne par les éléments de forme d'abord, et ensuite seulement, écrivez le corps.

Par exemple, si vous utilisez une instruction if, mettez une parenthèse ouvrante et une parenthèse fermante. Si vous placez une accolade ouvrante, placez une accolade fermante en dessous. Lorsque vous écrivez la fonction, disons, NormalizeDouble, mettez (,Digits) ; puis avant la virgule, écrivez ce que vous voulez arrondir. De cette façon, vous ne ferez pas d'erreurs. Et avec le temps, votre œil s'y habituera et vous verrez immédiatement ces petits détails. Si je ne trouve pas l'erreur tout de suite, je coupe les parties indépendantes du code et je le compile, l'erreur n'est probablement pas dans cette partie (si elle est à deux endroits), puis je le recolle. Si une fonction est utilisée et doit être vérifiée, découpez son contenu et également.

 
liana:
Merci (j'ai mal copié la fonction de Kim).
Maintenant, je l'ai corrigé - il est écrit "parenthèse finale attendue".

il devrait y avoir une parenthèse de plus après return(False) ; dans la dernière fonction
 

Essayez d'abord de placer un ensemble de parenthèses sur une nouvelle ligne, puis de saisir ce dont vous avez besoin dans ces parenthèses. Et si plusieurs fonctions sont imbriquées dans une "matryoshka", n'ayez pas la flemme d'indenter chaque fonction interne de quelques espaces et il n'y aura plus de parenthèses "manquantes" :)

Function1()
{
  action1;
   Function2()
   {
     action2;
     action3;
   }
}
 

Je l'ai réparé, mais il y a toujours un problème.
Quelqu'un pourrait-il m'écrire comment il serait correct d'appeler ces deux fonctions Kim et, s'il n'y a pas d'ordre, d'ouvrir un ordre.

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

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);
}
//+------------------------------------------------------------------+
//+----------------------------------------------------------------------------+
//|  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);
  }
 
liana:

Je l'ai réparé, mais il y a toujours un problème.
Quelqu'un pourrait-il m'écrire comment il serait correct d'appeler ces deux fonctions de Kim et, s'il n'y a pas d'ordre, d'ouvrir un ordre.


Les paramètres doivent être passés à la fonction, ils sont décrits dans la description de la fonction.

ExistOrders(string sy="", int op=-1, int mn=-1, datetime ot=0)

vous devez transmettre ces paramètres à la fonction utilisateur lorsque vous l'appelez depuis start()

 
valenok2003:


des paramètres doivent être passés à la fonction, ils sont décrits dans la description de la fonction.

vous devez passer ces paramètres à la fonction utilisateur lorsque vous l'appelez depuis la fonction start()


Je n'ai pas besoin de ces paramètres. J'ai seulement besoin
2. Vérifier toute position sur le symbole graphique actuel
ExistPositions(NULL) ;
Mais comment appeler ce paramètre correctement ?

 
liana:


Je n'ai pas besoin de ces paramètres. Je n'ai besoin que de
2. Pour vérifier la disponibilité d'une position sur l'instrument graphique actuel
ExistPositions(NULL) ;
Mais comment appeler ce paramètre correctement ?

devez-vous vérifier s'il y a des postes ouverts?
 
liana:


Je n'ai pas besoin de ces paramètres. J'ai seulement besoin
2. Vérifier toute position sur le symbole graphique actuel
ExistPositions(NULL) ;
Mais comment appeler ce paramètre correctement ?


Appelez-le sans paramètres :

if( !ExistPositions()){// pas de postes ouverts

if( !ExistOrders()){// no pending

 

Je ne peux pas le lire, mon MetaEditor ne supporte pas l'encodage russe.

 
liana:

Je ne peux pas, MetaEditor ne supporte pas l'encodage russe.


Cherchez dans son fil de discussion :https://www.mql5.com/ru/forum/107476, tout y est. À partir de la page 10, je crois.
Raison: