Fehler, Irrtümer, Fragen - Seite 2856

 

Hallo. Ichhabe ein Missverständnis:
Wie kann ich Trade\Trade.mqh verwenden, um eine bestehende Order zu ändern?
Der OrderModify-Befehl von Trade.mqh erfordert, dass ich 7 Parameter setze, einschließlich des letzten: StopLimit-Order, was für mich verwirrend ist, weil ich ihn überhaupt nicht brauche... Und er ist bei der Standardausführung nicht erforderlich...

OrderModify(const ulong ticket,const double price,const double sl,const double tp, const ENUM_ORDER_TYPE_TIME type_time,const datetime expiration,const double stoplimit=0.0);

Ich habe einen Verkaufsstopp, den ich nach dem Minimum nach oben verschieben möchte, und ich kann es nicht mit OrderModify tun , und ich verstehe nicht, wie ich eine bestehende SellStop-Order mit Trade\Trade.mqh ändern kann.

Ich muss dilettieren und eine neue Bestellung aufgeben.

Wie kann ich den Verkaufsstopp richtig setzen?

 
Сергей Таболин:

Igor, die Frage bezog sich nicht auf den Fehler im Code selbst, sondern darauf, warum er während der Optimierung einen Fehler schreibt, aber nicht während eines einzelnen Laufs?

Ich bin nicht gut in Telepathie, ich lerne es gerade.

aber ich werde es versuchen.... Unter der Annahme, dass Sie den Code auf der richtigen Ebene geschrieben haben, ist es möglich, dass Sie während der Optimierung auf den Wert der Eingabevariablen kommen, was einen kritischen Fehler verursacht

.... Eine andere Möglichkeit ist, anzunehmen, dass Sie nicht wissen, dass der Optimierer Aufgaben in Stapeln erhält, und vielleicht gibt es einen Fehler in einer der Aufgaben

.... Sie können auch davon ausgehen, dass, wenn Sie Variable im globalen Bereich initialisieren (es kann ein Funktionsaufruf während der Initialisierung oder Konstruktor der Klasse sein) und Optimierer initialisiert es einmal für Konstanten und Statik (obwohl es scheint, dass nur für Statik - ich vergaß) für jeden Agenten, für die gesamte Optimierung Zeit, aber in einem einzigen Durchgang jeden einzelnen Durchgang...

... hz

 
Yura Fomin:

Hallo. Ichhabe ein Missverständnis:
Wie kann ich Trade\Trade.mqh verwenden, um eine bestehende Order zu ändern?
Der OrderModify-Befehl von Trade.mqh erfordert, dass ich 7 Parameter setze, einschließlich des letzten: StopLimit-Order, was für mich verwirrend ist, weil ich ihn überhaupt nicht brauche... Und er ist bei der Standardausführung nicht erforderlich...

Ich habe einen Verkaufsstopp, den ich nach dem Minimum nach oben verschieben möchte, und ich kann es nicht mit OrderModify tun , und ich verstehe nicht, wie ich eine bestehende SellStop-Order mit Trade\Trade.mqh ändern kann.

Ich muss dilettieren und eine neue Bestellung aufgeben.

Wie verschiebe ich die Verkaufsstopp-Level richtig?

Es gibt ein Beispiel inPending Trailing

Pending Trailing
Pending Trailing
  • www.mql5.com
Советник относится к классу утилит. Работает со всеми отложенными ордерами установленными в терминале. Подтягивает отложенный ордер вслед за ценой. Например отложенные ордера 'Buy stop' и 'Sell limit'...
 
TheXpert:
Ein Semikolon nach geschweiften Klammern ist nicht notwendig, wahrscheinlich in keiner Sprache.
Ich danke Ihnen. Die Zweideutigkeit der Syntax, wenn beide richtig sind, ist nicht gut.
 
Igor Makanu:

Ich bin nicht gut in Telepathie, ich lerne es gerade.

aber ich werde es versuchen.... Angenommen, Ihr Code ist auf einem angemessenen Niveau geschrieben, ist es möglich, dass Sie während der Optimierung zu dem Wert der Eingabevariablen gelangen, der einen kritischen Fehler verursacht

.... Eine andere Möglichkeit ist, anzunehmen, dass Sie nicht wissen, dass der Optimierer Aufgaben in Stapeln erhält, und vielleicht gibt es einen Fehler in einer der Aufgaben

.... Sie können auch davon ausgehen, dass, wenn Sie Variable im globalen Bereich initialisieren (es kann ein Funktionsaufruf während der Initialisierung oder Konstruktor der Klasse sein) und Optimierer initialisiert es einmal für Konstanten und Statik (obwohl es scheint, dass nur für Statik - ich vergaß) für jeden Agenten, für die gesamte Optimierung Zeit, aber in einem einzigen Durchgang jeden einzelnen Durchgang...

... hz

)))))

Was hat die Telepathie damit zu tun?

Es gibt ein Array, es wird initialisiert und ohne Probleme verwendet. Alles funktioniert. Aber auf dem Weg nach draußen gibt es ein Durcheinander...

void OnDeinit(const int reason)
{
   //Print(ArraySize(netMLP));
   //Print(ArraySize(indicators)+1);
   for(int i = ArraySize(indicators); i >= 0; i--) delete netMLP[i];

Alles wurde überprüft. Aber der Unterschied zwischen dem Verhalten des Analysators im Optimierungsmodus und im Einzellauf ist offensichtlich. Die Frage ist, warum? Wenn irgendwo und irgendwie etwas falsch ist, muss es in beiden Fällen falsch sein. Nicht wahr?

 
Сергей Таболин:

)))))

Was hat die Telepathie damit zu tun?

Es gibt ein Array, es wird initialisiert und ohne Probleme verwendet. Alles funktioniert. Aber auf der anderen Seite, beim Ausstieg, kommt es zu einer solchen Katastrophe...

Alles wurde überprüft. Aber der Unterschied zwischen dem Verhalten des Analysators im Optimierungsmodus und im Einzellauf ist offensichtlich. Die Frage ist, warum? Wenn irgendwo und irgendwie etwas nicht stimmt, dann muss es in beide Richtungen falsch sein. Nicht wahr?

Schreiben Sie es auf, um des Anstands willen:

for(int i = ArraySize(netMLP); i >= 0; i--) delete netMLP[i];

Es gibt also keine Garantie, dass die Abmessungen gleich sind. Was die Arrays sind, weiß niemand.

 
Stanislav Korotky:

Schreiben Sie es auf, um den Anstand zu wahren:

Es gibt also keine Garantie, dass die Abmessungen gleich sind. Niemand weiß, was die Arrays sind.

Ich weiß es)))

Ich habe sie ersetzt. Der von mir angegebene Fehler ist verschwunden )))) Aber der andere taucht immer wieder auf:

2020.09.24 22:48:38.470 Core 3  pass 11877 tested with error "OnInit returned non-zero code 1" in 0:00:00.000

Ich wiederhole: In der vorherigen Version gab es so etwas nicht.

Ich habe mehrere Prüfungen mit return(INIT_FAILED);

Aber ihnen allen gehen Drucke voraus. Aber es gibt keine Abdrücke. (((

 
Сергей Таболин:

nur in die Datei schreiben:

- Vorzeichenoptimierung ein/aus

- Vermittlernummer

- und alle in OnDeanit() verwendeten Variablen

ohne dies werden Sie keinen Fehler finden - der Optimierer funktioniert ohne Probleme, ich benutze ihn ständig

 
Сергей Таболин:

Ich schon)))

Ersetzt. Der von mir erwähnte Fehler ist verschwunden )))) Aber es taucht immer wieder eine neue auf:

Ich wiederhole: In der vorherigen Version gab es so etwas nicht.

Doppelklicken Sie auf den entsprechenden Optimierungspass und Sie erhalten ein einzelnes Laufprotokoll mit allen Details, warum die Initialisierung fehlgeschlagen ist - Zeile und Spalte in der Quelle.

 
Igor Makanu:

nur in die Datei schreiben:

- Vorzeichenoptimierung ein/aus

- Vermittlernummer

- und alle in OnDeanit() verwendeten Variablen

Ohne dies werden Sie den Fehler nicht finden - der Optimierer funktioniert ohne Probleme, ich benutze ihn ständig.

Ok, ich schließe das Schreiben in die Datei wieder an. Vielleicht gibt es einen Grund... die es vorher nicht gab...