![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
ilunga:
P.S. Gehe ich recht in der Annahme, dass in meinem (und Ihrem) Code bar_info[1] das Maximum des aktuellen Balkens ist?
Niemand hat etwas über die aktuelle Bar gesagt. :)
Ich habe gerade Ihr Beispiel nachgearbeitet. Wenn Sie genau den aktuellen Balken wollen, müssen Sie das tun:
1. Definieren Sie die Richtung der Reihe des Arrays (0 bar - aktuell oder am höchsten).
Wenn, wie in unserem Fall, das Array ausgelagert wird, können Sie dies einmal im Initialisierungsblock tun. Wenn wir das Array in einer Funktion ausblenden, definieren wir es an Ort und Stelle.
2. wenn das Array als Serie deklariert ist, ist der aktuelle Balken Null und der davor geschlossene Balken ist 1.
Zumindest soweit ich mich erinnere.
Vielleicht habe ich etwas übersehen, aber um auf der aktuellen Leiste zu öffnen (unter Berücksichtigung aller Ergänzungen) sollte es so aussehen.
Verschieben Sie das Array in die Funktion!
Und niemand hat etwas über die aktuelle Version gesagt. :)
Ich habe gerade Ihr Beispiel überarbeitet. Wenn Sie ein aktuelles brauchen, müssen Sie das tun:
1. die Richtung der Array-Reihe festlegen (0 bar - aktuell oder die letzte).
Wenn, wie in unserem Fall, das Array ausgelagert wird, können Sie dies einmal im Initialisierungsblock tun. Wenn wir das Array in einer Funktion ausblenden, definieren wir es an Ort und Stelle.
2. wenn das Array als Serie deklariert ist, ist der aktuelle Balken Null und der davor geschlossene Balken ist 1.
Zumindest soweit ich mich erinnere.
Ich habe das Array auf 3 Elemente erweitert. Ich habe eine Diskrepanz zwischen dem aktuellen Preis und dem, was drin ist. Dies ist höchstwahrscheinlich der Grund.
Ergebnisse (der Test wurde mit GBPUSD durchgeführt):
Wir erhalten, dass sowohl Ask als auch Bid größer als das Maximum von Null und größer als das Maximum des zweiten Balkens sind
Wenn wir den Test für EURUSD durchführen, ist alles in Ordnung:
Ich habe das Gefühl, dass beim Testen "nicht mein" Paar die Situation "Informationen über Balken wurde aktualisiert, aber das Häkchen ist noch nicht vorhanden".
Ich habe das Array auf 3 Elemente erweitert. Ich erhalte eine Inkonsistenz zwischen dem aktuellen Preis und dem Inhalt des Arrays. Das ist höchstwahrscheinlich der Grund dafür.
Ergebnisse:
Wir erhalten, dass Ask und Bid beide größer sind als das Maximum des ersten Balkens und größer als das Maximum des zweiten Balkens
Sie berücksichtigen die Serialität von Arrays in Ihrem Code nicht. Niemand kann garantieren, dass bei diesem Ergebnis nicht etwa im Jahr 2000 0 bar sein wird.
Ich gab den Code oben ist es für alle TFs in der Array-Variante geeignet.
Dieser Code hat seinen Grund.
Wenn Sie nur einen täglichen Zeitrahmen (D1) benötigen, um das Maximum des Balkens zu identifizieren, brauchen Sie sich nicht mit dem Array zu befassen, sondern können den ersten Teil der Funktion wie folgt ändern
Sie berücksichtigen die Serialität von Arrays in Ihrem Code nicht. Niemand kann garantieren, dass bei diesem Ergebnis nicht etwa im Jahr 2000 0 bar sein werden.
Ich gab den Code oben ist es für alle TFs in der Array-Variante geeignet.
Dieser Code ist aus einem bestimmten Grund vorhanden
Sie berücksichtigen die Serialität von Arrays in Ihrem Code nicht. Niemand kann garantieren, dass bei diesem Ergebnis 0 bar nicht etwa im Jahr 2000 sein wird.
Ich gab den Code oben ist es für alle TFs in der Array-Variante geeignet.
Dieser Code hat seinen Grund.
Ok, machen Sie das Array dynamisch.
Anstelle von xxx setzen wir true und false.
Die Ergebnisse:
и
Die Reihenfolge im Array wird geändert, das Ergebnis nicht. Das Gebot ist größer als der maximale [0]-te Balken des Arrays
ArraySetAsSeries nur für dynamische Arrays?
Ich kann mich nicht erinnern, um ehrlich zu sein. Aber das Ergebnis dieses Codes, das ich oben zitiert habe, stimmt mit dem überein, was wir erhalten (für EUR ist der Eröffnungskurs 1,24516 für GBP 1,56721)
Obwohl ja, es funktioniert gut ohne ArraySetAsSeries an dieser Stelle
PS
Das heißt, wenn Sie den aktuellen Balken abfragen wollen, müssen Sie unnötigerweise drei Balken in das Array in dieser Zeile kopieren.
PS
D.h., wenn Sie den aktuellen Balken benötigen, kopieren Sie völlig vergeblich drei Balken in dieser Zeile in das Array
Ich danke Ihnen! Diese Option funktioniert ohne Fehler und ist in diesem Fall völlig ausreichend.
Die Frage, die oben offen gelassen wurde, ist jedoch, wie das Gebot größer als das Maximum sein kann =(
ilunga:
Es bleibt jedoch die Frage offen, wie das Gebot größer sein kann als der Höchstbetrag =(
Zunächst müssen wir feststellen, für welchen Zeitraum dieser Höchstwert gilt.
Wenn das Array als double bar_info[n] deklariert ist, ist der aktuelle Balken darin der größte Index.
Wenn n = 2 ist, funktioniert dieser Code mit dem Tagesbalken von gestern.
und diese hier mit dem aktuellen Balken
D.h., wenn Sie mehrere Balken kopieren, sollten Sie so vorgehen, um den aktuellen Balken zu erhalten (obwohl Sie möglicherweise zusätzlich überprüfen müssen, wie viele Balken in das Array kopiert wurden)
Als Erstes muss festgelegt werden, für welchen Zeitraum dieser Höchstwert gilt.
Wenn das Array als double bar_info[n] deklariert ist, dann ist der aktuelle Takt darin der größte Index.