[ARCHIV!] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen - 4. - Seite 4

 

Nicht lächelnd

 
Fox_RM: In den folgenden Iterationen ist alles in Ordnung. Warum ist dies der Fall?

eines von zwei Dingen:

- Sie verwenden Variableninitialisierung im init()-Abschnitt, nicht alle Funktionen funktionieren dort korrekt

- vielleicht haben Sie eine Variable nicht initialisiert, es gilt seit langem als gute Programmierpraxis, nach der Beschreibung von Variablen zumindest einen Wert zu initialisieren

ZS: warum haben Sie ArrHigh[i] array und verwenden ArrHigh[0] ?

 

Und noch eine kleine Frage.

Ich bin auf den folgenden Eintrag gestoßen:

 void IncArray( int & Array[] )

Alles scheint einen Sinn zu ergeben, nur was bedeutet das Zeichen & in diesem Fall ?

 
Fox_RM Was bedeutet das Zeichen & in diesem Fall ?
https://docs.mql4.com/ru/basis/variables/formal
 

IgorM:

Eine von zwei Möglichkeiten:

- Sie verwenden die Variableninitialisierung im init()-Abschnitt, dort funktionieren nicht alle Funktionen richtig

- vielleicht haben Sie eine Variable nicht initialisiert, es gilt seit langem als gute Programmierpraxis, nach der Beschreibung von Variablen zumindest mit einem Wert zu initialisieren

.

Sie haben völlig Recht, "Sie verwenden Variableninitialisierung im init()-Abschnitt,..." - es gibt eine solche Sünde)

"...beliebiger Wert" - 0 wird zugewiesen.

"Warum haben Sie ArrHigh[i] array und verwenden ArrHigh[0]..." Der Punkt ist folgender.

Ich muss den Wert High[i] erhalten, um später im Codedamit arbeiten zu können.

Wenn ich in der Schleife eine Zuweisung an eine Variable vornehme, wird diese bei den nächsten Iterationen überschrieben. Ich kann mir nichts Gescheiteres vorstellen, als die Zuordnung von

High[i] in ein Array umwandeln und dann nur mit ArrHigh[0] arbeiten . Wenn diese Schleife das nächste Mal läuft, werden alle Werte neu initialisiert.

Vielleicht gibt es eine bessere Option?

 
 
Fox_RM:
1. Sie haben völlig recht, "Sie verwenden die Initialisierung von Variablen im init()-Abschnitt,..." - es gibt eine solche Sünde)

2. gibt es vielleicht eine bessere Option?

1. Sie können und müssen manchmal nur im init()-Abschnitt initialisieren, ich habe nur darauf hingewiesen, dass die Standardfunktionen nicht alle korrekt funktionieren werden, der Zugriff auf die Zeitreihen wird korrekt funktionieren

2. ich verstehe nicht, warum Sie die Aufgabe verkomplizieren müssen? Array High[i] wird nirgendwo hingehen, warum es noch einmal kopieren? wenn Sie Angst haben, "einen Balken zu verlieren", wenn Sie einen neuen Balken öffnen, erinnern Sie sich an die Zeit des Balkens - die Zeit wird sich nie ändern, Sie können diese Konstruktion High[iBarShift(NULL,0,mytime)] verwenden

ZS: nach der Phrase: "Ich vermute, dass das Problem in der zufälligen Initialisierung einiger Variablen liegt. Versuchen Sie, alle Variablen in dem problematischen Codeabschnitt auszudrucken()

 
IgorM:
Danke Igor, ich werde es auf diese Weise versuchen!
 

Ich habe es jetzt eine Woche lang studiert.)

Ich muss ihm vorschreiben, zwei Aufträge (multidirektional) mit einem bestimmten Stop und Gewinn zu öffnen, und dann, wenn ich sie schließe, öffne ich andere Aufträge mit genau dem gleichen Betrag + Flow Check und nur offene Positionen mit 8 bis 8

Vielen Dank im Voraus))

 
vkontakte0:

Ich studiere es schon seit einer Woche)).

Ich muss ihm vorschreiben, zwei Aufträge (multidirektional) mit einem bestimmten Stop und Gewinn zu öffnen und dann, wenn ich sie schließe, öffne ich andere Aufträge mit dem gleichen Betrag + Flow Check und nur offene Positionen mit 8 bis 8

danke im Voraus)))

Ich denke, dass ein Lehrbuch nicht ausreicht. Der Markt ist voll von MQL-Skripten und den Grundlagen des "Expertenschreibens" (ich schicke Ihnen die Links privat, wenn Sie sie brauchen). Ich habe zum Beispiel

Ich habe sie heruntergeladen und ins chm-Format konvertiert. Ich habe sie immer griffbereit. Wenn ich mit Expert Advisors handeln will, habe ich es eilig, ich muss mich mit Indizes vertraut machen und dann die Sache verkomplizieren, IMHO.