Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   Takeprofit der letzgeöffneten Buy-Order auf alle offenen Buy-Orders anwenden (http://www.expert-advisor.com/forum/showthread.php?t=7202)

Graf-Rotz 19.06.22 12:49

Takeprofit der letzgeöffneten Buy-Order auf alle offenen Buy-Orders anwenden
 
Hallo Zusammen,

ich bin sehr neu, habe kaum Ahnung und baue gerade an meinem ersten EA. Es macht schon bisl was, aber jetzt kommt mein aktuelles Problem:

Nach dem Kauf der Buy-Order soll er allen anderen offenen Buy-Orders den gleichen TakeProfit setzen.

Wer kann mir bitte helfen?


Zusatzfrage: Wo gibt eine gute Anleitung/Tutorial um MQL4 von Anfang an zu lernen? Vielen Dank

MA-EA 19.06.22 14:49

Den schon Offenen oder denen, die noch geöffnet werden?

TP berechnen und an entsprechenden Stellen bei OrderSend() oder OrderModify() eintragen.

Graf-Rotz 19.06.22 21:25

Nur bei den offenen Trades.

Graf-Rotz 19.06.22 21:58

Also ich möchte nichts berechnen, sondern den TP des letzten Buy-Order auf alle offenen Buy-Trades anwenden.

AVT 26.06.22 14:48

Zitat:

Zitat von Graf-Rotz (Beitrag 46115)
Also ich möchte nichts berechnen, sondern den TP des letzten Buy-Order auf alle offenen Buy-Trades anwenden.

Also irgendwann hast Du den TP der letzten Buy Order ja berechnet.
Wenn Du den TP für Deine letzte Order erfolgreich gesetzt hast, speicherts Du den Wert dieses TakeProfit mal eben in einer GlobalVariable. Dann machst Du einen Loop über alle laufenden Trades und änderst deren TP auf den Wert der GlobalVariablen.
In etwa so für Buy Orders:
Code:

// === den TP für die jetzige Order hast Du ja irgendwie ausgerechnet, z.B.
if(TakeProfit>0) rq_tp=NormalizeDouble(rq_open+TakeProfit,_Digits);    //AbsoluteTP

// === wenn TP gesetzt, entweder mit OrderSend() oder danach mit OrderModify()
{
  GlobalVariableSet("LastTPbuy",rq_tp); //ForAllLongOrders
}

// === nun alle laufenden Long Orders ändern
double LongTPs=NormalizeDouble( GlobalVariableGet("LastTPbuy"),_Digits ); //AbsoluteTP

ResetLastError();
for(int i=OrdersTotal()-1; i>=0; i--)                  //LoopOverAllOrders
{  if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))        //SelectRunningOrders
  {  if(OrderSymbol()==_Symbol && OrderType()==OP_BUY) //SymbolsLongsOnly
      {
        if(!OrderModify(OrderTicket(),OrderOpenPrice(),
                        OrderStopLoss(),
                        LongTPs,
                        0,clrNONE) )
            Print("failed set (BuyTP) =",_LastError);  //FailMessage

      } //SymbolsLongsOnly
  } // running orders
} // loop over all orders

Ne zweite brauchst Du für alle Short Orders.
AVT


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:32 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum