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

 
makssub #:

Schreiben Sie ein Beispiel, denn ich bin schon ein wenig verwirrt. Wenn es nicht zu viel Mühe macht. Danke

In der Schleife für die Suche nach Aufträgen:

if (OrderOpenPrice()<previous_value)
   {
   previous_value=OrderOpenPrice();
   nearest_order=OrderTicket();
   }

Vor der Schleife initialisieren Sie previous_value=DBL_MAX a nearest_order=0

 
Taras Slobodyanik #:

in der Auftragsschleife:

initialisiere previous_value=DBL_MAX a nearest_order=0 vor der Schleife

Ganz genau. Ich danke Ihnen. Werke

 
Taras Slobodyanik #:

in der Auftragsschleife:

initialisiere previous_value=DBL_MAX a nearest_order=0 vor der Schleife

DBL_MAX ist kategorisch).
 
Valeriy Yastremskiy #:
DBL_MAX ist kategorisch).

Hauptsache, es funktioniert)

Wie finde ich OP_BUY mit maximalem OrderOpenPrice und ermittle seinen OrderProfit.
Ich kann sie nicht zusammenfügen, alles funktioniert wie am Schnürchen... Wenn Sie mir gleich ein Beispiel geben können) Danke)

 
makssub #:

Die Hauptsache funktioniert)

Wie finde ich OP_BUY mit maximalem OrderOpenPrice und ermittle seinen OrderProfit.
Ich kann sie nicht zusammenfügen, alles funktioniert wie am Schnürchen... Wenn Sie gleich ein Beispiel nennen können) Danke)

previous_value=0;

if (OrderOpenPrice()>previous_value)
   {
   previous_value=OrderOpenPrice();
   profit_order=OrderProfit();
   }
 
MakarFX #:

Ich wollte nur sagen, dass ich fertig bin.

Aber Sie haben es kompakter gemacht. Ich werde Ihren Vorschlag annehmen.)

Danke

 
Wie kann man mit einer Datei im mql5-Programm arbeiten, ohne die Datei auf die Festplatte zu schreiben, sondern nur im RAM zu arbeiten, um die Geschwindigkeit zu erhöhen. Ich möchte Daten aus einem mql5-Programm in ein Programm auf meinem Computer übertragen. Ist es möglich, ohne Netzwerkfunktionen auszukommen? Es muss nicht unbedingt eine Datei, ein Array oder eine Variable sein; das ist sogar noch besser. Ich kenne nur zwei Möglichkeiten, Python-Integrationsmodul und Web-Socket, gibt es eine andere Möglichkeit?
 

Ich lösche alle Objekte in OnDeInit() durch eine Schleife (Pfeile, die Signalbalken und eine Schaltfläche anzeigen):

const int obj_total=ObjectsTotal();

Print("ObjectsTotal ",obj_total);

for(int i=0 ; i < obj_total ; i++){
 Print("ObjectName ",ObjectName(i),", i = ",i);
 ObjectDelete(ObjectName(i));
}

Ich bin mir bewusst, dass es ObjectsDeleteAll(), aber immer noch, wenn ich es durch eine Schleife tun, nur die Hälfte der Objekte in einem gelöscht werden. Das ist die eigentliche Arbeit der Schleife, und ich verstehe nicht, warum das so ist:

2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 20
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 19
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 18
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 17
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 16
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 15
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 14
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 13
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 12
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 11
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName button1, i = 10
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowUp0008, i = 9
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowUp0006, i = 8
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowUp0004, i = 7
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowUp0002, i = 6
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowUp0000, i = 5
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowDown0008, i = 4
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowDown0006, i = 3
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowDown0004, i = 2
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowDown0002, i = 1
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowDown0000, i = 0
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectsTotal 21
 
Nerd Trader #:

Ich lösche alle Objekte in OnDeInit() durch eine Schleife (Pfeile, die Signalbalken und eine Schaltfläche anzeigen):

Ich bin mir bewusst, dass es ObjectsDeleteAll(), aber immer noch, wenn ich es durch eine Schleife tun, nur die Hälfte der Objekte in einem gelöscht werden. Eigentlich funktioniert die Schleife folgendermaßen, und ich verstehe nicht, warum das so ist:

Die Schleife beim Löschen sollte umgekehrt werden:

for(int i=obj_total-1; i>=0; i--)

und dies gilt nicht nur für das Löschen von grafischen Objekten, sondern generell für das Löschen aller Objekte in den Listen des Terminals.

 
Nerd Trader #:

Ich lösche alle Objekte in OnDeInit() durch eine Schleife (Pfeile, die Signalbalken und eine Schaltfläche anzeigen):

Ich bin mir bewusst, ObjectsDeleteAll(), aber immer noch, wenn ich es durch eine Schleife tun, nur die Hälfte der Objekte in einem gelöscht werden. Eigentlich funktioniert die Schleife folgendermaßen, und ich verstehe nicht, warum das passiert:

aber wenn Sie es auf diese Weise versuchen - Sie müssen nur alle Namen eingeben

string   m_name[]= {"button1","ArrowUp0008","ArrowDown0008","ArrowUp0006","ArrowDown0006"};
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   for(int i=0; i<ArraySize(m_name); i++)
     {
      ObjectDelete(0,m_name[i]);
     }
//---
  }
//+------------------------------------------------------------------+