Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1884
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Ich diskutiere nicht. "Die grauen sind auf dem Bild in diesem Beitrag zu sehen.
Ohne das Quellenmaterial sind dies die, die
Nun, ich habe von "diesen" gesprochen. Als ich einen Überlauf hatte und die Indikatoren nicht angezeigt wurden, habe ich nicht darauf geachtet, was in dem Menü angezeigt wird, das auf dem Screenshot in dem von Ihnen erwähnten Beitrag zu sehen ist. Ich kann hier nichts mit Sicherheit sagen.
Wenn sich die Indikatoren jedoch nicht im Navigator, sondern im Ordner befinden, bedeutet dies, dass die neuen Indikatoren erst dann im Navigator angezeigt werden, wenn einige der alten Indikatoren aus dem Ordner entfernt wurden.
Das habe ich auch schon erlebt. Ich bin nicht der Einzige.
Ich wollte die Notwendigkeit, die Größe des dynamischen Arrays manuell zu ändern, umgehen, indem ich es einfach als Indikatorpuffer zugewiesen habe. Aber ich kann ArrayResize() nicht loswerden, als ob es sich um ein dynamisches Array des Indikatorpuffers handeln würde, dessen Größe vom Terminal selbst überwacht werden sollte und das nicht manuell in der Größe verändert werden sollte:
https://www.mql5.com/ru/docs/series/bufferdirection:
Индикаторный буфер представляет из себя динамический массив типа double, размером которого управляет клиентский терминал с тем, чтобы он всегда соответствовал количеству баров, на которых индикатор рассчитывается. Обычный динамический массив типа double назначается в качестве индикаторного буфера с помощью функции SetIndexBuffer(). Для индикаторных буферов не требуется задавать размер с помощью функции ArrayResize(), исполняющая система терминала сама позаботится об этом.
Wir gehen auf https://www.mql5.com/ru/docs/array/arrayisdynamic, führen den Code aus und stellen plötzlich fest, dass:
2022.01.24 21:25:27.543 t (NZDUSD,D1) 3. Prüfen des Indikatorpuffers:
2022.01.24 21:25:27.543 t (NZDUSD,D1) Größe vor Speicherfreigabe = 7278
2022.01.24 21:25:27.543 t (NZDUSD,D1) Dies ist ein dynamisches Array = Keine
2022.01.24 21:25:27.543 t (NZDUSD,D1) Größe nach Speicherfreigabe = 0
zur gleichen Zeit:
Ich schaue in das Buch - ich sehe eine Feige. Oder sind wir die ganze Zeit getäuscht worden?
Oder ist es vielleicht einmal dynamisch (bei der ersten Initialisierung) und das war's dann?
Ich kann ArrayResize() nicht loswerden, das angeblich ein dynamisches Array des Indikatorpuffers ist, dessen Größe vom Terminal selbst überwacht werden sollte und das angeblich nicht manuell in der Größe geändert werden muss:
https://www.mql5.com/ru/docs/series/bufferdirection:
Wir gehen auf https://www.mql5.com/ru/docs/array/arrayisdynamic, führen den Code aus und stellen plötzlich fest, dass:
Zugleich ist es:
Ich schaue in das Buch - ich sehe eine Feige. Oder sind wir die ganze Zeit getäuscht worden?
Oder ist sie vielleicht einmal dynamisch (bei der ersten Initialisierung) und das war's dann?
22:23:17.002 Dynamischer EURCAD,H1: +============================+
0 22:23:17.002 Dynamische EURCAD,H1: 1. Überprüfen eines dynamischen Arrays:
0 22:23:17.002 Dynamisches EURCAD,H1: Größe vor Speicherfreigabe = 100
0 22:23:17.002 Dynamisch EURCAD,H1: Dies ist ein dynamisches Array = Ja
0 22:23:17.002 Dynamisches EURCAD,H1: Größe nach Speicherfreigabe = 0
0 22:23:17.002 Dynamische EURCAD,H1: 2. Statische Array-Prüfung:
0 22:23:17.002 Dynamisches EURCAD,H1: Größe vor Speicherfreigabe = 100
0 22:23:17.002 Dynamisches EURCAD,H1: Dies ist ein dynamisches Array = Keine
0 22:23:17.002 Dynamisches EURCAD,H1: Größe nach Speicherfreigabe = 0
0 22:23:17.002 Dynamische EURCAD,H1: 3. Indikatorpuffer prüfen:
0 22:23:17.002 Dynamischer EURCAD,H1: Größe vor Speicherfreigabe = 2725
0 22:23:17.002 Dynamisches EURCAD,H1: Dies ist ein dynamisches Feld = Ja
0 22:23:17.002 Dynamisches EURCAD,H1: Größe nach Speicherfreigabe = 0
0 22:23:24.754 Dynamische EURCAD,H1: uninit Grund 1
0 22:23:24.758 Benutzerdefinierter Indikator Dynamic EURCAD,H1: entfernt
Dies ist bei 4.
Ich wollte die Notwendigkeit, die Größe des dynamischen Arrays manuell zu ändern, umgehen, indem ich es einfach als Indikatorpuffer zugewiesen habe. Aber ich kann ArrayResize() nicht loswerden, als ob es sich um ein dynamisches Array des Indikatorpuffers handeln würde, dessen Größe vom Terminal selbst überwacht werden sollte und das nicht manuell in der Größe verändert werden sollte:
https://www.mql5.com/ru/docs/series/bufferdirection:
Wir gehen auf https://www.mql5.com/ru/docs/array/arrayisdynamic, führen den Code aus und stellen plötzlich fest, dass:
Zugleich ist es:
Ich schaue in das Buch - ich sehe eine Feige. Oder sind wir die ganze Zeit getäuscht worden?
Oder vielleicht ist es einmalig dynamisch (bei der ersten Initialisierung) und das war's dann?
ja, das war's dann :-)
...nach SetIndexBuffer ist es unmöglich, ArrayResize zu verwenden und aus Sicht des Programms ist das Array statisch, mit einer vordefinierten (extern kontrollierten) Größe
22:23:17.002 Dynamischer EURCAD,H1: +============================+
0 22:23:17.002 Dynamische EURCAD,H1: 1. Überprüfen eines dynamischen Arrays:
0 22:23:17.002 Dynamisches EURCAD,H1: Größe vor Speicherfreigabe = 100
0 22:23:17.002 Dynamisch EURCAD,H1: Dies ist ein dynamisches Array = Ja
0 22:23:17.002 Dynamisches EURCAD,H1: Größe nach Speicherfreigabe = 0
0 22:23:17.002 Dynamische EURCAD,H1: 2. Statische Array-Prüfung:
0 22:23:17.002 Dynamisches EURCAD,H1: Größe vor Speicherfreigabe = 100
0 22:23:17.002 Dynamisches EURCAD,H1: Dies ist ein dynamisches Array = Keine
0 22:23:17.002 Dynamisches EURCAD,H1: Größe nach Speicherfreigabe = 0
0 22:23:17.002 Dynamische EURCAD,H1: 3. Indikatorpuffer prüfen:
0 22:23:17.002 Dynamischer EURCAD,H1: Größe vor Speicherfreigabe = 2725
0 22:23:17.002 Dynamisches EURCAD,H1: Dies ist ein dynamisches Feld = Ja
0 22:23:17.002 Dynamisches EURCAD,H1: Größe nach Speicherfreigabe = 0
0 22:23:24.754 Dynamische EURCAD,H1: uninit Grund 1
0 22:23:24.758 Benutzerdefinierter Indikator Dynamic EURCAD,H1: entfernt
Dies ist bei 4.
Fantastisch! Was ist diese Magie? Ich habe soeben EURCAD,H1 überprüft - wieder nein.
Und was ist 4? In dem Beispiel gibt es nur drei Punkte.
Fantastisch! Was ist diese Magie? Gerade auf EURCAD,H1 geprüft - wieder "Nein".
Und was ist 4? In dem Beispiel gibt es nur drei Punkte.
MT4-Terminal
Fantastisch! Was ist diese Magie? Gerade auf EURCAD,H1 geprüft - wieder "Nein".
Und was ist 4? In dem Beispiel gibt es nur drei Punkte.
0 23:33:06.088 test (EURUSD,D1) +============================+
0 23:33:06.088 test (EURUSD,D1) 1. Überprüfung des dynamischen Arrays:
0 23:33:06.088 test (EURUSD,D1) Größe vor Speicherfreigabe = 100
0 23:33:06.088 test (EURUSD,D1) Dies ist ein dynamisches Feld = Ja
0 23:33:06.088 test (EURUSD,D1) Größe nach Speicherfreigabe = 0
0 23:33:06.088 test (EURUSD,D1) 2. Statischer Array-Test:
0 23:33:06.088 test (EURUSD,D1) Größe vor Speicherfreigabe = 100
0 23:33:06.088 test (EURUSD,D1) Dies ist ein dynamisches Array = Keine
0 23:33:06.088 test (EURUSD,D1) Größe nach Speicherfreigabe = 100
0 23:33:06.088 test (EURUSD,D1) 3. Indikatorpuffer prüfen:
0 23:33:06.088 test (EURUSD,D1) Größe vor Speicherfreigabe = 1054
0 23:33:06.088 test (EURUSD,D1) This is dynamic array = None
0 23:33:06.088 test (EURUSD,D1) Größe nach Speicherfreigabe = 0
Terminal MT5, keine Gedanken.
Ich wollte die Notwendigkeit, die Größe des dynamischen Arrays manuell zu ändern, umgehen, indem ich es einfach als Indikatorpuffer zugewiesen habe. Aber ich kann ArrayResize() nicht loswerden, als ob es sich um ein dynamisches Array des Indikatorpuffers handeln würde, dessen Größe vom Terminal selbst überwacht werden sollte und das nicht manuell in der Größe verändert werden sollte:
https://www.mql5.com/ru/docs/series/bufferdirection:
Wir gehen auf https://www.mql5.com/ru/docs/array/arrayisdynamic, führen den Code aus und stellen plötzlich fest, dass:
Zugleich ist es:
Ich schaue in das Buch - ich sehe eine Feige. Oder wurden wir die ganze Zeit über getäuscht?
Oder ist es vielleicht einmal dynamisch (bei der ersten Initialisierung) und das war's dann?
Das Pufferfeld ist dynamisch. In MQL haben dynamische Arrays Zeichen von Objekten, soweit ich es verstanden habe, während ich mit ihnen arbeitete (wie in Ultra-High-Level-Sprachen). Wenn Sie jedoch ein dynamisches Array als Puffer deklarieren (mit SetIndexBuffer), wird dieser Speicherbereich reserviert. Aus diesem Grund können die meisten Standardfunktionen die Größe nicht ändern. Ich verwende manchmal Objekt-Arrays als Indikatorpuffer. Und wenn ich das tue, wird der Speicher für solche Arrays im Destruktor des Objekts freigegeben. Somit ist die Freigabe des Indikatorpufferspeichers durch die Anwendung(oder das Objekt) selbst erlaubt. Das bedeutet aber nicht, dass das Array direkt während des Betriebs des Indikators wieder freigegeben werden kann. Alles sollte mit Bedacht gemacht werden.
Nachmittag
Können Sie mich beraten, ich versuche, einen Expert Advisor zu schreiben, und wenn ich ihn teste, passiert etwas Seltsames...
Ich habe eine Funktion
Was ist die Situation, ich führe eine Instanz des EA auf einem Chart aus und führe die zweite im Debug-Modus auf dem gleichen Chart mit MT4
aus. Die Eingabedaten für die Funktion sind die gleichen, aber die Ausgabedaten sind unterschiedlich!!!? Ich verstehe einfach etwas nicht, wie es scheint...(
mich zu beraten, wo ich nach Informationen suchen soll!!!
PS: berechnet die Differenz von genau 2,5 mal die LeistungIch habe eine Funktion
Was ist die Situation, ich starte eine Instanz des EA auf einem Chart laufen, und führen Sie die zweite im Debug-Modus auf dem gleichen Chart mit MT4
Die Eingangsdaten für die Funktion ist die gleiche, aber die Ausgangsdaten ist anders!!!? Ich verstehe einfach nicht etwas, es scheint...(
Können Sie mir sagen, wo ich nach Informationen suchen soll?!
PS: berechnet die Differenz von genau 2,5 mal die LeistungEs geht um die Formel, mit der der Winkel berechnet wird. In dem Code kann man sehen, dass für seine Berechnung nur eine Koordinate und einige Koeffizienten, deren Zweck unklar ist, verwendet. Was ist das? Bitte erläutern Sie, welche Daten Sie zur Berechnung des Winkels verwenden.