Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 507

 
lil_lil:

MTF-Indikator, ich setze H1 in den externen Einstellungen, ich füge ihn dem M15-Chart hinzu. Das Signal blinkt in Takt 4. Wenn der Takt H1 geschlossen ist, blinkt das Signal nicht, bei M15 hört das Signal bei Takt 4 auf zu blinken. Wenn ich ihn auf М1 stelle, hört er bei Takt 60 auf zu blinken. i+N sollte also so berechnet werden, dass N je nach der in den Einstellungen gewählten Periode und dem Chart der Periode, in der der Indikator angebracht ist, variiert.

Haben Sie den gesamten Code?

 

Guten Tag. Ich kann es nicht verstehen, OOP-Apologeten, bitte helft mir.

Es gibt also eine Klasse, zum Beispiel CCandle. In dieser Klasse gibt es für alle Objekte dieser Klasse die gleichen Parameter. Diese Parameter können auch in OnInit() initialisiert werden und werden für alle Objekte dieser Klasse gleich sein. Also, wie kann ich es richtig machen, so dass sie nicht jedes Mal beim Erstellen eines neuen Objekts initialisiert werden. Angenommen, sie sind alle in der Funktion CCandle::Init() enthalten. Ich kann es nicht herausfinden.

 
Juer:

Guten Tag. Ich kann es nicht verstehen, OOP-Apologeten, bitte helft mir.

Es gibt eine Klasse, zum Beispiel CCandle. In dieser Klasse gibt es für alle Objekte dieser Klasse die gleichen Parameter. Diese Parameter können auch in OnInit() initialisiert werden und sind dann für alle Objekte dieser Klasse gleich. Also, wie kann ich es richtig machen, so dass sie nicht jedes Mal beim Erstellen eines neuen Objekts initialisiert werden. Angenommen, sie sind alle in der Funktion CCandle::Init() enthalten. Ich kann es nicht herausfinden.

Dies geschieht in der Initialisierungsliste, die sich im Klassenkonstruktor befindet:

class CCandle
{
   int      m_nA;
   double   m_fB;
   datetime m_dtC;


   void CCandle::CCandle(void);
};

CCandle::CCandle(void)
            : m_nA(0)
            , m_fB(0.0)
            , m_dtC(0)
{
}
 
Juer:

Guten Tag. Ich kann es nicht verstehen, OOP-Apologeten, bitte helft mir.

Es gibt also eine Klasse, zum Beispiel CCandle. In dieser Klasse gibt es für alle Objekte dieser Klasse die gleichen Parameter. Diese Parameter können auch in OnInit() initialisiert werden und werden für alle Objekte dieser Klasse gleich sein. Also, wie kann ich es richtig machen, so dass sie nicht jedes Mal beim Erstellen eines neuen Objekts initialisiert werden. Angenommen, sie sind alle in der Funktion CCandle::Init() enthalten. Ich kann es nicht herausfinden.

Erstellen Sie einen parametrischen Konstruktor in einer Klasse und übergeben Sie ihm die notwendigen Parameter, um das Objekt zu initialisieren
 
Ich habe nichts verstanden. Die Initialisierung für ein Objekt ist kein Problem. Wie initialisiere ich einmal für alle Objekte einer bestimmten Klasse? Das heißt, ein neues Objekt wird erstellt und die Parameter sind bereits mit Werten initialisiert, ohne dass sie jedes Mal für jedes neue Objekt initialisiert werden müssen.
 
Kollegen, bitte beraten Sie, ob es richtig ist,Return-Operator aus der Schleife Körperverwenden? Ein Beispiel: Wir haben eine Funktion mit einer Schleife. Irgendwann müssen wir einen Wert zurückgeben und damit die Funktion beenden. Richtig ist es, break und dann return(value) zu verwenden. Aber können wir return(value) auch gleich verwenden?
 
Juer:
Ich habe nichts verstanden. Die Initialisierung für ein Objekt ist kein Problem. Wie initialisiere ich einmal für alle Objekte einer bestimmten Klasse? Das heißt, ein neues Objekt wird erstellt und die Parameter sind bereits mit Werten initialisiert, ohne dass sie jedes Mal für jedes neue Objekt initialisiert werden müssen.
Die Parameter können aus den vorhandenen initialisiert werden.
 
lsv107:
Kolleginnen und Kollegen, bitte beraten Sie, ob es richtig ist,Return-Operator aus der Schleife Körper verwenden? Wir haben zum Beispiel eine Funktion, die eine Schleife enthält. Irgendwann müssen wir einen Wert zurückgeben und damit die Funktion beenden. Richtig ist es, break und dann return(value) zu verwenden. Aber können wir einfach (Wert) auf einmal zurückgeben?
Nichts hindert Sie daran, die Schleife zu verlassen.
 
Artyom Trishkin:
Parameter können von etwas Vorhandenem initialisiert werden.

Das ist doch eine ganz einfache Frage, oder? Es geht darum, dieselbe Sache zu initialisieren.

 
Artyom Trishkin:
Es gibt nichts, was Sie daran hindert, die Schleife zu verlassen.

Ich hatte nur die Befürchtung, dass die Schleife innerhalb der Funktion aktiv bleibt und der Return-Operator nur die Kontrolle von der aktiven Schleife zum Aufrufpunkt überträgt, so dass die Gefahr eines Stack-Überlaufs besteht, wenn die Funktion erneut aufgerufen wird (Rekursion). Genau das war in Pascal der Fall, und nach den Regeln der strukturellen Programmierung im Allgemeinen sollten Schleifen nacheinander beendet werden, und dann wird die Funktion verlassen. Wenn return, zusammen mit einer Funktion, die Schleife beendet, toll, aber ich hätte es klarstellen sollen, da ich nach einer langen Pause wieder programmiere.

Grund der Beschwerde: