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

 
Vitaly Muzichenko #:

Kopieren in ein Array

Wie erhält man den maximalen Wert in einem Array?

Kopieren Sie zusätzlich CopyHigh und holen Sie das Maximum aus diesem Array. Ich verstehe, dass durch ... es ... aber der einzige andere Weg ist, um über in der Schleife versuchen.

 
Alexey Viktorov #:

Kopieren Sie zusätzlich CopyHigh und holen Sie das Maximum aus diesem Array. Ich verstehe, dass durch ... es ... aber die andere Option ist nur Schleifenbildung.

Das habe ich getan, aber es ist ein zusätzliches Kopieren. Die Verwendung einer Schleife ist ebenfalls keine Option.

Ich überlasse esCopyHigh.

 
Vitaly Muzichenko #:

Das habe ich, aber es ist eine zusätzliche Kopie. Auch der Weg über die Schleife ist keine Option.

Ich überlasse es dannCopyHigh.

Ich habe lange Zeit darüber nachgedacht. Und ich bin zu dem Schluss gekommen, dass, wenn wir für Minimum/Maximum von MqlRates Array suchen müssen, es besser ist, erforderliche Daten zu verschiedenen Double-Arrays zu kopieren.

 
Vitaly Muzichenko #:

Kopieren in ein Array

Wie ermittle ich die maximale Höhe in einem Array?

CopySymb[i].high
 
Vitaly Muzichenko #:

Kopieren in ein Array

Wie erhalte ich die maximale Höhe des Feldes?

Sie können es direkt in den Code schreiben:

MqlRates CopySymb[];
double maxHigh;
int iMaxHi, len;  

if((len = CopyRates(mSymbol,PERIOD_CURRENT,0,6,CopySymb))<0) return;

iMaxHi = 0;
maxHigh = CopySymb[0].high;

for (int i = 1; i < len; i++)
  if(CopySymb[i].high > maxHigh) {
    maxHigh = CopySymb[i].high;
    iMaxHi = i;
  }

Print(iMaxHi, ": ", maxHigh);

Und es ist OK, dass ArrayMaximum nicht mit MqlRates-Arrays funktioniert.

 
Mihail Matkovskij #:

Sie könnten es direkt in den Code schreiben:

aber wenn Sie darüber nachdenken?

selbst in diesem kurzen Code gibt es brutale Fehler

 
Maxim Kuznetsov #:

was, wenn Sie darüber nachdenken?

selbst in diesem kurzen Code gibt es brutale Fehler

Ich habe den Code online geschrieben. Ich habe es durchgesehen und alle Fehler behoben, glaube ich. Fügen Sie den Code in das Skript ein, und der Compiler zeigt die Fehler an, falls es welche gibt.

 
Mihail Matkovskij #:

Ich habe den Code online geschrieben. Ich habe sie durchgesehen und alle Fehler behoben, glaube ich. Fügen Sie den Code in das Skript ein, und der Compiler zeigt Fehler an, falls es welche gibt.

Es gibt kein Heilmittel mit Compiler, Sie müssen nur wissen: es kann 0 und EMPTY_VALUE in CopyXXX Ergebnis sein. Sehr selten, aber gut. EMPTY_VALUE ist DBL_MAX, d. h. der Höchstwert. Das ist es, was Sie finden werden.

es gibt keine Überprüfung der Korrektheit der von außen empfangenen Werte.

 
Maxim Kuznetsov #:

Dies kann nicht mit dem Compiler behoben werden, man muss nur wissen: CopyXXX-Ergebnisse können 0 und EMPTY_VALUE enthalten. Selten, aber oft. EMPTY_VALUE ist DBL_MAX, d. h. der Höchstwert. Das ist es, was Sie finden werden.

Es gibt keine Überprüfung der Korrektheit der von außen empfangenen Werte.

Sie erwarten, dass CopyRates 0,EMPTY_VALUE oderDBL_MAX in einem Array hoch zurückgibt? Ist das Ihr Ernst? :)

Vielleicht können Sie mir ein Beispiel zeigen, in dem dies geschieht?

 
Mihail Matkovskij #:

Sie glauben, dass CopyRates 0,EMPTY_VALUE oderDBL_MAX in einem Array hoch zurückgibt? Ist das Ihr Ernst? :)

Vielleicht können Sie mir ein Beispiel zeigen, in dem dies geschieht?

Und was wird ArrayMaximum tun, wenn es0,EMPTY_VALUE oderDBL_MAX in Array double gefüllt mit CopyHigh trifft?

Wo ist die Logik in Ihrer Aussage?

Grund der Beschwerde: