Fehler Nr. 1 beim Ändern von Aufträgen - Seite 5

 
borilunad:

Victor, warum haben Sie den SL und TP in den schwebenden Positionen geändert? Im Allgemeinen ist es sinnvoll, den SL erst nach der Eröffnung einer Position zu setzen und den TP nach der Übertragung des SL auf den B/S! Warum also den Server umsonst so sehr belästigen und warum müssen Sie sich all diese Mühe machen?!

Wir müssen den Code minimieren und vereinfachen, damit er schnell und klar funktioniert, und dann wird es einfacher sein, ihn aufgrund der Launen des Marktes zu optimieren! Berücksichtigen Sie sorgfältig alle Nuancen der Marktrealitäten!

Ich setze auch einen Stop-Loss auf die schwebenden Aufträge, nur für den Fall, dass die Verbindung unterbrochen wird oder mich etwas anderes daran hindert, einen genaueren Stop (aus Sicht des Systems) zu setzen, nachdem der Auftrag ausgelöst wurde.

Wenn alles in Ordnung ist, setze ich, nachdem der Auftrag ausgelöst wurde, einen Stopp auf dem richtigen Niveau.

 
Stells:

Ich setze auch sofort einen Stop-Loss auf die schwebenden Aufträge, für den Fall, dass die Verbindung unterbrochen wird oder mich etwas anderes daran hindert, einen aus Sicht des Systems korrekteren Stop zu setzen, nachdem der Auftrag ausgelöst wurde.

Wenn alles in Ordnung ist, setze ich, nachdem der Auftrag ausgelöst wurde, einen Stopp auf dem richtigen Niveau.

Darin haben Sie Recht, wenn Sie gemäß dem TS Ihren SL nahe am Eröffnungskurs setzen! Aber den Eröffnungskurs, SL und TP mehrmals zu ändern ist nicht sinnvoll, es kostet so viel Mühe und verkompliziert den Code, es ist den Aufwand nicht wert!
 

Victor, wenn du es so dringend brauchst, kannst du es einfacher machen! Überprüfen Sie nur den Eröffnungskurs, und markieren Sie SL und TP auf die gleiche Weise wie bei einem schwebenden Auftrag mit SL und TP!

Das heißt, für den SL schreiben Sie Ask-SL oder Bid+SL, und für den TP entsprechendAsk+TP oder Bid-TP! Probieren Sie es aus, es sollte gut funktionieren! Nichts ist also unmöglich! :)

 
borilunad:

Möchten Sie die Funktion Modify()?

Ich würde nicht nein sagen. Und ich warte sogar irgendwo... Seit gestern Abend.

keekkenen:
der Code scheint in Ordnung... aber auf realen (nicht Demo) es funktioniert?
Ja. Bei vielen EAs, bei denen ich nicht 3 Eingabeparameter auf einmal ändern musste, funktioniert es. Beachten Sie, dass ich eine Variante für den Tester heruntergeladen habe und es auch eine Variante für die reale Welt gibt.

borilunad:

Victor, warum haben Sie angefangen, SL und TP in den schwebenden Aufträgen zu ändern? Im Allgemeinen ist es sinnvoll, den SL erst nach der Eröffnung einer Position zu setzen und den TP, nachdem der SL auf B/B verschoben wurde! Warum also den Server umsonst so sehr belästigen und warum müssen Sie sich all diese Mühe machen?!

Wir müssen den Code minimieren und vereinfachen, damit er schnell und klar funktioniert, und dann wird es einfacher sein, ihn aufgrund der Launen des Marktes zu optimieren! Denken Sie sorgfältig über alle Nuancen im Zusammenhang mit den Marktrealitäten nach!

Boris, wenn laut Dokumentation 3 Parameter gleichzeitig geändert werden können, warum sollte man das nicht nutzen? Schließlich ist es ja praktisch! Ich überlege, die Stop- und Take-Optionen zu ändern, aber ich möchte, dass diese Option richtig funktioniert, wenn diese Funktion in der Dokumentation angegeben ist. Wenn das nicht der Fall ist, müssen wir schreiben, dass es nicht möglich ist. Dann wird die Frage von selbst verschwinden.
 
borilunad:
Darin haben Sie Recht, wenn Sie laut TS Ihren SL in die Nähe des Eröffnungskurses legen! Aber den Eröffnungskurs, SL und TP mehrmals zu ändern ist unvernünftig, so viel Aufwand zu verschwenden und den Code zu verkomplizieren, das ist den Aufwand nicht wert!

Boris, wer sagt, dass ich zu oft auf den Server einprügele? Ich habe nicht über das Handelssystem gesprochen. Es gibt verschiedene Varianten. Manchmal wird nur STOP verschoben, manchmal werden auch STOP und TAKE verschoben. Es handelt sich um verschiedene Varianten. Aber in diesem Fall, in meinem Fall, werden die Haltestellen im Durchschnitt alle paar Stunden verschoben. Oder einmal pro Stunde. Ist das eine Menge erschwert Code?

Im Gegenteil, der Code wird... Einfacher. Sie rufen eine Änderungsfunktion auf... Geben Sie 3 Parameter ein und ändern Sie sie... Im Idealfall, ohne Berücksichtigung von Störungen im Terminal.

Aber wenn nicht, dann ist es eben so. Dann müssen wir den OFFENEN PREIS ändern, dann sind die Bedingungen erfüllt... den STOPP-Kurs, und nachdem einige Bedingungen erfüllt sind oder eine gewisse Zeit vergangen ist, müssen wir den NUTZEN-Kurs ändern. Ist das wie Vereinfachung Code?

 
hoz:

Ich werde nicht nein sagen. Und ich warte sogar irgendwo... Also seit gestern Abend.

Ja. Bei vielen EAs, bei denen ich nicht 3 Eingabeparameter auf einmal ändern musste, funktioniert es. Beachten Sie, dass ich die Version für den Tester diskontiert haben, und es gibt auch für die reale.

Boris, wenn laut Dokumentation 3 Parameter gleichzeitig geändert werden können, warum sollte man das nicht nutzen? Schließlich ist es ja praktisch! Ich überlege, die Stop- und Take-Optionen zu ändern, aber ich möchte, dass diese Option richtig funktioniert, wenn diese Funktion in der Dokumentation angegeben ist. Wenn das nicht der Fall ist, müssen wir schreiben, dass es nicht möglich ist. Dann wird die Frage von selbst verschwinden.

Victor, schauen Sie sich meinen nächsten Beitrag an, in dem ich Ihnen die Idee gebe, nur den Eröffnungskurs zu prüfen und den SL und TP ohne viel Aufhebens von diesem Preis neu zu setzen!

Und ich werde die Funktion jetzt einstellen! Ich habe auch irgendwo "gewartet", dass Sie gestern geantwortet haben! Wir werden einfacher sein.

#include <stderror.mqh>//штатные инклюдники, чтобы 
#include <stdlib.mqh>  //вызывался ErrorDescription()



//------------------------/  Modify Order  \------------------------\\
void ModifyOrder(int ticket,double price,double stoploss,double takeprofit,datetime e,color arrow_color)
{
  int ModifyCnt = 0, err;
  while(ModifyCnt < 3) {
    if(OrderModify(ticket,NormalizeDouble(price,Digits),NormalizeDouble(stoploss,Digits),
    NormalizeDouble(takeprofit,Digits),0,arrow_color))
    ModifyCnt = 3;
    else err = GetLastError();
    if(err > 0) { 
      Print(ModifyCnt," #",ticket," Error modifing order: (", err , ") " , ErrorDescription(err));
      Sleep(5000); RefreshRates(); ModifyCnt++;
} } }

Wenn Sie Fragen haben, fragen Sie, warten Sie nicht bis morgen! ;)

Funktion ist universell, dient für beliebige Modifikationen mit schwebenden und offenen Positionen! Viel Glück!

Gerade jetzt, wie gestern, zum Mittagessen gehen! Alles Gute!

 
borilunad:

Ich werde die Funktion jetzt ausschalten! Ich habe gestern auch irgendwo auf eine Antwort von Ihnen gewartet! Lassen Sie es uns einfach halten.

Wenn Sie Fragen haben, warten Sie nicht bis morgen! ;)

Funktion ist universell, dient für beliebige Modifikationen mit schwebenden und offenen Positionen! Viel Glück!

Was ist mit den Stopp- und Frizzle-Kontrollen? Oder wird es heutzutage nicht mehr gebraucht? :) Was Ihren Funktionscode betrifft, stimme ich zu. Es ist einfach und unkompliziert. Aber die Schecks... sie sind nicht da. Warum nicht?

Ich gehe zum Abendessen:

Gerade jetzt, wie gestern, zum Mittagessen gehen! Alles!

Wer isst zu dieser Zeit zu Mittag und wer isst bereits zu Abend...
 
hoz:

Wie kann ich diesen verdammten Fehler loswerden? Ich habe es satt. Ich überprüfe jeden Eingabeparameter der Funktion. Für mich sieht es im Moment so aus:

Das heißt, wenn der Parameter nicht geändert wurde, besteht keine Notwendigkeit, ihn zu ändern. Ich habe das noch nie gemacht, aber ich habe beschlossen...

Anschließend werden die Parameter wie folgt an die Auftragsänderungsmethode übergeben:

Nw-Ausgabe im Protokoll:

Die Zeitschrift meldet uns also, wie die Änderung: OK, aber dann einen Fehler. Keiner der Parameter hat sich geändert.

Der Beschluss ist noch nicht rechtskräftig. Wir können also den Eröffnungs-, Stopp- und Mitnahmepreis ändern. Soweit ich weiß, stand dies nicht im Widerspruch zu den Unterlagen.

Wer hat so etwas schon einmal erlebt? Wie kann man das Problem lösen?

Sonst entfernen.
 
hoz:

Boris, was ist mit den Kontrollen von Stopplevel und Frizzlevel? Oder ist das heutzutage unnötig? :) Was Ihren Funktionscode betrifft, so stimme ich zu. Es ist einfach und unkompliziert. Aber die Schecks... sie sind nicht da. Warum nicht?

Wer isst zu dieser Zeit zu Mittag und wer isst bereits zu Abend...

Alle Prüfungen werden vor der Schleife durchgeführt, die Bedingungen für jeden Typ und einen Aufruf dieser Funktion enthält, die nur auf Fehler in Modify() prüft:

            ModifyOrder(OrderTicket(),OOP,SL,0,0,clrBlue); return(0);

Wenn Sie noch etwas wissen möchten, fragen Sie, aber ich gehe jetzt zum Abendessen. ;)

 
Wie haben Sie abgestimmt?