Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 115

 
sss20192:

Der Indikator hat verschiedene Daten im Datenfenster. Ich hänge den EA an den H1-Chart an und er kopiert die Daten aus den Zeitrahmen M5, M15 und H1.


int  CopyBuffer(
   int       indicator_handle,     // handle индикатора
   int       buffer_num,           // номер буфера индикатора
   int       start_pos,            // откуда начнем 
   int       count,                // сколько копируем
   double    buffer[]              // массив, куда будут скопированы данные
   );
Puffer (Sie haben Nullen) und Arrays, wo wir kopieren, sind alle gleich, Sie beginnen mit 1 Element, kopieren Sie 1 Element, vielleicht die Richtung des Arrays spielt auch.

 
zfs:
Puffer (Sie haben Nullen) und Arrays, wo Sie kopieren, sind alle gleich, Sie beginnen mit 1 Element, kopieren 1 Element, vielleicht die Richtung des Arrays spielt auch.

Nun, ja, der erste Indikatorpuffer, auf drei verschiedenen Tamframes. Und bis jetzt verwende ich dasselbe Array für die Protokollierung der Daten.

Ich habe versucht, ArraySetAsSeries true und false zu setzen. Trotzdem erscheinen manchmal seltsame Daten wie -4,53e-32 im Protokoll.

 

Meine Herren, können Sie mir sagen, wie ich das umsetzen kann?

Es gibt ein Array, in das ein Wert geschrieben wird, und wenn es einen ähnlichen Wert enthält, gibt es einen Knall.

 
sss20192 Manchmal erscheinen trotzdem seltsame Daten wie -4,53e-32 im Protokoll
Positiv zu vermerken ist, dass wir Prüfungen sowohl für die erfolgreiche Erstellung von Handles als auch für den Erfolg der Funktion CopyBuffer() einfügen sollten. Andernfalls wissen wir noch nicht einmal, ob dieser Müllwert das Ergebnis einer erfolgreichen Ausführung der Funktion CopyBuffer() ist oder ob die Funktion nicht richtig funktioniert hat.
 
Top2n: Es gibt ein Array, in das ein Wert geschrieben wird, und wenn es einen ähnlichen Wert enthält, kommt es zu einem Absturz.
Es ist notwendig, die Array-Elemente aufzuzählen und zu prüfen, ob sie dem gewünschten Wert entsprechen. Wenn keine Übereinstimmungen gefunden werden, wird der Wert in das Array geschrieben.
 
Yedelkin:
Sie sollten versuchen, die Array-Elemente zu durchsuchen, um zu sehen, ob sie mit dem gewünschten Wert übereinstimmen. Wenn keine Übereinstimmung gefunden wird, wird der Wert in das Array geschrieben.
Und wie vergleicht man zwei Indizes in einem Array?
 
Top2n:
Und wie vergleicht man zwei Indizes in einem Array?

Möchten Sie den Artikel aufmerksam lesen? >> MQL5 Programmiergrundlagen - Arrays

Sie enthält alle Details für alle Fälle, die mit Arrays zu tun haben. Das sollte für Sie auf jeden Fall ausreichen. ))

 
tol64:

Möchten Sie den Artikel aufmerksam lesen? >> MQL5 Programmiergrundlagen - Arrays

Sie enthält alle Details für alle Fälle, die mit Arrays zu tun haben. Das sollte für Sie auf jeden Fall ausreichen. ))

Ich danke Ihnen allen für Ihre Hilfe ;-) Ich werde mich nicht von dir verabschieden)))
 
Yedelkin:
Freundlicherweise sollten wir in den Code die Prüfungen für den Erfolg der Erstellung von Handles und für den Erfolg der Funktion CopyBuffer() einfügen. Andernfalls wissen wir nicht einmal, ob dieser Müllwert ein Ergebnis der erfolgreichen Ausführung der Funktion CopyBuffer() ist oder ob die Funktion nicht richtig funktioniert hat.

Geprüft. Die Handles werden normal erstellt, die Indizes sind 10, 11, 12. Die CopyBuffer-Funktion erzeugt jedoch den Fehler ERR_INDICATOR_DATA_NOT_FOUND. Warum kann dieser Fehler auftreten? Die ausgewählten Paare befinden sich im Fenster Market Watch, die Charts dieser Währungspaare sind geöffnet.

Außerdem erstelle ich eine Variable, die das Ergebnis der CopyBuffer-Ausführung anzeigt,

int aaa = CopyBuffer..., zeigt es den Wert 1 an, als ob ein Wert kopiert wurde, wie in der Funktion definiert.


Beim Kopieren des MA-Puffers wird der gleiche Fehler angezeigt, aber der Wert wird korrekt in das Array geschrieben.

Bitte zeigen Sie uns ein Beispiel für das korrekte Kopieren von Puffern

 
sss20192: Geprüft. Die Griffe werden normal erstellt und haben die Indizes 10, 11 und 12. Aber die CopyBuffer-Funktion erzeugt den Fehler ERR_INDICATOR_DATA_NOT_FOUND. Warum kann ein solcher Fehler auftreten? Die ausgewählten Paare befinden sich im Fenster Market Watch, die Charts dieser Währungspaare sind geöffnet.

Außerdem erstelle ich eine Variable, die das Ergebnis der CopyBuffer-Ausführung anzeigt,

int aaa = CopyBuffer..., zeigt es den Wert 1 an, als ob ein Wert kopiert wurde, wie in der Funktion definiert.

Beim Kopieren des MA-Puffers wird der gleiche Fehler angezeigt, aber der Wert wird korrekt in das Array geschrieben.

Bitte zeigen Sie mir ein Beispiel, wie man den Puffer korrekt kopiert

Ja, das Beispiel für das Kopieren von Puffern steht genau in der Beschreibung der Funktion CopyBuffer(). Bitte beachten Sie die Zeilen

//--- check if all data calculated
    if(BarsCalculated(ma_handle)<rates_total) 

//--- try to copy
    if(CopyBuffer(ma_handle,0,0,to_copy,MABuffer)<=0) return(0);
 
Grund der Beschwerde: