Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 1335

 
Wie kann ich ein Konto eröffnen?
 
Artyom Trishkin:

Da sollte es keinen Unterschied geben. Für mich sieht es einfach schöner aus - der Code ist weniger mit Klammern und Einrückungen überladen.

Für eine Prüfung (wenn) ja, aber im Code gibt es zwei, und wenn es viele sind, dann Logik Wenn Ja, Kontingent und neue Schleife Iteration, sonst Aktion A Logik Wenn Nein dann Aktion sonst weitergeben zur nächsten Bedingung Wenn Nein. In diesem Fall wird der Schleifenkörper ganz durchlaufen.

 
Valeriy Yastremskiy:

Für eine Prüfung (wenn) ja, aber es gibt zwei in den Code, und wenn es viele, dann die Logik Wenn ja, weiter und eine neue Schleife Iteration, sonst Aktion A Logik Wenn nein, dann Aktion sonst weitergeben, um die nächste Bedingung Wenn nein. In diesem Fall wird der Schleifenkörper bis zum Ende durchlaufen.

Ich verstehe nichts, aber so soll es sein.

 
Artyom Trishkin:

Sie werden. Ich benutze es, weil ich es will :) Damit wird explizit angegeben, welche Klassenmethoden verwendet werden.

Wenn Sie zwei Klassen haben, eine als Elternklasse und eine als geerbte Klasse, und sie haben zwei Methoden mit dem gleichen Namen, aber sie sind aus irgendeinem Grund nicht virtuell, müssen Sie explizit angeben, welche Methode zu verwenden ist.

Angenommen, die übergeordnete Klasse ist CParent und die geerbte Klasse ist CInheritedund beide haben die Methode Method().

Wenn wir in diesem Fall eine Methode Method() einer CParent-Klasse aufrufen, ruft diese explizit eine Methode der CParent-Klasse auf - dies ist hier nicht erforderlich. Wir können die Methode mit oder ohne sie aufrufen.

Wenn wir eineMethode() in einer geerbten CInherited-Klasseaufrufen ,wird auch die Methodedieser Klasse aufgerufen, da wir zuerst nach einer Methode suchen, die zu der Klasse gehört, aus der wir sie aufrufen.

Wenn wir CParent::Method() in einer CInherited-Klasseaufrufen , wird auf diese Weise die Methode der Elternklasse aufgerufen, da wir durch den Kontextauflösungsoperator explizit eine Methode angegeben haben, die zur Elternklasse gehört.

Aber ich würde trotzdem die Methode Method() in CInherited class mitAngabe this - um sicher zu sein, dass die Methode dieser (this == "this") geerbten Klasse aufgerufen wird.

Es gibt auch andere Erklärungen für diese Verwendung. Vielleicht kann uns das jemand sagen, der mehr Erfahrung mit OOP hat.

Artem, vielen Dank für eine so umfassende Antwort, die die Einstellung zu OOP zum Besseren verändert).

 
Ахад Ахмедрв:
Wie kann ich ein Live-Konto eröffnen?

1. Wählen Sie einen Makler.
2. Wählen Sie eine Plattform, MT4 oder MT5.
3. Eröffnen Sie ein Live-Konto bei dem Broker.

 
Artyom Trishkin:

Ja, ich gehöre zu diesen "einigen Leuten", vor allem wenn ich eine Standardfunktion aus einer Klasse aufrufe, achte ich darauf, den globalen Kontext anzugeben. Nur weil ich in dieser Klasse vielleicht eine Methode mit demselben Namen wie die Standardfunktion schreiben möchte - damit ich nie vergesse, was sie tut. Und dann braucht man ::, um eine Standardfunktion aufzurufen, und dies - um meine Methode mit demselben Namen aufzurufen.

Artem, es widerlegt bereits den zweiten Teil des Ausdrucks "notwendig - nicht notwendig". Es ist notwendig, das heißt, es ist notwendig. Es gibt keine Einwände...

 

Hallo

So berechnen Sie den Abstand in Pips zwischen dem aktuellen Kurs und dem nächstgelegenenschwebenden Limit-Auftrag. Ich bin an einem vorgefertigten Code interessiert.


 
Valeriy Yastremskiy:

Für eine Prüfung (wenn) ja, aber es gibt zwei in den Code, und wenn es viele, dann die Logik Wenn Ja, weiter und eine neue Schleife Iteration, sonst Aktion A Logik Wenn Nein, dann Aktion sonst übergeben, um die nächste Bedingung Wenn Nein. In diesem Fall wird der Schleifenkörper ganz durchlaufen.

Für mich ist die bevorzugte Option

int a = 3, b = 7;
for(int i = 0; i < 10; i++)
 {
  if(i == a && b == 7)
   {
    Print(b);
   }
  // если условие if(i == a) НЕ выполнено, следующая итерация………
 }

oder dies

int a = 3, b = 7;
for(int i = 0; i < 10; i++)
 {
  if(i == a)
   {
    if(b == 7)
     Print(b);
   }
  // если условие if(i == a) НЕ выполнено, следующая итерация………
 }

Eine andere Variante

int a = 3, b = 7;
for(int i = 0; i < 10; i++)
 {
  if(i != a)
   continue; // если условие if(i != a) выполнено, следующая итерация………
    if(b == 7)
     Print(b);
 }

Die andere Variante ist an der Grenze zur Idiotie.

int a = 3, b = 7;
for(int i = 0; i < 10; i++)
 {
  if(i != a)
   continue; // если условие if(i != a) выполнено, следующая итерация………
    if(b != 7)
     continue;
     
  Print(b);
 }

Aber das ist eine Frage des Geschmacks. Was auch immer man mag.

Soweit ich weiß, wurde diese Methode verwendet, wenn der if-Operator ALLE Bedingungen vom Anfang bis zum Ende überprüft hat. Begründet wurde dies mit der Tatsache, dass die folgenden Bedingungen nicht geprüft werden müssen, wenn die erste Bedingung nicht erfüllt ist. Nun werden alle Bedingungen nach der nicht erfüllten Bedingung nicht geprüft. Und solche Konditionstreppen sind nicht mehr nötig, nur noch eine Gewohnheit.

 
Alexey Viktorov:

Artyom, das widerlegt bereits den zweiten Teil des Ausdrucks "sollte nicht". Wenn ich es tun muss, muss ich es tun. Keine Einwände...

Mit dem Vorbehalt: wenn ich es tue.
 
Hallo, der Strategietester zeigt 44% Verlaufsqualität an, wie kann ich das beheben? Die Suche im Forum hat nichts ergeben, ich habe auch in der Hilfe nach Informationen gesucht, da steht auch nichts.