unausgewogene Paranthesen - Seite 2

 

Machen Sie es sich zur Regel, die Zeichenkette immer zuerst mit den Formularelementen zu beenden und erst dann den Textkörper zu schreiben.

Wenn Sie zum Beispiel eine if-Anweisung verwenden, setzen Sie eine öffnende und eine schließende Klammer. Wenn Sie eine öffnende geschweifte Klammer setzen, setzen Sie eine schließende Klammer darunter. Wenn Sie eine Funktion schreiben, z. B. NormalizeDouble, setzen Sie (,Digits); und schreiben Sie dann vor das Komma, was Sie runden wollen. Auf diese Weise werden Sie keine Fehler machen. Mit der Zeit wird sich Ihr Auge daran gewöhnen und Sie werden diese kleinen Details sofort erkennen. Wenn ich den Fehler nicht sofort finden kann, schneide ich die unabhängigen Teile des Codes aus und kompiliere ihn, der Fehler ist wahrscheinlich nicht in diesem Teil (wenn er an zwei Stellen ist), dann füge ich ihn wieder ein. Wenn eine Funktion verwendet wird und überprüft werden muss, schneiden Sie ihren Inhalt aus usw.

 
liana:
Vielen Dank (ich habe die Funktion von Kim falsch kopiert).
Jetzt habe ich es korrigiert - es heißt "endende Klammer erwartet

in der letzten Funktion sollte nach return(False); eine weitere Klammer stehen
 

Versuchen Sie, zunächst eine Reihe von Klammern in eine neue Zeile zu setzen, und geben Sie dann ein, was Sie brauchen. Und wenn mehrere Funktionen in einer "Matrjoschka" verschachtelt sind, seien Sie nicht zu faul, jede interne Funktion um ein paar Leerzeichen einzurücken, dann gibt es keine "fehlenden" Klammern mehr :)

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

Repariert - trotzdem stimmt etwas nicht.
Könnte mir bitte jemand schreiben, wie es richtig wäre, diese beiden Kim-Funktionen aufzurufen und, wenn keine Aufträge vorhanden sind, einen Auftrag zu eröffnen.

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:

Repariert - trotzdem stimmt etwas nicht.
Könnte mir bitte jemand schreiben, wie es richtig wäre, diese beiden Kims-Funktionen aufzurufen und - wenn keine Aufträge vorhanden sind - einen Auftrag zu eröffnen.


Der Funktion sind Parameter zu übergeben, die in der Funktionsbeschreibung beschrieben sind

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

sollten Sie diese Parameter an die Benutzerfunktion übergeben, wenn Sie sie von start() aus aufrufen

 
valenok2003:


Parameter an die Funktion übergeben werden müssen, sind sie in der Funktionsbeschreibung beschrieben

müssen Sie diese Parameter an die Benutzerfunktion übergeben, wenn Sie sie mit der Funktion start() aufrufen


Ich brauche diese Parameter nicht. Ich brauche nur
2. Suche nach einer beliebigen Position auf dem aktuellen Kartensymbol
ExistPositions(NULL);
Aber wie ruft man diesen Parameter richtig auf?

 
liana:


Ich benötige diese Parameter nicht. Ich brauche nur
2. Um die Verfügbarkeit einer Position auf dem aktuellen Diagramm zu überprüfen
ExistPositions(NULL);
Aber wie ruft man diesen Parameter richtig auf?

Müssen Sie prüfen, ob es offene Stellen gibt?
 
liana:


Ich benötige diese Parameter nicht. Ich brauche nur
2. Suche nach einer beliebigen Position auf dem aktuellen Kartensymbol
ExistPositions(NULL);
Aber wie ruft man diesen Parameter richtig auf?


Rufen Sie es ohne Parameter auf:

if(!ExistPositions()){/// keine offenen Stellen

if(!ExistOrders()){/// keine ausstehenden Aufträge

 

Ich kann es nicht lesen, mein MetaEditor unterstützt die russische Kodierung nicht

 
liana:

Ich kann nicht, MetaEditor unterstützt keine russische Kodierung


Suchen Sie in seinem Thread: https://www.mql5.com/ru/forum/107476, da steht alles drin, ab Seite 10, glaube ich.
Grund der Beschwerde: