EA Erweiterter OrderClose

 

Hallo Liebe Community,

ich versuche gerade für nachfolgende Aufgabenstellung eine Lösung zu erarbeiten und bin aus nachfolgenden Gründen einmal auf Eure Hilfe angewiesen:


Aufgabenstellung:

Nach erfolgreicher Identifizierung des Ausstiegspunkts wird mittels for-Schleife:

1. nach einer BUY Order ohne SL gesucht

2. bei Auswahl einer Pending Order, die for-Schleife weitersuchen

3. die BUY Order geschlossen.


Ergebnis:

2024.01.19 12:20:01.651 EA_NEU XAUUSD,M1: res = false, only Pending Order found

2024.01.19 12:20:01.724 EA_NEU XAUUSD,M1: BUY Order found without SL

2024.01.19 12:20:01.724 EA_NEU XAUUSD,M1: res is true, no Pending Order found

2024.01.19 12:20:01.724 EA_NEU XAUUSD,M1: 3.Ausstiegspungkt für BUY Orders by OP_BUY = OK

2024.01.19 12:20:01.724 EA_NEU XAUUSD,M1: 4.zu löschende BUY Order hat keinen TP

2024.01.19 12:20:01.724 EA_NEU XAUUSD,M1: invalid ticket for OrderClose function

2024.01.19 12:20:01.724 EA_NEU XAUUSD,M1: Job Ticket:0 found


Anmerkung:

Eine Order Selektierung nur nach Punkt 1 hatte zur Folge, das zwar die Buy Order gelöscht wurde, jedoch anschließend eine BUYSTOPP Order zum löschen selektiert wurde.

Das gilt es zu vermeiden.


Ich wäre hier über konstruktive Hilfe von Euch sehr erfreut.

Lieben Gruß

RondoBias



Nachfolgender Programm Code

void OnTick()
  {
   if(((Trend_RSI ==1)&& (IND_SARM1_BUY)) || ((IND_SARM1_SELL) && (IND_SARM5_SELL))) // Erkennen des Ausstiegspunkt für Buy Order ohne SL
     {
      Comment("Ausstiegspunkt BUY Order: Trend RSI= ",(Trend_RSI)," || IND_SARM1_SELL= ",(IND_SARM1_SELL)," && IND_SARM5_SELL= ",(IND_SARM5_SELL));

      for(int c = OrdersTotal()-1; c >= 0; c --)                                       // Beginn "for Schleife"
        {

         if(OrderSelect(c, SELECT_BY_POS, MODE_TRADES))                                //Orderauswahl aus Order Pool
           {
            if(OrderSelect(c,SELECT_BY_TICKET,MODE_TRADES))			
              {
               if(OrderType() == OP_BUY && (OrderStopLoss()== 0.00)==false)            //Ist die ausgewählte Order eine BUY Order ohne SL
                 {
                  return;
                  Print("BUY Order found without SL");
                  if(OrderSelect(OrderType(),(OP_SELLSTOP && OP_BUYSTOP))==false)       //Ist die Order keine Pending Order
                    {
                     bool res = true;
                     Print("res is true, no Pending Order found");
                     if(res == true)
                        Print("3.Ausstiegspungkt für BUY Orders by OP_BUY = OK");
                     Print("4.zu löschende BUY Order hat keinen TP");

                     res =OrderClose(OrderTicket(),OrderLots(),Bid,3,NULL);            //SELL Order schliesen
                     Print("Job Ticket:",OrderTicket(), " found");

                     if(res == false)
                       {
                        Print("res = false, only Pending Order found");                //Bestehende Orderauswahl ist eine Pending Order, Wiederholung von OrderSelect
                        return;
                       }
                    }
                 }
              }
           }
        }
     }
  }

//+------------------------------------------------------------------+

 

Frage: Hast Du Dir das von ChatGPT programmieren lassen?

Das wird nix!

Hier ein paar Links für das Selbermachen:

    Wenn Du den Cursor auf eine MQL-Funktion setzt und F1 drückst, siehst Du direkt die Referenz, viele mit Beispielen zum Kopieren und Einfügen der schnellsten Form des Programmierens.
    https://www.mql5.com/de/articles/496
    https://www.mql5.com/de/articles/100
    https://www.mql5.com/de/articles/599
    https://www.mql5.com/de/articles/232
    Ord.,Pos.,Deals:https://www.mql5.com/de/articles/211
    und zur Fehlersuche, wenn das Programm  nicht tut, was es soll: https://www.metatrader5.com/de/metaeditor/help/development/debug
    Es gibt fast nichts, das nicht schon für MT4/5 programmiert wurde!
    => Suchen in den Artikeln: https://www.mql5.com/de/articles
    => Suchen in der Codebase: https://www.mql5.com/de/code
    => Suchen allgemein: https://www.mql5.com/de/search oder über Google mit: "site:mql5.com .." (verzeiht Schreibfehler)
    https://www.mql5.com/de/search#!keyword=kochbuch
    useful links: https://www.mql5.com/en/forum/176023

Schnelleinstieg oder Kurzanleitung für Anfänger
Schnelleinstieg oder Kurzanleitung für Anfänger
  • www.mql5.com
Liebe Leser, in diesem Artikel möchte ich Ihnen vermitteln und zeigen, wie man sich möglichst schnell und einfach die Grundlagen der Erstellung automatischer Handelssysteme, wie die Arbeit mit Indikatoren u. a., erschließt. Der Beitrag richtet sich an Neueinsteiger, in ihm kommen weder komplizierte noch schwer zu verstehende Beispiele zur Anwendung.
 
Carl Schreiber #:

Frage: Hast Du Dir das von ChatGPT programmieren lassen?

Das wird nix!

Hier ein paar Links für das Selbermachen:

    Wenn Du den Cursor auf eine MQL-Funktion setzt und F1 drückst, siehst Du direkt die Referenz, viele mit Beispielen zum Kopieren und Einfügen der schnellsten Form des Programmierens.
    https://www.mql5.com/de/articles/496
    https://www.mql5.com/de/articles/100
    https://www.mql5.com/de/articles/599
    https://www.mql5.com/de/articles/232
    Ord.,Pos.,Deals:https://www.mql5.com/de/articles/211
    und zur Fehlersuche, wenn das Programm  nicht tut, was es soll: https://www.metatrader5.com/de/metaeditor/help/development/debug
    Es gibt fast nichts, das nicht schon für MT4/5 programmiert wurde!
    => Suchen in den Artikeln: https://www.mql5.com/de/articles
    => Suchen in der Codebase: https://www.mql5.com/de/code
    => Suchen allgemein: https://www.mql5.com/de/search oder über Google mit: "site:mql5.com .." (verzeiht Schreibfehler)
    https://www.mql5.com/de/search#!keyword=kochbuch
    useful links: https://www.mql5.com/en/forum/176023


Hallo Carl,

vielen Dank für deine Hilfe. 

Könntest du deine Antwort etwas konkretisieren? Und nein kein Chat GTP.

Das ist einer meiner Versuche eine Buy Order zum schließen zu selektieren, ohne das er am Ende mit einer BUYStopp im Loop hängt und diese natürlich mit OrderClose nicht löschen kann.

;-) Daher der Avantgarde Ansatz 

 

Mir wird jetzt klar, Du verwendet MQL4.

Hmm, wenn schon was Neues lernen warum dann MQL4 (vom CEO persönlich): https://www.mql5.com/en/forum/454319

Du verwendest 3 Mal OrderSelect() ??

Ich denke Du brauchst das nur einmal, dann Prüfen, ob sie zu schließen ist, wenn ja schließen, dann die nächste.

Hier hast Du eine Referenz aller MQL4 Funktionen - manche haben Beispiele, kopiere und ändere sie: https://docs.mql4.com/function_indices

Sonst verwende F1 im Editor (s.o.).

MT4 End Of Life - End of active support for MT4 with no active support and updates; "What the future holds formt4 and the vast array of
MT4 End Of Life - End of active support for MT4 with no active support and updates; "What the future holds formt4 and the vast array of
  • 2023.09.19
  • www.mql5.com
I have heard reports that mt4 is soon to become 'end of life' with no active support or updates. Can anyone explain what the future holds for mt4 and the vast array of millions of ex4 indicators, scripts and ea's. Com/ru/forum/447913/page6#comment_47273082
Grund der Beschwerde: