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

 
makssub #:

... Ich werde mir das demnächst mal ansehen.

Heute oder neulich?

Das ist beunruhigend...

 
Roman Sharanov NULL gesetzt, wenn ich zum zweiten Konstruktor zurückkehre.
Aber wenn ich den Code vom ersten Konstruktor in den zweiten Konstruktor kopiere und ihn nicht aufrufe, funktioniert alles. Was ist das Problem?
PapaYozh #:


Das Problem liegt in MQL.

In solchen Situationen lege ich die Initialisierung in eine separate Methode, die ich aus verschiedenen Konstruktoren ziehe.

---

Außerdem gibt es ein Problem mit dem Aufruf des übergeordneten Konstruktors.

Das Problem besteht darin, dass man nicht versteht, was beim Aufrufen der Funktion passiert:

CWave(namePref, startPrice, startTime, endPrice, endTime);

Und hier ist es ganz einfach. Ein CWave-Objekt wird erstellt und sofort wieder zerstört))) Dieses temporäre Objekt hat nichts mit der Instanz zu tun, in deren Konstruktor der Aufruf erfolgt ist)))

 
Vladimir Simakov #:

Das Problem ist, dass man nicht versteht, was passiert, wenn man einen Anruf tätigt:

Und hier ist es ganz einfach. Ein CWave-Objekt wird erstellt und sofort wieder zerstört.) Dieses temporäre Objekt hat nichts mit der Instanz zu tun, in deren Konstruktor der Aufruf erfolgt ist)))

Wo haben Sie den neuen Betreiber gesehen?
 

Guten Tag allerseits!!!

Ich schreibe ein Gitter EA, ich brauche, um einen Gewinn nur für die Bestellung mit dem maximalen Ticket und die Bestellung mit dem minimalen Ticket (das Minimum ist für später), jetzt möchte ich einen Gewinn für die maximale Bestellung zu finden. Ich füge die Funktion und ein Bild bei, das das Prinzip des Öffnens eines Rasters von Aufträgen zeigt. Meine Frage ist, ob ich die Funktion zur Berechnung des Gewinns einer Bestellung mit einem maximalen Ticket richtig geschrieben habe. Vielen Dank im Voraus.

//+----------------------------------------------------------------------------+
//| Расчет профита максимального ордера в сетке                                |
//+----------------------------------------------------------------------------+
double GetProfitMaxOrder(int otype)
{
  int max_ticket=0;
  double max_ticket_profit = 0;
         ticket = 0;
  {
   for (int cnt = OrdersTotal() - 1; cnt >= 0; cnt--) 
    {
    if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == otype)
      {
        max_ticket = OrderTicket();
        if(max_ticket > ticket)
        {
          ticket = max_ticket;
          max_ticket_profit = OrderProfit();
        }
      }
    }
  }
  return(max_ticket_profit);
}

 
Сергей Таболин #:

Also heute oder neulich?

Es ist ein bisschen beunruhigend...

Das ist in Ordnung. Ich wollte jetzt nachsehen, aber sie riefen mich an, und mir wurde klar, dass ich nicht so bald zurückkommen würde. Das ist ein toller Bericht, nicht wahr?)

 
EVGENII SHELIPOV #:

Guten Tag allerseits!!!

Ich schreibe ein Gitter EA, ich brauche, um einen Gewinn nur für die Bestellung mit dem maximalen Ticket und die Bestellung mit dem minimalen Ticket (das Minimum ist für später), jetzt möchte ich einen Gewinn für die maximale Bestellung zu finden. Ich füge die Funktion und ein Bild bei, das das Prinzip des Öffnens eines Rasters von Aufträgen zeigt. Meine Frage ist, ob ich die Funktion zur Berechnung des Gewinns einer Bestellung mit einem maximalen Ticket richtig geschrieben habe. Vielen Dank im Voraus.

//+----------------------------------------------------------------------------+
//| Расчет профита максимального ордера в сетке                                |
//+----------------------------------------------------------------------------+
double GetProfitMaxOrder(int otype)
{
  int max_ticket=0;
  double max_ticket_profit = 0;
  {
   for (int cnt = OrdersTotal() - 1; cnt >= 0; cnt--) 
    {
    if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == otype)
      {
      if(max_ticket < OrderTicket())
         {
         max_ticket = OrderTicket();
         max_ticket_profit = OrderProfit()+OrderCommission()+OrderSwap();
        }
      }
    }
  }
  return(max_ticket_profit);
}
 
Vladimir Simakov #:

Das Problem ist, dass man nicht versteht, was passiert, wenn man einen Anruf tätigt:

Und hier ist es ganz einfach. Ein CWave-Objekt wird erstellt und sofort wieder zerstört.) Dieses temporäre Objekt hat nichts mit der Instanz zu tun, in deren Konstruktor der Aufruf erfolgt ist)))


Machen Sie sich keine Illusionen. Im Wesentlichen geht es darum, dass Sie eine Methode aufrufen, die ein Konstruktor mit einem anderen Satz von Parametern ist. Dabei wird kein Objekt erzeugt.

Ein ähnlicher Konstruktoraufruf, der ebenfalls nicht zu dem gewünschten Ergebnis führt:

this.CWave(namePref, startPrice, startTime, endPrice, endTime);
 
Guten Tag. Bitte teilen Sie mir mit, wie ich den Eröffnungskurs der dem aktuellen Kurs am nächsten liegenden Order ermitteln kann. MQL4. Haben Sie irgendwelche Beispiele?
 

Hallo, könnten Sie mir bitte sagen, ob ich den Ausdruck richtig verstanden habe?

MaxMartinLot = Lot*MathPow(K_Martin,OrdersClose); - bedeutet K_Martin , im Umfang von OrdersClose ?

 
законопослушный гражданин #:

Hallo, könnten Sie mir bitte sagen, ob ich den Ausdruck richtig verstanden habe?

MaxMartinLot = Lot*MathPow(K_Martin,OrdersClose); - bedeutet K_Martin , im Umfang von OrdersClose ?

Was ist OrdersClose?

Siehe hier
Grund der Beschwerde: