[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 898

 
Dimka-novitsek:
Dieselbe Situation.
Den Code anzeigen
 
arvis:
Wie kann ich den Indikator so einstellen, dass er den Gewinn in Pips ab einer bestimmten Zeit im MT4 zählt?

Wenn Sie wollen, dass es auf der Zeit basiert, wird es so sein, wenn der Kurs schließt, und wenn Sie wollen, dass es die Punkte ab 21:00 Uhr zählt, dann müssen Sie mit der Zeit spielen und es ist nichts kompliziert daran.

 double Profit; // или double Profit = 0;

 int start {

 double PrevCl

 double CurrCl

PrevCl = iClose(Symbol(), 0, 2);
CurrCl = iClose(Symbol(), 0, 1);

if (PrevCl > CurrCl){ 

if (Ask > signal) {

 Profit = (Ask - signal);

return (Profit); 

} 

 if (Bid < signal) {

 Profit = (signal - Bid);

return (Profit); 

    }
  } 
}
 

Bitte teilen Sie mir mit, wie ich den folgenden Code korrigieren kann:

double LastOpenOrder() {
   double l_ord_open_price_8;
   int l_ticket_24;
   double ld_unused_0 = 0;
   int l_ticket_20 = 0;
   for (int l_pos_16 = OrdersTotal() - 1; l_pos_16 >= 0; l_pos_16--) {
      OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderType() == OP_SELL) {
         l_ticket_24 = OrderTicket();
         if (l_ticket_24 > l_ticket_20) {
            l_ord_open_price_8 = OrderOpenPrice();
            ld_unused_0 = l_ord_open_price_8;
            l_ticket_20 = l_ticket_24;
         }
      }
   }
   return (l_ord_open_price_8);
}

Damit ich so etwas tun kann:

if (LastOpenOrder - Bid >= 25 * Point) CloseOrder;

Das bedeutet, dass Sie nur diesen letzten offenen Auftrag abschließen und die anderen nicht anfassen!

Vielen Dank im Voraus.

 

Wie schreibe ich richtig in meinem EA und bekomme Indikator Ergebnis in ihm?

double ROC = iCustom(NULL,0, "ROC",12,0,0); - keine Datenausgabe.

double ROC = iCustom(NULL,0, "ROC",12,0,0,0); - die Daten werden nicht gedruckt.

double ROC = iCustom(NULL,0, "ROC",12,0,0,0,0); - die Daten werden nicht gedruckt.

Indikator: https://www.mql5.com/ru/code/9340

 
DhP:

Wie schreibe ich richtig in meinem EA und bekomme Indikator Ergebnis in ihm?

double ROC = iCustom(NULL,0, "ROC",12,0,0); - keine Datenausgabe.

double ROC = iCustom(NULL,0, "ROC",12,0,0,0); - die Daten werden nicht gedruckt.

double ROC = iCustom(NULL,0, "ROC",12,0,0,0,0); - die Daten werden nicht gedruckt.

Indikator: https://www.mql5.com/ru/code/9340

Die korrekte Vorgehensweise wäre wie folgt:

double ROC = iCustom(NULL,0,"ROC",0,0);

aber ich kann nicht verstehen, was Sie damit vorhaben. Nun, vielleicht muss ich es nicht verstehen)

 
belck:

Wenn Sie die Uhrzeit verwenden wollen, wird sie bei Kursschluss so sein, und wenn Sie 21:00 Uhr verwenden wollen, müssen Sie mit der Zeit spielen, was nicht kompliziert ist.


Danke für die Hilfe, belck.

Sagen Sie mir, wie können Sie den gleichen Gewinnbetrag in Pips berechnen, wenn Sie mit mehreren Paaren handeln? Außerdem müssen Sie die abgeschlossenen Geschäfte berücksichtigen.

 
arvis:


Danke für deine Hilfe, belck.

Wie berechne ich den gleichen Gewinn in Pips, wenn ich mit mehreren Paaren handle? Außerdem muss ich auch die abgeschlossenen Geschäfte berücksichtigen.

Es ist schwierig für mich, diese Frage zu beantworten.

Aber eines kann ich sagen: Das alles sollte genannt werden.

 int start {

 double PrevCl

 double CurrCl

PrevCl = iClose(Symbol(), 0, 2); // то тут указываете какая валютная пара и по желанию период : PrevCl = iClose("EURUSD", PERIOD_H1, 2);
CurrCl = iClose(Symbol(), 0, 1); // тут так же

if (PrevCl > CurrCl){ 

if (Ask > signal) {

 Profit = (Ask - signal);

return (Profit); 

} 

 if (Bid < signal) {

 Profit = (signal - Bid);

return (Profit); 

    }
  } 
}

der Preis des letzten offenen Auftrags wird so aufgerufen:

double LastOpenOrder() {
   double l_ord_open_price_8;
   int l_ticket_24;
   double ld_unused_0 = 0;
   int l_ticket_20 = 0;
   for (int l_pos_16 = OrdersTotal() - 1; l_pos_16 >= 0; l_pos_16--) {
      OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderType() == OP_SELL) {
         l_ticket_24 = OrderTicket();
         if (l_ticket_24 > l_ticket_20) {
            l_ord_open_price_8 = OrderOpenPrice();
            ld_unused_0 = l_ord_open_price_8;
            l_ticket_20 = l_ticket_24;
         }
      }
   }
   return (l_ord_open_price_8);
}
 
Alles ist mehr oder weniger klar. Vielen Dank für Ihre Zeit, Herr Belck.
 
arvis:


Danke für die Hilfe, belck.

Sagen Sie mir, wie kann ich den gleichen Gewinn in Pips berechnen, wenn ich mit mehreren Paaren handle? Ich habe bereits damit begonnen, aber ich bin mir nicht sicher, wie ich es anstellen soll.

Ich habe angefangen, es so zu machen, aber ich verstehe jetzt, dass ich durcheinander gekommen bin:

double LastOpenPriceCloseOrder() {
   double l_ord_open_price_8;
   int l_ticket_24;
   double ld_unused_0 = 0;
   int l_ticket_20 = 0;
   for (int l_pos_16 = OrdersHistoryTotal( )  - 1; l_pos_16 >= 0; l_pos_16--) {
      OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderType() == OP_BUY) {
         l_ticket_24 = OrderTicket();
         if (l_ticket_24 > l_ticket_20) {
            l_ord_open_price_8 = OrderOpenPrice();
            ld_unused_0 = l_ord_open_price_8;
            l_ticket_20 = l_ticket_24;
         }
      }
   }
   return (l_ord_open_price_8);
}

и

double LastClosePriceCloseOrder() {
   double l_ord_open_price_8;
   int l_ticket_24;
   double ld_unused_0 = 0;
   int l_ticket_20 = 0;
   for (int l_pos_16 = OrdersHistoryTotal( )  - 1; l_pos_16 >= 0; l_pos_16--) {
      OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderType() == OP_BUY) {
         l_ticket_24 = OrderTicket();
         if (l_ticket_24 > l_ticket_20) {
            l_ord_open_price_8 = OrderClosePrice();
            ld_unused_0 = l_ord_open_price_8;
            l_ticket_20 = l_ticket_24;
         }
      }
   }
   return (l_ord_open_price_8);
}
 

Das sind die Kriterien, bei denen ich nicht weiterkomme:

- Wenn mehr als ein Auftrag geschlossen wurde, sollte die Gesamtzahl der profitablen Pips gezählt werden, aber es sind die Pips, die gezählt werden sollten.

Bitte beraten Sie mich, wie ich bei diesem Code richtig vorgehe:

LastBuyPrice = FindLastBuyPrice();     

if (Ask - LastBuyPrice >= 25 * Point) {
      for (int l_pos_16 = OrdersTotal()  - 1; l_pos_16 >= 0; l_pos_16--) {
 OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumberBuy) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumberBuy && OrderType() == OP_BUY) {
         CloseThisSymbolAll();
         Print("Closed All due to Stop Out");
         }
       }
     }


double FindLastBuyPrice() {
   double l_ord_open_price_8;
   int l_ticket_24;
   double ld_unused_0 = 0;
   int l_ticket_20 = 0;
   for (int l_pos_16 = OrdersTotal() - 1; l_pos_16 >= 0; l_pos_16--) {
      OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumberBuy) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumberBuy && OrderType() == OP_BUY) {
         l_ticket_24 = OrderTicket();
         if (l_ticket_24 > l_ticket_20) {
            l_ord_open_price_8 = OrderOpenPrice();
            ld_unused_0 = l_ord_open_price_8;
            l_ticket_20 = l_ticket_24;
         }
      }
   }
   return (l_ord_open_price_8);
}