Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1623

 
makssub #:
Hallo. Wie lässt sich der Eröffnungskurs des Auftrags ermitteln, der dem aktuellen Kurs am nächsten kommt? MQL4. Haben Sie irgendwelche Beispiele?

Wir gehen alle offenen Positionen durch und vergleichen die Anzahl der Pips zwischen dem aktuellen Kurs und der Eröffnung eines Geschäfts.

Sie können ein beliebiges Beispiel nehmen, gerade oben gibt es einen Code - Suche nach Aufträgen in einer Schleife.

 
MakarFX #:

Was ist OrdersClose?

Siehe hier.

Verstanden, danke.

 
PapaYozh #:


Es gibt keinen Grund, zu phantasieren. Das Wesentliche dabei ist, dass Sie eine Methode aufrufen, die ein Konstruktor mit einem anderen Satz von Parametern ist. In diesem Fall wird kein Objekt erstellt.

Sie sollten den Unterschied zwischen einem Konstruktoraufruf und einem Methoden-/Funktionsaufruf kennen.

PapaYozh #:

Ein ähnlicher Konstruktoraufruf, der auch nicht zum gewünschten Ergebnis führen wird:

Fügen Sie der Argumentation halber einen Zeiger zur Signatur einer Methode (Konstruktor ? der wie eine Methode aufgerufen wird ?) hinzu, indem Sie einen Zeiger per Referenz übergeben

 
Taras Slobodyanik #:

Wir gehen alle offenen Positionen durch und vergleichen die Anzahl der Pips zwischen dem aktuellen Kurs und der Eröffnung eines Geschäfts.

Sie können ein beliebiges Beispiel nehmen, gerade oben gibt es einen Code - Suche nach Aufträgen in einer Schleife.

Entschuldigung, ich habe es wieder nicht richtig geschrieben. Ich werde es erneut versuchen)

Es gibt ein Netz von offenen Aufträgen. Ich muss den Eröffnungspreis (OrderOpenPrice) des Auftrags finden, der dem aktuellen Preis am nächsten kommt. Um das Netz weiter zu bauen, aber meine Aufträge sind fast chaotisch aufgebaut.

Ich verstehe, wie man die Überschreitung schreibt, aber ich bin nicht in der Lage, es in der Sprache richtig auszudrücken (ich bin wie ein Hund, ich verstehe alles)).

Wenn Sie Beispiele oder Links zu Beispielen haben, veröffentlichen Sie diese bitte. MQL4

 
Igor Makanu #:

Sie müssen den Unterschied zwischen einem Konstruktoraufruf und einem Aufruf einer Methode/Funktion verstehen

Fügen Sie der Einfachheit halber einen Zeiger auf die Signatur einer Methode (Konstruktor ? der wie eine Methode aufgerufen wird ?) hinzu und übergeben Sie ihn per Referenz.

In Java ist das in Ordnung.

Sie können den übergeordneten Konstruktor auch vom untergeordneten Konstruktor aus aufrufen, die einzige Voraussetzung ist, dass der übergeordnete Konstruktor durch den ersten Befehl im untergeordneten Konstruktor aufgerufen wird.

In MQL ist das Problem, wenn es keinen leeren Konstruktor für den Elternteil gibt, wird der Elternkonstruktor implizit aufgerufen, wenn das Kind erstellt wird.

--

PS.

Und wenn der übergeordnete Konstruktor einen Konstruktor ohne Parameter und einen Konstruktor mit Parametern hat, welcher wird dann implizit vom nachgeordneten Konstruktor mit Parametern aufgerufen?

 
Igor Makanu #:


für das Subjekt - in der Signatur der Methode (Konstruktor ? der als Methode aufgerufen wird ?) einen Zeiger per Referenz hinzufügen


Das sieht aus wie eine Krücke.

Nicht wahr?

 

Hallo zusammen. Das mag eine dumme Frage sein, aber ich habe noch keine Lösung gefunden.

Ich habe einen Indikator erstellt. Es hat Schaltflächen auf dem Diagramm, und wenn ich sie drücke, wird die Linie gezeichnet und die Schaltfläche wird aktiv.

Wie kann ich erreichen, dass die Schaltflächenaktivität und die Position der Zeile aktiv bleiben, wenn ich den Zeitrahmen wechsle?

Beim Umschalten der TF funktioniert die Funktion Deinit, und sie hat die Löschung aller Objekte zur Folge. Das ist eine Art Voraussetzung, um alles aus dem Diagramm zu löschen.

Ich habe versucht, den Schaltflächenstatus in einer Variablen zu speichern, aber wie ich bei den Indikatoren bemerkt habe, werden sie auf Null gesetzt, wenn wir die TF wechseln.

In EA ist das nicht so, dort wird der Wert der internen Variablen nicht auf Null gesetzt. Es stellt sich heraus, dass, wenn der Indikator einige Werte berechnet und in internen Variablen gespeichert hat, diese beim TF-Schalter zurückgesetzt werden. Warum und wie man sie vermeiden kann.

 
makssub #:

Entschuldigung, ich habe es wieder falsch geschrieben. Lassen Sie es mich noch einmal versuchen)

Es gibt ein Netz von offenen Aufträgen. Ich muss den Eröffnungspreis (OrderOpenPrice) des Auftrags finden, der dem aktuellen Preis am nächsten kommt. Um das Netz weiter zu bauen, aber meine Aufträge sind fast chaotisch aufgebaut.

Ich verstehe, wie man die Überschreitung schreibt, aber ich bin nicht in der Lage, es in der Sprache richtig auszudrücken (ich bin wie ein Hund, ich verstehe alles)).

Wenn Sie Beispiele oder Links zu Beispielen haben, veröffentlichen Sie diese bitte. MQL4

Zunächst ist die Differenz vor dem Zyklus gleich 1000. Wenn in der Schleife der Eröffnungskurs abzüglich des aktuellen Kurses modulo kleiner ist als die Differenz, dann ist die Differenz gleich dem erhaltenen Wert und das Ticket wird in einer Variablen gespeichert.
 
Igor Makanu #:

Sie sollten den Unterschied zwischen einem Konstruktoraufruf und einem Methoden-/Funktionsaufruf kennen.


Worin besteht übrigens der Unterschied, abgesehen von der Tatsache, dass er implizit aufgerufen wird, wenn das Objekt erstellt wird?

 
void ClosseAll()
{
  for(int i = OrdersTotal()-1; i>=0; i--)
  {
     if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
     {
       if (OrderType() == OP_BUY)
         { 
         if (!OrderClose(OrderTicket(), OrderLots(), Bid, slip))
             Print("Не удалось закрыть ордера на покупку!");
         }
       if (OrderType() == OP_SELL)
         { 
         if (!OrderClose(OrderTicket(), OrderLots(), Ask, slip))
             Print("Не удалось закрыть ордер на продажу!");
         }
     }
  }
}

Guten Tag !!!

Bitte helfen Sie beim Schreiben von Code für das Schließen von Min- und Max-Aufträgen in einem Grid-EA, wenn eine bestimmte Höhe des Drawdowns erreicht ist

Ich habe zwei Funktionen geschrieben, um den Gewinn von Max- und Min-Aufträgen zu berechnen

//+----------------------------------------------------------------------------+
//| Расчет профита максимального ордера в сетке                                |
//+----------------------------------------------------------------------------+
double GetProfitMaxOrder()
{
  int max_ticket = 0;
  double max_ticket_profit = 0 ;
  {
   for (int cnt = OrdersTotal() - 1; cnt >= 0; cnt--) 
    {
    if(OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES)) 
     {
      if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
       {
        if(OrderType() == OP_BUY || OrderType() == OP_SELL)
        {
          if(OrderTicket() > max_ticket) max_ticket = ticket;
          {
           max_ticket_profit =  OrderProfit();
          }
        }
       }
     }
    }
  }
  return( max_ticket_profit);
}
//+----------------------------------------------------------------------------+
//| Расчет профита минимального ордера в сетке                                 |
//+----------------------------------------------------------------------------+
double GetProfitMinOrder()
{
  int min_ticket=INT_MAX;
  double min_ticket_profit = 0;
  {
   for (int cnt = OrdersTotal() - 1; cnt >= 0; cnt--) 
    {
     if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
     {
       if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) 
        {
          if (OrderType() == OP_BUY || OrderType() == OP_SELL)
           {
            if(OrderTicket() < min_ticket)
              min_ticket = OrderTicket();
              {
               min_ticket_profit = OrderProfit(); 
              }
           }
        }
      }
    }
  }
  return(min_ticket_profit);
}

Ich habe auch eine Funktion geschrieben, die den Betrag dieser Aufträge berechnet. Es scheint hier kein Problem zu geben.

Die Frage ist, wie man nur diese beiden Aufträge schließen kann. Ich habe die Funktion ClosseAll() gefunden.

Die Frage ist, wie man die Funktion OrderTicket() ändern kann, die alle Aufträge abschließt

die Variablen max_ticket und min_ticket anzuhängen, die nur die Fahrscheine der minimalen und maximalen Bestellungen im Raster bestimmen

Oder haben SIE IHRE Lösung für diese Frage?