Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 236

 
int start(){
 int a=0;
 if (5>3)
 if (5>3)
 if (5>3){Alert ("AAAAAAAAAAAAAAAAAAAAAAA"); a=5;}
 else Alert ("a=", a);
 else Alert ("a=", a+1);
 else Alert ("a=", a+2);
}

Wenn die erste Bedingung nicht erfüllt ist, wird eine Warnmeldung ausgegeben: "a=2".

Wenn die zweite Bedingung nicht erfüllt ist, wird eine Warnmeldung ausgegeben: "a=1".

Wenn die dritte Bedingung nicht erfüllt ist, gibt es eine Meldung: "a=0".

Ja, zunächst war es unerwartet))

 
ALXIMIKS:

kein Alert von diesem Skript. Else bezieht sich auf die Bedingung " if (5>3){Alert ("AAAAAAAAAAAAAAAAAAAAAAAAAA"); a=5;} "

Danksagungen :

haben anAlert: "a=0".

Das Ergebnis ist, dass die Behandlung von Nicht-Bedingungen nur für die letzte Bedingung möglich ist, wenn die geschweiften Klammern "{" während der Aufzählung einer bestimmten Reihe von Bedingungen nicht verwendet werden.

Das ist richtig, die Logik funktioniert, man sollte nur nicht alles in eine Zeile packen:

int start(){
 int a=0;
 if (3>3)
    if (5>3)
       if (5>3){Alert ("AAAAAAAAAAAAAAAAAAAAAAA"); a=5;}
       else Alert ("a=", a);
}
dann wird es klarer werden. Klammern werden benötigt, wenn if wahr ist: {operator1;operator2;operatorN}. Wenn es nur einen Operator gibt, können die geschweiften Klammern weggelassen werden, und da der Operator auch eine Bedingung ist, wird alles wiederholt.
 
artmedia70:

Das heißt, Klammern werden benötigt, um logische Verzweigungen zu organisieren. Ohne sie ist die erste Bedingung grundlegend. Wenn dies nicht der Fall ist, sind die anderen Bedingungen nicht erfüllt.

Versuchen Sie, es herauszufinden:

Und dann finden Sie heraus, worauf er sich sonst noch bezieht:


else bezieht sich auf " if (b>c)".
 

Hallo.

if (DayOfWeek()==DayOfWeekIf
  && TimeCurrent()>=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+TimeTradeIf)
  && TimeCurrent()<StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+TimeTradeIf)+Duration)
   {
    if  (iClose("XAUUSD",PERIOD_H1,0)-iOpen("XAUUSD",PERIOD_H1,0)>=0)
    Sell = true;
    if  (iOpen("XAUUSD",PERIOD_H1,0)-iClose("XAUUSD",PERIOD_H1,0)>0)
    Sell =false;
   }
  if (DayOfWeek()==DayOfWeekOpen
  && TimeCurrent()>=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+TimeTradeOpen)
  && TimeCurrent()<StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+TimeTradeOpen)+Duration)
  {...

Die Idee ist folgende: Wenn eine Kerze an einem solchen Tag und zu einer solchen Zeit bullisch ist, dann ist verkaufen = wahr, wenn sie bearisch ist, dann falsch. Dann verkaufen wir an diesem und jenem Tag zu dieser und jener Zeit, wenn verkaufen=wahr ist, und kaufen, wenn es umgekehrt ist.

Aber die Bedingung funktioniert aus irgendeinem Grund nicht, alle Trades sind für den Verkauf geöffnet. Ich teste es auf M1.

 
ALXIMIKS:

else bezieht sich auf " if (b>c) ".

Richtig.

if (a>b)
   if (b>c) 
      Alert(" условие if (a>b && b>c) выполнено ");
   else if (d>e) 
      if (e>f) 
         Alert(" условие if (d>e && e>f) выполнено");

Versuchen Sie nun, die Logik ohne geschweifte Klammern zu erstellen:

Wenn (a>b), dann werden die Zeilen if (b>c) Alert() ausgeführt;

Andernfalls, wenn (d>e), dann werden die Zeilen if (e>f) Alert() ausgeführt;

Mit anderen Worten: Beziehen Sie sich auf die allererste Bedingung. Ohne geschweifte Klammern zu verwenden.

 
Antonius:

Hallo.

Die Idee ist folgende: Wenn eine Kerze an einem solchen Tag und zu einer solchen Zeit bullisch ist, dann ist verkaufen = wahr, wenn sie bearisch ist, dann falsch. Dann verkaufen wir an diesem und jenem Tag zu dieser und jener Zeit, wenn verkaufen=wahr ist, und kaufen, wenn es umgekehrt ist.

Aber die Bedingung funktioniert aus irgendeinem Grund nicht, alle Trades sind für den Verkauf geöffnet. Ich habe es auf M1 getestet.

Ich bin sicher, dass es dieser Teil des Codes ist. Aus dem, was Sie gezeigt haben, ist es schwierig, Schlussfolgerungen zu ziehen - es gibt viele unbekannte Variablen und die Öffnung selbst ist nicht sichtbar.

Um die Ursache selbst herauszufinden, drucken Sie die Werte der Variablen aus oder zeigen Sie sie mit Kommentaren an. Dann können Sie deren Werte jederzeit einsehen.

 
Antonius:

Hallo.

Die Idee ist folgende: Wenn eine Kerze an einem solchen Tag und zu einer solchen Zeit bullisch ist, dann ist verkaufen = wahr, wenn sie bearisch ist, dann falsch. Dann verkaufen wir an diesem und jenem Tag zu dieser und jener Zeit, wenn verkaufen=wahr ist, und kaufen, wenn es umgekehrt ist.

Aber die Bedingung funktioniert aus irgendeinem Grund nicht, alle Trades sind für den Verkauf geöffnet. Ich teste es auf M1.

Ist es möglich, so zu vergleichen? Mir gefällt der rechte Teil nicht ("type conversion there will put everything in a string with the value "yyyy.mm.dd "TimeTradeIf")?
 TimeCurrent()>=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+TimeTradeIf
 
ALXIMIKS:
Mir gefällt der rechte Teil nicht ("yyyy.mm.dd "TimeTradeIf" Wert wird in eine Zeichenkette umgewandelt)?

Sie können sehen, dass der TimeTradeIf-Wert zum berechneten Wert hinzugefügt wird. Wer hat Ihnen gesagt und gezeigt, was genau in TimeTradeIf enthalten ist?

Das habe ich der Person geschrieben, dass es eine Menge unbekannter und unklarer Werte gibt, um das Problem in seinem Code zu suchen.

 
artmedia70:

Richtig.

Versuchen Sie nun, die Logik ohne geschweifte Klammern zu erstellen:

Wenn (a>b), dann werden die Zeilen if (b>c) Alert() ausgeführt;

Andernfalls, wenn (d>e), dann werden die Zeilen if (e>f) Alert() ausgeführt;

Mit anderen Worten: Beziehen Sie sich auf die allererste Bedingung. Ohne geschweifte Klammern.


if (a>b)
   if (b>c) Alert(" условие if (a>b && b>c) выполнено ");
   else; 
else 
   if (d>e) 
      if (e>f)Alert(" условие if (d>e && e>f) выполнено");

Taki tat es, es ist nicht sehr bequem für das Lesen von Logik, wenn ohne geschweifte Klammern, und Compiler noch ein wenig reibt ";' - Semikolon unerwartet "

aber meldet immer noch "Bedingung wenn (d>e && e>f) erfüllt ist ", wenn a>bnicht erfüllt ist .(wenn ich die Aufgabe so verstanden habe).


 
Antonius:

Hallo.

Die Idee ist folgende: Wenn eine Kerze an einem solchen Tag und zu einer solchen Zeit bullisch ist, dann ist verkaufen = wahr, wenn sie bearisch ist, dann falsch. Dann verkaufen wir an diesem und jenem Tag zu dieser und jener Zeit, wenn verkaufen=wahr ist, und kaufen, wenn es umgekehrt ist.

Aber die Bedingung funktioniert aus irgendeinem Grund nicht, alle Trades sind für den Verkauf geöffnet. Ich teste es auf M1.


Meiner Meinung nach beginnt die Berechnung am Anfang des Null-Balkens, wenn der Eröffnungswert noch gleich dem Schlusswert ist und die Differenz natürlich 0 ist. Ich muss den vorherigen Balken überprüfen.
Grund der Beschwerde: