Fehler, Irrtümer, Fragen - Seite 2652
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
Warum kämpft ihr? Warum machen wir nicht gemeinsam etwas Sinnvolles?
Stanislav hat ein fantastisch nützliches Skript in KB veröffentlicht. Es erstellt auf einfache Weise Archive mit MQL-Dateien und Ressourcen.
Ich habe einen EA mit Hunderten von mqh-Dateien. Mit Hilfe des Skripts kann ich nun meinen EA einfach in den Quellcode übertragen, die Versionen kontrollieren und mit anderen teilen.
Ich danke Ihnen. Ich werde versuchen, es aufzuschlüsseln und die Optionen mit Diagrammereignissen zu überprüfen.
Schauen Sie sich den Thread an, in dem das Thema kürzlich ausführlich behandelt wurde -https://www.mql5.com/ru/forum/327888
Anton Shpilyuk: 2) Циклом-перебором до тех пор пока дата не будет совпадать(минус - скорость работы) это так?
Zum Thema "Balkenindex nach Zeitcopyrights erhalten"
Horror, das ist es wirklich! Die Aufgabe bestand darin, die Balken des M1-Zeitrahmens in den Indikator zu übernehmen, obwohl der Indikator selbst auf dem M5-Zeitrahmen arbeitet.
1. Wir mussten den gewünschten Zeitrahmen in OnCalculate() initialisieren, um ihn vor dem Start des Indikators zu laden (nach der Initialisierung ist das FirstStartFlag = false;). Denken Sie daran, in Indikatoren, wenn es nicht geladen ist, wird es -1 oder nicht vollständig geladen, so dass wir prüfen, wie viel geladen ist, wenn nicht genug, gehen wir an den Anfang derRückkehr(0);
declare array MqlRates rates[]; at the beginning, wherecnt_bars*5; - recalculate the number of bars M5 in M1
Danach aktualisieren wir die historischen Daten zu M1 im Hauptteil der gewünschten Funktion jedes Mal, wenn wir Berechnungen durchführen:
Außerdem wird in der Schleife der M5-Balken in einer eingebetteten Schleife nach dem Index des entsprechenden M1-Balkens gesucht, wobeitime[s] der aktuelle M5-Balken des zu berechnendenZeitrahmens ist:
Und dann verwenden wir diesen Index, um die erforderlichen M1-Bar-Daten zu finden, in meinem Fall sind es rates[IndexRates-5].time und rates[IndexRates-k-4].close
Gott sei Dank geht diese verschachtelte Schleife schnell durch die Balken, selbst bei einem Verlauf von 90 Tagen. Aber ich möchte in der Lage sein, für Bar-Indizes in der rates[].time-Array wie eine binäre Suche mit der ArrayBsearch-Funktion zu suchen
Kurzer Hinweis auf den Fehler:
Wenn es eine Klassenvererbung gibt A <= B <= C <= D
und es werden zwei Überladungsfunktionen implementiert, z.B. eine mit Parameter A* und eine mit Parameter B*,
Bei der Übergabe eines C*- oder D*-Objekts an eine solche Funktion verursacht MQL einen Kompilierungsfehler "ambiguous call to overloaded function".
Frage: Gibt es eine vernünftigere Abhilfe für diesen idiotischen Fehler als die oben beschriebene?
Hier geht es weiter mit mehr "Warum MQL != C++"...
Warum sollte man etwas kommentieren, wenn man nicht auf den Grund gegangen ist?
Warum sollte man etwas kommentieren, wenn man nicht auf den Grund gegangen ist?
Denn ich habe schon längst ein Thema für solche Klärungen eröffnet (weil niemand wie Sie es selbst tun konnte).
Und dann, dass der Unterschied in den Sprachen nichts mit Fehlern oder Bugs zu tun hat!
Die MMS demoralisiert nach und nach:
Kurzer Hinweis auf den Fehler:
Wenn es eine Klassenvererbung gibt A <= B <= C <= D
und zwei Funktionen implementiert werden, zum Beispiel eine für A* und eine für B*,
Bei der Übergabe eines C*- oder D*-Objekts an eine solche Funktion verursacht die MQL einen Kompilierungsfehler "ambiguous call to overloaded function".
Frage: Gibt es eine vernünftigere Abhilfe für diesen idiotischen Fehler als die oben beschriebene?
Nun, STL wird nicht eins-zu-eins transponiert. Hier muss man genau hinschauen. Am einfachsten ist es, alle möglichen Funktionen in die abstrakten Methoden einer Basisklasse oder Schnittstelle zu schreiben, und in die Nachkommen - entweder als Implementierung oder als =delte. In diesem Fall müssen Sie Zeiger oder Referenzen desselben Typs an die Methoden der Basisklasse übergeben. Zwar gibt es ein unvermeidliches Übel in Form einer virtuellen Tabelle, aber es ist besser, die Architektur so zu gestalten, dass es nirgendwo zu teuren dynamic_cast-Verzweigungen kommt.