[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 525

 

Guten Abend.

Ich bin ein bisschen ein "Kruzianer", wenn es um Codierung geht :) Ich baue einen Expert Advisor auf Basis des Fibonacci-Indikators. Ich habe bisher nicht auf die Strategie geachtet. Das Problem ist, 7 Fibonacci-Levels, wie man jede Ebene gekreuzt machen nur 2 verschiedene schwebende Aufträge und nicht mehr gesetzt.

Ich wäre für jeden Tipp dankbar.

Entschuldigen Sie mein unbeholfenes Russisch.

Dateien:
 
Usual_Trader:


Wie ich es verstehe, funktioniertRefreshrates( ) auf dem aktuellen Instrument oder aktualisiert es Daten auf allen Instrumenten?


Für alle Instrumente.
 
Sarguss:

Guten Abend.

Ich bin ein bisschen wie ein "Kruzianer", wenn es um die Programmierung geht :) Ich baue einen Expert Advisor auf Basis des Fibonacci-Indikators. Ich habe bisher nicht auf die Strategie geachtet. Das Problem ist, 7 Fibonacci-Levels, wie man jede Ebene gekreuzt machen nur 2 verschiedene schwebende Aufträge und nicht mehr gesetzt.

Ich wäre für jeden Tipp dankbar.

Entschuldigen Sie mein unbeholfenes Russisch.


Arbeit

P.S. "Ein Hecht für eine Karausche döst nicht" (russisches Sprichwort).

 
Roll:


Arbeit

P.S. "Ein Hecht für eine Karausche" (russisches Sprichwort).


Danke für das Sprichwort:))) Genau zum Thema -

Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich nirgendwo - 4.

Beende es - jede Antwort Profi!

 

Hallo Experten, bitte helfen Sie mir, ein Skript zu erstellen. Auf dem Diagramm sind zwei MA-Indikatoren(gleitender Durchschnitt) zu sehen: MA1 ist rot und MA2 ist blau markiert. Die Aufgabe des Skripts ist es, MA1 und MA2 so zu kreuzen, dass die rote Linie die blaue von oben nach unten kreuzt. Wir nennen diesen Punkt A, und wenn die rote Linie die blaue von oben nach unten kreuzt, ist dies Punkt B. Am Punkt A müssen wir also einen Verkaufsauftrag schließen und einen Kaufauftrag eröffnen, und am Punkt B müssen wir einen Kaufauftrag schließen und einen Verkaufsauftrag eröffnen. Diese Schleife sollte unendlich sein. Beigefügt ein ähnlicher Code, bitte helfen Sie mir, ich werde sehr dankbar sein

Dateien:
 
Lisi4ka330:
Um die Verwirrung nicht noch größer zu machen, möchte ich den Fehler korrigieren, den ich in der vorherigen Antwort gemacht habe - die Schreibweise "array1[Bars*6-60,60][0]" ist nicht korrekt, da Bars*6 die Gesamtzahl der Elemente in array1 ist.Jeder Balken hat 6 Eigenschaften, nehmen wir an, wir haben 30 Balken. Multiplizieren wir mit 6, erhalten wir die Anzahl der Elemente im ersten Array - 180. Das zweite Feld hat nur 60 freie "Zellen" (d.h. 10 x 6 Eigenschaften), also müssen wir nur 60 Elemente aus dem ersten Feld zum Kopieren auswählen. Mit dem Ausdruck [Bars*6-60,60] subtrahieren wir 60 von der Gesamtsumme, d.h. 180 - 60 = 120, d.h. 120 Elemente des ersten Arrays werden in das Null-Element des zweiten kopiert, 121 in das erste und so weiter. Eine andere Frage ist, wie es kommt, dass die Informationen über die zuletzt gebildeten Takte nicht am Anfang des ersten Arrays stehen, sondern am Ende ... Aber anscheinend liegt die Antwort im Funktionscode, und es macht keinen Sinn, noch tiefer zu graben...


Nun, ich habe eine Datenbank, das hat nichts damit zu tun. Natalya hat logisch korrekt geschrieben. Und selbst in dem Fall, in dem wir 30 Takte haben, ist derArray1-Indexwert 120. Dementsprechend wird der Wert des entsprechenden Index vonarray2 bereits bei der Initialisierung mit 10 angegeben.

https://docs.mql4.com/ru/array/ArrayCopy

double array2[10][6];

Das habe ich in einem C-Buch gelesen:

Die Sprache C kontrolliert keine Array-Überläufe, was bedeutet, dass Sie technisch gesehenkönnen Sieetwas in ein Element mit einem nicht existierenden Index schreiben, zum Beispiel in A[345] oder in A[-12].Dabei wird jedoch eine Zelle im Speicher gelöscht, die nicht zum Array gehört, so dassdie Folgen eines solchen Schrittes unvorhersehbar sind und das Programm in vielen Fällen hängen bleibt.

Es stellt sich heraus, dass der Index von array1(dem Quell-Array) größer ist als der entsprechende Index vonarray2 (dem Ziel-Array). Und folglich sollten Sie es nicht auf diese Weise tun! Das ist es, was ich meinte...

 

Hallo zusammen!

Ich habe versucht, meinen ersten EA zu schreiben :-), aber es traten einige Schwierigkeiten auf.

Die Logik dahinter ist die folgende: Es gibt einen Indikator, der Max und Min für die letzten n Bars anzeigt, wenn er ein Maximum oder Minimum durchbricht, sollte eine Order eröffnet werden.

Wenn ich den EA mit dem Chart verbinde, eröffnet er eine VERKAUFEN-Position. Ich weiß nicht, warum das so ist.

Ich denke, der Fehler liegt in der Funktion iCustom(), die Indikatorparameter sendet.

Ich habe den EA und den Indikator beigefügt.

Dateien:
xox.mq4  10 kb
 
Und hier ist der Indikator.
Dateien:
go_go_1.mq4  2 kb
 
Pacman:

Hallo zusammen!

Ich habe versucht, meinen ersten EA zu schreiben :-), aber es traten einige Schwierigkeiten auf.

Die Logik dahinter ist die folgende: Es gibt einen Indikator, der Max und Min für die letzten n Bars anzeigt, wenn er ein Maximum oder Minimum durchbricht, sollte eine Order eröffnet werden.

Wenn ich den EA mit dem Chart verbinde, eröffnet er eine SELL-Position. Ich weiß nicht, warum das so ist.

Ich denke, der Fehler liegt in der Funktion iCustom(), die Indikatorparameter sendet.

Ich habe den Expert Advisor und den Indikator beigefügt.

Sie füllen nicht den 0. Index der Indikator-Arrays,

   for(k=1; k<=Quant_Bars; k++)
      {
       Line_1[k]= Minimum;
       Line_2[k]= Maximum;
      }

aber Sie greifen darauf zu:

   double L_1= iCustom(NULL,0,"Go_go",K,0,0);  //Линия минимума
   double L_2= iCustom(NULL,0,"Go_go",K,1,0);  //Линия максимума 

Es ist ein bisschen (strukturell) ungünstig, aber für das erste Mal reicht es. Mein Rat: "Gewöhnen Sie sich sofort an korrekte Vorgehensweisen beim Schreiben von Code. Verwenden Sie zum Beispiel diese Bedingung in Ihrem Code:

       if(Total==0 && Opn_B==true)              //Открытых ордеров нет + 
Er ist unausgereift, denn früher oder später werden Sie vom Tester zum Online-Handel wechseln, und es gibt mehrere Expert Advisors, die parallel arbeiten, und dieser Code wird nicht funktionieren.
 
Pacman:
Und hier ist der Indikator.

Was ist Ihr Problem mit iHighest() und iLowest()?