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

 

Hallo!

Können Sie mir bitte zeigen, wie ein EA, der auf Triple Exponential Average basiert, verboten werden kann, eine Position zu eröffnen, wenn der letzte Trade auf SL herausgenommen wird?

Совершение сделок - Торговые операции - MetaTrader 5
Совершение сделок - Торговые операции - MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 

MQL5
Im normalen Modus habe ich damit keine Probleme, aber sobald ich die Optimierung starte, wird bei jedem Durchlauf ein Fehler gedruckt und es gibt keine Ausgabe.

Aber das Problem ist, dass der Code nicht einmal ausgeführt wird. Ich habe Prints um das Programm gelegt, keine Ausgabe, nur ein Fehler bei jedem Lauf, der beendet wird.

Warum funktioniert das Drucken nicht?

 
Roman Sharanov:

MQL5
Der Expert Advisor funktioniert im normalen Modus problemlos, aber sobald ich mit der Optimierung beginne, beschwert er sich bei jedem Durchgang, dass er die Array-Grenzen erreicht hat.

Aber das Problem ist, dass der Code nicht einmal ausgeführt wird. Ich habe Prints um das Programm gelegt, keine Ausgabe, nur ein Fehler bei jedem Lauf, der beendet wird.

Warum funktioniert Drucken nicht?

Sie müssen die Array-Größe überprüfen. Es wird eine Zeile angezeigt, in der ein Ausgang außerhalb des Arrays vorhanden ist. Hier müssen Sie Print vor dieser Zeile einfügen, in der Sie die Ausgabe der Array-Größe und des Indexes schreiben, mit dem Sie versuchen, auf Array-Daten zuzugreifen - die Array-Größe und der Index werden im Protokoll ausgegeben, und dann wird das Programm mit einem Fehler beendet.

ABER! Führen Sie all dies im Testprogramm im visuellen Modus durch, nicht im Optimierer - im Optimierer (und im Testprogramm im nicht-visuellen Modus) sind alle Drucker für die Beschleunigung deaktiviert.

 
Artyom Trishkin:

Verlassen Sie das Array, bevor Sie Print() erreichen.

Überprüfen Sie die Größe des Arrays. Es wird eine Zeile angezeigt, in der die Ausgabe außerhalb des Arrays liegt. Vor dieser Zeile müssen Sie Print einfügen, in das Sie die Ausgabe der Array-Größe und des Indexes schreiben, mit denen Sie versuchen, auf Array-Daten zuzugreifen - die Array-Größe und der Index werden in das Journal gedruckt, und dann wird das Programm abstürzen.

ABER! Machen Sie das alles im Testgerät im visuellen Modus, nicht im Optimierer - im Optimierer (und im Testgerät im nicht-visuellen Modus) sind alle Drucker für die Beschleunigung ausgeschaltet.

Das ist das Problem, alles funktioniert mit beliebigen Parametern im Bildmaterial, aber mit jeder Optimierung gerät es außer Kontrolle

 
Roman Sharanov:

Das ist das Problem, dass mit beliebigen Parametern in der Visualisierung alles funktioniert, aber mit jeder Optimierung ist das nicht mehr möglich.

Was befindet sich in dem Feld? Ich kann nur vermuten, dass entweder noch keine Daten im Array vorhanden sind oder dass es kleiner ist, als Sie denken. Gibt es im Programm irgendwelche Überprüfungen für die Array-Größe?

 
Artyom Trishkin:

Was befindet sich in dem Feld? Ich kann nur vermuten, dass entweder noch keine Daten im Array vorhanden sind oder es kleiner ist, als Sie denken. Wird im Programm die Größe des Arrays überprüft?

Letzte N, ich habe 500, macd-Werte, und Zyklus Grenzen sind streng begrenzt und kann nie kleiner als 0 und größer als N, ich habe beide debugged es und auf Papier gezählt

 
Roman Sharanov:

Die letzten N, ich habe 500, macd-Werte, und die Grenzen der Schleife sind streng begrenzt und kann nie kleiner als 0 und größer als N, ich habe beide debugged es und auf dem Papier gezählt

Sind Sie sicher, dass das Array mit Daten gefüllt ist, wenn Sie es aufrufen? Gibt es eine Prüfung auf Datenverfügbarkeit und darauf, dass das Array den richtigen Wert hat?

Nur weil es auf einem Stück Papier geschrieben und berechnet ist, heißt das nicht, dass es mit dem übereinstimmt, was der EA erhalten hat (nicht erhalten hat).

 
Artyom Trishkin:

Sind Sie sicher, dass das Array mit Daten gefüllt ist, wenn Sie es aufrufen? Gibt es eine Überprüfung, ob die Daten verfügbar sind und ob das Array die richtige Größe hat?

Nur weil es auf einem Stück Papier geschrieben und berechnet ist, heißt das nicht, dass es mit dem übereinstimmt, was der Expert Advisor erhalten hat (nicht erhalten hat).

Ja, zu Beginn, vor allen Operationen, wird er aus dem Puffer kopiert.

 
Wie lautet die allgemeingültige Formel für die Berechnung des Break-even-Preises, wenn in der Transaktion Provisionen und Swaps enthalten sind?

Es gibt eine einfache Formel, die für Kurse mit 5 Ziffern und Einzahlung in usd funktioniert

Lot x Gewinn in Pips = Gewinn in $.

Wenn es sich um einen Kauf handelt und bei dem Geschäft Swaps und Provisionen anfallen, dann wird der Break-even-Preis etwas höher sein als der Eröffnungskurs.
(Wenn es keine Swaps und Provisionen gibt, ist der Break-even der Eröffnungskurs)

Aber wenn es sich um ein exotisches Instrument handelt oder die Notierung 4- oder 2-stellig ist oder die Einzahlungswährung Pfund ist. Die obige Formel ist nicht hilfreich.
Gibt es eine universelle Formel?
 
Roman Sharanov:

Ja, am Anfang, vor allen Operationen, aus dem Puffer kopiert

Kopiert. Und wie viel wird kopiert und kontrolliert?

Wenn Sie einen Indikator mit Glättung verwenden, werden einige Balken mehr benötigt, als Sie erwarten. Die Tatsache, dass Sie kopiert haben, bedeutet also nicht, dass die Daten auch kopiert wurden und in voller Größe zur Verfügung stehen.

Es ist einfacher, die Größe des Arrays zu überprüfen und, falls es nicht die erforderliche Größe hat, OnTick() zu beenden.

Grund der Beschwerde: