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

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
Vergleichen Sie den nächsten Takt, und wenn die Reihenfolge unterbrochen ist, setzen Sie die Markierung zurück und notieren Sie, wie viele davon richtig waren, und fahren Sie in der Schleife fort.
Es reicht, wenn man feststellt, dass der Balken bullisch und der nächste bärisch ist. Ist der nächste Balken derselbe wie der vorherige, notiert man den Wert und setzt die Flagge zurück. Und so weiter bis zum Ende.
Die erste ist jedoch nicht unbedingt bullish.
aber der erste ist vielleicht kein Stier, aber es gibt keine Möglichkeit.
Hier ist eine Variante, wenn auch nicht ganz richtig, die immer von einer bärischen Kerze ausgeht
Hier ist eine Variante, wenn auch nicht ganz richtig, die immer von einer bärischen Kerze ausgeht
Ich danke Ihnen. Wenn man diese Zahl quadriert und eins hinzufügt, ist das Ergebnis richtig.
Wird geprüft if(i%2==0)?aber der erste ist vielleicht kein Stier, auf keinen Fall.
Hier ein Beispiel dafür, wie man dieselben Kerzen findet und die Richtung der Kette ändert:
An den Stellen, an denen die Kette weiterläuft, können Sie nun die Anzahl der Kerzen in der Kette zählen und in einer Liste speichern, und an den Stellen, an denen die Kette in eine neue übergeht, eine neue Zählung beginnen.
Die Anzahl der Kerzen in jeder Kette kann in einer sortierten Liste gespeichert werden. Durch Sortieren der Liste können dann die maximalen und minimalen Sequenzen gefunden werden.
Ich danke Ihnen. Wenn die erhaltene Zahl quadriert und eins addiert wird, ist das Ergebnis richtig.
Ist es das, was wir überprüfen, wenn (i%2==0)?Wenn i ein Vielfaches von zwei ist.
Es ist der Rest von i geteilt durch 2
Hier ist die Größe der lokalen Variablen während der Kompilierung zu groß (mehr als 512kb).
Wo soll man suchen und was soll man tun? Es gibt ein String-Array CArrayString in der Funktion, ich vermute, es kann ein Fehler sein.
Ich fülle sie mit der Methode Add() und führe dann Clear() und Shutdown() erneut aus. Und dann fülle ich sie wieder mit neuen Daten mit der Methode Add(). Wird in diesem Fall das Array wieder mit null Elementen gefüllt?
Wir müssen solche Mitglieder aus den Klassen entfernen, die bereits in der Kompilierungsphase Speicherplatz belegen. Diese Daten werden im Stapelspeicher abgelegt, der immer sehr klein ist. Die Lösung für dieses Problem ist die dynamische Zuweisung von Speicher für Klassenmitglieder, die viel Speicherplatz benötigen.
Zum Beispiel, wenn es ein Klassenmitglied gibt:
sollte er durch ersetzt werden:
Wir müssen aus den Klassen diejenigen Mitglieder entfernen, die bereits bei der Kompilierung Speicherplatz belegen. Diese Daten werden im Stapelspeicher abgelegt, der immer sehr klein ist. Die Lösung für dieses Problem ist die dynamische Zuweisung von Speicher für Klassenmitglieder, die viel Speicherplatz benötigen.
Zum Beispiel, wenn es ein Klassenmitglied gibt:
dann sollte sie durch ersetzt werden:
Danke. Irgendwie bin ich dieses Problem losgeworden, indem ich die Klasse aus den Parametern der einzelnen Funktionen entfernt habe. Im Allgemeinen war es möglich, dieses Objekt einmal für alle Methoden zu initialisieren.
Ich habe eine weitere Frage über die CArray-Klasse, genauer gesagt CArrayObj. Gibt es eine Delete()-Methode, aber sie verschiebt kein Element im Array? Das heißt, wenn ich Delete(18) lösche, wird ein Element an dieser Position entfernt, und wenn ich später das Element über diesen Index abfragen möchte, erhalte ich einen ungültigen Zeiger. Gibt es eine Methode, mit der Elemente gelöscht und verschoben werden können, so dass in diesem Fall das 18. Element nach dem Löschen das 19.
Ich danke Ihnen. Irgendwie habe ich dieses Problem gelöst, indem ich die Klasse aus den Parametern der einzelnen Funktionen entfernt habe. Im Allgemeinen war es möglich, dieses Objekt einmal für alle Methoden zu initialisieren.
Ich habe eine weitere Frage über die CArray-Klasse, genauer gesagt CArrayObj. Gibt es eine Delete()-Methode, aber sie verschiebt kein Element im Array? Das heißt, wenn ich Delete(18) lösche, wird ein Element an dieser Position entfernt, und wenn ich später das Element über diesen Index abfragen möchte, erhalte ich einen ungültigen Zeiger. Gibt es eine Methode, mit der Elemente gelöscht und verschoben werden können, so dass das 18. Element nach dem Löschen das 19. ist?
Ich habe nicht mit der Standardbibliothek gearbeitet, aber laut der Hilfe sollte die Delete()-Methode das Element physisch entfernen und dabei die Größe des Arrays ändern. Ausnahme: wenn der Speicherverwaltungsmechanismus deaktiviert ist. Standardmäßig ist dieser Mechanismus aktiviert. Die FreeMode-Methode wird verwendet, um den Zustand des Speicherverwaltungsflags zu überprüfen.
Ich für meinen Teil würde empfehlen, meine eigenen Arrays in MQL zu verwenden (obwohl ich in C++ Vektoren und Listen verwende) und die Speicherverwaltung selbst zu übernehmen, da ich keinen besonderen Komfort oder Vorteil in der CArray-Klasse sehe. Ich lösche Array-Elemente in meinen eigenen Arrays ziemlich schnell mit dieser Methode:
Ihr einziger Nachteil ist, dass sie die Reihenfolge der Array-Elemente nicht beibehält. Das heißt, sie kann auf alle Arrays angewendet werden, außer auf geordnete (sortierte) Arrays.
Hallo, könnten Sie mir bitte sagen, wo ich ein Skript finden kann, das mir erlaubt, schwebende Kauf- und Verkaufsaufträge in MT4 auf einmal für eine bestimmte Anzahl von Pips vom aktuellen Kurs zu platzieren, d.h. nicht manuell zu zählen und vielleicht nicht einmal das Auftragsfenster zu betreten? Ich möchte nicht zum Bestellfenster gehen. Vielen Dank.
PS: vielleicht frage ich etwas Falsches, ich habe noch nie Skripte benutzt.
Bitte erklären Sie mir den Punkt -"Marktaufträge können nicht geschlossen werden, wenn ihre StopLoss- oder TakeProfit-Werte den FreezeLevel-Parameter verletzen."
Bedeutet dies wörtlich, dass ein Marktauftrag nicht geschlossen werden kann, wenn sein TakeProfit oder StopLoss nicht dem FreezeLevel entspricht? Ich verstehe nur nicht ganz, wie eine Open Market Order Stops haben kann, die gegen die StopLevel oder FreezeLevel Regeln verstoßen? Denn wenn die falschen Haltestellen gesetzt werden, gibt der Server nur eine Fehlermeldung aus und es werden keine Haltestellen gesetzt.
Bitte teilen Sie uns auch mit, was wir sonst noch wissen müssen, wenn ein Broker FreezeLevel verwendet, um eine Marktorder zu schließen.