Einzelnen Beitrag anzeigen
  #4 (permalink)  
Alt 09.12.20
Elfenstein Elfenstein ist offline
Neues Mitglied
 
Registriert seit: Feb 2017
Beiträge: 27
Elfenstein befindet sich auf einem aufstrebenden Ast
Standard

Danke für die Hilfe @MA-EA.
Das "for(i=OrdersTotal()-1;i>=0;i--)" und das "for(i = 0; i < OrdersTotal(); i++)" macht genau das gleiche und bei beispielsweise 3 offenen Ordern, wird die For-Schleife auch 3 mal eine Schleife machen.
Und egal wie du den EA programmierst, dieser muss für die Ausführung immer erst auf ein Chart installiert sein. Init/Deinit muss für die korrekte Ausführung im Code generell nicht vorhanden sein.

@traderdoc, dein Beitrag konnte mir diesmal nicht helfen, doch natürlich danke trotzdem.

Hier ist nun der fertige EA, der genau das macht, so wie ich es möchte:

Code:
int Trailing = 20;
int Profit = 80;
int Step = 2;
int MN = 1000;
int i, r;
double pBid, pAsk, pp;
double cal;

int init() {
   return(0);
}

int deinit() {
   return(0);
}

int start() {
   for(i = 0; i < OrdersTotal(); i++) {
      r = OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      pp = MarketInfo(OrderSymbol(), MODE_POINT);
      if (OrderMagicNumber() == MN) {
         if (OrderType() == OP_BUY) {
            pBid = MarketInfo(OrderSymbol(), MODE_BID);
            if (pBid - OrderOpenPrice() > Profit * pp) {
               if (OrderStopLoss() < pBid - (Trailing + Step) * pp) {
                  cal = pBid - (Trailing * pp);
                  if (cal > OrderStopLoss()) r = OrderModify(OrderTicket(),OrderOpenPrice(),cal,OrderTakeProfit(),0,0);
               }
            }
         }
         if (OrderType() == OP_SELL) {
            pAsk = MarketInfo(OrderSymbol(), MODE_ASK);
            if (OrderOpenPrice() - pAsk > Profit * pp) {
               if (OrderStopLoss() > pAsk + (Trailing + Step) * pp) {
                  cal = pAsk + (Trailing * pp);
                  if (cal < OrderStopLoss()) r = OrderModify(OrderTicket(),OrderOpenPrice(),cal,OrderTakeProfit(),0,0);
               }
            }
         }
      }
   }
   return(0);
}