26.06.22
|
Elite Mitglied
|
|
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 612
|
|
Zitat:
Zitat von Graf-Rotz
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
|