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

 
Artyom Trishkin:
Erstellen Sie eine virtuelle Linie, kein grafisches Objekt, anstelle einer Trendlinie. bzw. und erhalten den Wert nicht durch ObjectGetValueByShift("1",bar_seek), sondern durch eine Geradengleichung.
Danke! - Ich werde es versuchen.)
 
Nikolay Gaylis:
Danke, ich werde es ausprobieren ;-).
Bitte sehr...
 
Nikolay Gaylis:
Danke! Ich werde es versuchen)

Ich habe vor langer Zeit einen Artikel auf mql4.com geschrieben. Sie enthält eine detaillierte Beschreibung der Arbeit mit virtuellen Trendlinien und der Suche nach dem richtigen Kurswert auf dem rechten Balken dieser virtuellen Linien.

In kodobase gibt es einen Indikator, der auf diesem Artikel basiert. Darin habe ich bereits den Code für das neue mql4 überarbeitet.

 
Artyom Trishkin:
Das muss die Idee gewesen sein. Bei dieser Prüfung werden jedoch nicht nur ausstehende Aufträge berücksichtigt, sondern auch alle Transaktionen auf einem Handelskonto - Einzahlungen, Abhebungen, Boni usw.
Nikolay Gaylis:

Diese Bedingung ermöglicht es dem Ausschuss, nurmit gestapelten Aufträgen zu arbeiten. Ist das die Absicht?

    if(OrderSymbol() ==Symbol() &&OrderType()<2)
          continue;
Eigenschaften von Aufträgen

Art der Operation für die Funktion OrderSend(). Kann einer der folgenden Werte sein:

Konstante
Wert
Beschreibung
OP_BUY
0
Kaufen
OP_SELL
1
Verkaufen
OP_BUYLIMIT
2
Ausstehender BUY LIMIT-Auftrag
OP_SELLLIMIT
3
Ausstehender SELL LIMIT-Auftrag
OP_BUYSTOP
4
Ausstehender BUY STOP-Auftrag
OP_SELLSTOP
5
Ausstehender SELL STOP-Auftrag


Die Berechnung sieht vor, dass die schwebenden Aufträge erst dann angenommen werden, wenn sie in Marktaufträge für das aktuelle Symbol umgewandelt wurden. Nachdem die letzte Marktorder (wenn es viele davon gibt) für das aktuelle Symbol verarbeitet wurde, wird der EA aus dem Chart entfernt (jetzt wird er sofort nach dem Auslösen der ersten Order entfernt und es wird nur darauf geachtet, dass wenn es eine Order für das aktuelle Symbol und eine andere für ein anderes gibt, der EA dies berücksichtigt).

Warum passiert das, und wo sollte ich einen Returnee-Auftrag platzieren, damit er beim Schließen des nächsten Auftrags eine Funktion direkt an die Bedingungen nach count++ sendet und erst dann mit dem Abspielen beginnt, wenn der letzte Auftrag ausgelöst wurde. Zum Schluss setze ich Orderselect() ein, um den letzten Auftrag zu bestimmen (wenn der Auftrag geschlossen ist und wir ihn nicht auswählen können, gibt es in diesem Diagramm nichts zu tun)

 
trader781:
Eigenschaften von Aufträgen

...


Die schwebenden Aufträge werden erst dann berücksichtigt, wenn sie in unlimitierte Aufträge für ein aktuelles Symbol umgewandelt werden. Nachdem die letzte Marktorder (wenn es viele davon gibt) für das aktuelle Symbol abgearbeitet wurde, löscht sich der Expert Advisor selbst aus dem Chart (er wird sofort nach dem Auslösen der ersten Order gelöscht und achtet darauf, dass er berücksichtigt, wenn es eine Order für das aktuelle Symbol und eine andere für ein anderes Symbol gibt).

warum dies geschieht und wo ein Returnee zu setzen, so dass, wenn die nächste Bestellung geschlossen wird, sendet es eine Funktion sofort an die Bedingungen nach count + und nur nach der letzten Bestellung ausgelöst hat, wird es playsound laufen. Schließlich setzte ich Orderselect() ein, um den letzten Auftrag zu bestimmen (wenn der Auftrag geschlossen ist und wir den Auftrag nicht auswählen können, haben wir in diesem Diagramm nichts zu tun)

if(OrderSymbol() ==Symbol() &&OrderType()<2)
          continue;

Dieser Code überspringt alle Marktpositionen in der Schleife.

Was dann folgt, ist mir nicht bekannt, aber wenn wir andere Auftragsarten - die 2 und höher - bearbeiten, werden bei dieser Bearbeitung alle Arten von ausstehenden Aufträgen und Aufträge des Typs 6 - Aktionen auf dem Konto - berücksichtigt.

Wo ist der Code für den gesamten Zyklus?

 
Artyom Trishkin:
if(OrderSymbol() ==Symbol() &&OrderType()<2)
          continue;


Wo ist der Code für den gesamten Zyklus?

Beitrag 236

dieser Abschnitt sollte nur die Marktdaten für das aktuelle Instrument enthalten

 
trader781:

Beitrag 236

dieser Abschnitt sollte nur Marktdaten zum aktuellen Instrument enthalten

Diese Schleife, die Sie haben, ist dummerweise überhaupt leer. Es macht überhaupt keinen Sinn - es verlangsamt sich nur, wenn Sie eine große Anzahl von Aufträgen in Ihrem Konto haben.

Und räumen Sie Ihren Code auf - das ist nur unlesbarer Müll, kein Code.

Und warum brauchen Sie doppelte geschweifte Klammern in OnTick()? Was ist die heilige Bedeutung davon?

 
Artyom Trishkin:

Und bringen Sie Ihren Code in Ordnung - das ist nur unlesbarer Schrott, kein Code.

Verstehen Sie mich nicht falsch. Wenn ich es so machen könnte, wie Sie es wollen, säße ich nicht hier. Deshalb bitte ich um Hilfe bei der Lösung der aktuellen Aufgabe.

 
trader781:
Artyom Trishkin:

Und bringen Sie Ihren Code in Ordnung - das ist nur unlesbarer Schrott, kein Code.

Verstehen Sie mich nicht falsch. Wenn ich es so machen könnte, wie Sie es wollen, säße ich nicht hier. Deshalb bitte ich Sie, mir bei der Lösung der aktuellen Aufgabe zu helfen.

Vielleicht können Sie leere Zeilen aus dem Code entfernen? Sind dafür besondere Fähigkeiten erforderlich?

Eigentlich gibt es die Tastenkombination Strg+"," - ein Styler. Zwar schlecht, aber immerhin. Und dann können Sie leere Zeilen aus dem Code löschen, um zu verhindern, dass die Leute sich den "Mist" ansehen. Es ist die einfachste Art der Kommunikation.

Aber nachdem Sie Ihren Code aufgeräumt haben, wird er für Sie besser lesbar, ganz zu schweigen von anderen Personen, die Ihre Logik ebenfalls verstehen müssen. Alle Unzulänglichkeiten werden dort zu sehen sein.

 
Artyom Trishkin:

Sie wissen wahrscheinlich, wie man leere Zeilen aus dem Code entfernt, nicht wahr? Sind dafür besondere Fähigkeiten erforderlich?

Es gibt sogar ein Tastaturkürzel Strg+"," - ein Styler. Zwar schlecht, aber immerhin. Und dann können Sie leere Zeilen aus dem Code löschen, um zu verhindern, dass die Leute sich den "Mist" ansehen. Es ist die einfachste Art der Kommunikation.

Aber nachdem Sie Ihren Code aufgeräumt haben, wird er für Sie besser lesbar, ganz zu schweigen von anderen Personen, die Ihre Logik ebenfalls verstehen müssen. Und alle Ihre Unzulänglichkeiten werden dort zu sehen sein.

Wenn Sie Ihren Code bereinigt haben, wird er für Sie besser lesbar, ganz zu schweigen von anderen Personen, die Ihre Logik ebenfalls verstehen müssen. Dort werden alle Fehler zu finden sein.

OK, ist das besser?
Dateien: