Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 429

 
Trader7777:

Leute, bitte überprüft die Funktion, ich habe einige Zweifel daran


Nun, wenn es sich schließt, ist es besser, eine Schleife rückwärts zu machen.
 
splxgf:

Wenn es also einen Abschluss gibt, ist es besser, eine Rückwärtsschleife zu machen.

Nein, sie sollte von der alten Ordnung zur neuen Ordnung schließen.
 
Trader7777:

nein, sie sollte von der alten zur neuen Ordnung schließen

Wenn Sie die Reihenfolge ändern, erfolgt dies von der alten zur neuen. In der Zwischenzeit, von der neuen zur alten, und sogar durch eine manchmal kann es passieren.
 
evillive:

Wenn Sie die Reihenfolge ändern, erfolgt dies von der alten zur neuen. Wie für jetzt, von neu zu alt, und sogar durch eine manchmal kann es passieren.

Wenn Sie for (int i = OrdersTotal()-1; i>0; i--) machen, wird es von neu nach alt geschlossen!
 
evillive:

Wenn Sie die Reihenfolge ändern, erfolgt dies von der alten zur neuen. Aber in der Zwischenzeit, vom Neuen zum Alten, und manchmal auch nacheinander, kann es passieren.

Ich verstehe nicht, wenn Sie zu faul sind, Fehler vorzuschlagen, warum Sie mir eine Funktion aufzwingen, die ich laut meinem TS nicht brauche?
 

Guten Abend ...

wird dieser https://www.mql5.com/ru/code/9767 Indikator in meinem EA korrekt sein?

if(iCustom( NULL,0, "wave(MACD_FZR)",1,0)<Low[1] )

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point, "macd sample",16384,0,Green);

if(Ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());

}

else Print("Fehler beim Öffnen der BUY-Bestellung: ",GetLastError());

zurück(0);

}

// Prüfung auf Short-Position (SELL)

if(iCustom( NULL, 0, "wave(MACD_FZR)",1,1)>High[1] )

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point, "macd sample",16384,0,Red);

 
Trader7777:

Ich verstehe nicht, wenn Sie zu faul sind, Fehler vorzuschlagen, warum sollten Sie mir eine Funktion aufzwingen, die ich laut meinem TS nicht brauche?

Nun, dann schauen Sie sich Ihre Funktion an, z.B. wird die erste Bestellung genommen und da sie die Bedingung erfüllt, wird sie gelöscht... An seine Stelle tritt die zweite Ordnung.

In der nächsten Schleife wird der dritte Auftrag geprüft, der zweite wird übersprungen.

Deshalb haben wir darauf hingewiesen, dass die Aufzählung falsch ist...

Wenn Ihre eigene Reihenfolge wirklich wichtig ist, können wir die Schleifenvariable beim Löschen dekrementieren.

 
Trader7777:

Ich verstehe nicht, wenn Sie zu faul sind, Fehler vorzuschlagen, warum Sie mir eine Funktion aufzwingen, die ich laut meinem TS nicht brauche?

Ich habe dir gesagt, du sollst es währenddessen tun. Wie (Update 3):

void CloseHalfOrders(int otype) {
   int count = 0;
   double CTexisting = CountTrades(otype), nCloseOrdersCnt = NormalizeDouble(CTexisting/2,1), price;
   int i = 0;
   while (i < OrdersTotal()) {
      if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES)) {
         if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType() == otype) {
            if (otype == OP_BUY) price = Bid;
            else if (otype == OP_SELL) price = Ask;
            else return;//работаем только с OP_BUY/OP_SELL
            if (count < nCloseOrdersCnt) {
               OrderClose(OrderTicket(),OrderLots(),price,0,Lime);
               count++;
               Sleep(1000);
               i = 0;
               continue;
            } else i = OrdersTotal();
         }
      }
      i++;
   }
}
 

Oder

           OrderClose(OrderTicket(),OrderLots(),Bid,0,Lime);
           i--;
 
                    if (count<n)

Warum werden k und n mit der Gesamtzahl der abgeschlossenen Aufträge verglichen?

Grund der Beschwerde: