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

 
ANDREY:

Verstehe ich das richtig, dass jetzt in mql4 die Arrays nur noch mit der Funktion initialisiert werden sollen

Nicht unbedingt, aber es ist besser, solche Fragen mit Testskripten zu überprüfen:

void OnStart()
{
   int arr_1[10] = {123};
   int arr_2[10] = {0,1,2,3,4,5,6,7,8,9};
   int arr_3[10];
   ArrayInitialize(arr_3,777);
   ArrayPrint(arr_1);   // 123   0   0   0   0   0   0   0   0   0
   ArrayPrint(arr_2);   // 0 1 2 3 4 5 6 7 8 9
   ArrayPrint(arr_3);   // 777 777 777 777 777 777 777 777 777 777
}
ANDREY:

Kovalevs Tutorial sagt, dass man ein Array gleichzeitig mit seiner Deklaration initialisieren kann (wie ich es getan habe), ohne eine spezielle Funktion.

Ihre Variante in meinem Beispiel arr_1 - Sie können sie also mit einem Nullwert initialisieren! - und wenn ein anderes, dann wird das erste Element des Arrays ein Initialisierungswert sein, und alle anderen werden null sein.

Ich glaube, das Tutorial riet Ihnen, wie in meinem Beispiel arr_2 zu initialisieren

 

Nachmittags.

Sie müssen in Ihrem EA die Werte des darin verwendeten Indikators visualisieren. Sie müssen es nicht genau so zeichnen, wie es aussieht. Es reicht völlig aus, den Punktwert des Indikators auf jeder Kerze zu markieren. Ich habe versucht, es über das Objekt OBJ_ARROW zu machen und habe festgestellt, dass der Ankerpunkt nicht in der Mitte des Objekts liegen kann. Sie ist entweder höher oder niedriger als das Objekt. Infolgedessen stimmen die Punkte nicht mit den tatsächlichen Werten des Indikators überein. Können Sie eine Lösung für dieses Problem vorschlagen?

Indikatoranzeige über OBJ_ARROW

 
Oleg Remizov:

Nachmittags.

Sie müssen in Ihrem EA die Werte des darin verwendeten Indikators visualisieren. Sie müssen es nicht genau so zeichnen, wie es aussieht. Es reicht völlig aus, den Punktwert des Indikators auf jeder Kerze zu markieren. Ich habe versucht, es über das Objekt OBJ_ARROW zu machen und habe festgestellt, dass der Ankerpunkt nicht in der Mitte des Objekts liegen kann. Sie ist entweder höher oder niedriger als das Objekt. Infolgedessen stimmen die Punkte nicht mit den tatsächlichen Werten des Indikators überein. Schlagen Sie eine Lösung für dieses Problem vor.

Erstellen Sie eine Vorlage mit allen erforderlichen Indikatoren und speichern Sie sie unter dem Namen tester oder unter dem Namen des Expert Advisors.

 
Alexey Viktorov:

Erstellen Sie eine Vorlage mit allen gewünschten Indikatoren und speichern Sie sie unter dem Namen tester oder unter dem Namen des EAs.

Leider funktioniert die Vorlage bei mir nicht. Es ist notwendig, die Funktion zur Anzeige der Indikatoren in den Einstellungen zu aktivieren/deaktivieren, und das Zeichnen sollte direkt aus dem EA erfolgen. Der EA sollte in einer einzigen Datei übertragen werden können.

 
Oleg Remizov:

Leider funktioniert die Vorlage bei mir nicht. Die Anzeigefunktion sollte in den Einstellungen ein-/ausgeschaltet werden, und das Zeichnen sollte direkt vom EA aus erfolgen. Ich möchte in der Lage sein, den EA in einer Datei zu übertragen.

Das sind seltsame Wünsche. Wenn Sie möchten, dass Ihr EA funktioniert, einfach nur funktioniert, dann reicht es, ihn als Ressource anzuhängen, und er braucht keine Anzeige und wird ohne Indikator-Datei funktionieren. Und wenn Sie genau die Anzeige wünschen, warum geben Sie dann nicht die Indikator-Datei an?

 
Alexey Viktorov:

Dies ist ein seltsamer Antrag. Wenn Sie möchten, dass der EA funktioniert, nur funktionieren, dann ist es genug, um es als eine Ressource anhängen und es wird ohne die Indikator-Datei zu arbeiten. Wenn Sie die genaue Zuordnung sehen wollen, warum geben Sie dann nicht die Indikator-Datei an?

Es ist nicht so, dass ich keine Indikator-Datei geben möchte. Ein Expert Advisor, der zusätzliche Dateien benötigt, kann nicht auf dem Markt veröffentlicht werden. Es ist praktisch, alles, was Sie für Ihre Arbeit brauchen, in einer Datei zu haben.

Außerdem muss ich nicht immer alle Indikatorpuffer anzeigen, wenn es nur wenige davon gibt. Ich habe zum Beispiel einen Indikator für Ishimoku. Er hat 5 Linien, von denen aber nur eine für die Verwendung in einem Expert Advisor ausgewählt werden sollte. Ich möchte nur einen von ihnen anstelle des gesamten Indikators anzeigen.

 
Igor Makanu:

nicht unbedingt, aber es ist besser, solche Fragen mit Testskripten zu überprüfen:

Ihre Variante in meinem Beispiel arr_1 - so können Sie mit einem Nullwert initialisieren! - und wenn das andere, dann wird das erste Element des Arrays ein Initialisierungswert sein und alle anderen werden null sein.

Ich denke, das Tutorial riet Ihnen, wie in meinem Beispiel arr_2 zu initialisieren

Vielen Dank für die wertvollen Informationen für mich.

 
Oleg Remizov:

Es ist nicht so, dass ich keine Indikatorendatei geben möchte. Ein Expert Advisor, der zusätzliche Dateien benötigt, kann nicht auf dem Markt veröffentlicht werden. Und im Allgemeinen ist es praktisch, alles, was man für die Arbeit braucht, in einer Datei zu haben.

Außerdem muss ich nicht immer alle Indikatorpuffer anzeigen, wenn es nur wenige davon gibt. Ich habe zum Beispiel einen Indikator für Ishimoku. Er hat 5 Linien, von denen aber nur eine für die Verwendung in einem Expert Advisor ausgewählt werden sollte. Dies ist der einzige Indikator, den wir anzeigen wollen, und nicht der gesamte Indikator.

Nun, die Indikatoren werden als Ressource für den Markt verwendet. Aber wozu braucht der Nutzer sie? Niemand interessiert sich für die Grundsätze, nach denen die Positionen eröffnet werden. Wenn Sie möchten, können Sie die gesamte Strategie in der Beschreibung beschreiben. Braucht sie jemand?

 
Igor Makanu:


Ich glaube, das Lehrbuch riet Ihnen, wie in meinem Beispiel arr_2 zu initialisieren

Das Kovalev-Lehrbuch sagt Folgendes über die Initialisierung eines Arrays zur gleichen Zeit wie dessen Deklaration

8.4.4 Initialisierung von Arrays

Ein Array kann nur mit Konstanten des entsprechenden Typs initialisiert werden. eindimensionale und mehrdimensionale Arrays werden mit einer eindimensionalen Folge von Konstanten initialisiert, die durch Kommata getrennt sind. Die Folge ist in geschweifte Klammern eingeschlossen:

int Mas_i[3][4] = { 0, 1, 2, 3, 10, 11, 12, 13, 20, 21, 22, 23 }

double Mas_d[2][3] = { 0.1, 0.2, -0.3, -10.2, 1.5, 7.0 };

bool Mas_b[5] = { false, true, false, true, true }

Eine oder mehrere Konstanten können in der Initialisierungssequenz übersprungen werden.

Aus dem Lehrbuch weiß ich, dass bei der Deklaration eines Arrays das gesamte Array mit allen Daten initialisiert wird, nicht nur mit dem ersten Element des Arrays.
Wenn ich die Anleitung falsch verstanden habe, wäre ich Ihnen dankbar, wenn Sie mir sagen könnten, was ich falsch verstanden habe.

 
Alexey Viktorov:

Das ist es, was sie mit den Indikatoren als Ressource für den Markt machen. Aber wozu braucht der Nutzer sie? Niemand interessiert sich für die Grundsätze, nach denen Positionen eröffnet werden. Wenn Sie möchten, können Sie die gesamte Strategie in der Beschreibung beschreiben. Braucht sie jemand?

Und nach meinen Beobachtungen gefällt es den Nutzern, wenn der Expert Advisor verschiedene Informationen auf dem Bildschirm anzeigt: er zeichnet Pfeile, Linien, Kanäle usw., um die rege Tätigkeit der "künstlichen Intelligenz" zu demonstrieren).

Entsprechend den Indikatoren bietet der Expert Advisor Trailing. Ich möchte diesen Prozess so visualisieren, dass der Benutzer die gestrichelte Linie mit StopLoss sehen kann.

Grund der Beschwerde: