Fehler, Irrtümer, Fragen - Seite 2930
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
Übersetzen eines Indikators von mt4 nach mt5
Das Problem liegt in der Größe vonDRAW_HISTOGRAM
Wenn ich "1" oder "2" einstelle, ändert sich die Größe, aber "3" oder "4" = Größe ist immer noch "2".
Warum funktioniert alles in MT4, aber es gibt ein solches Problem mit MT5?
Ergebnis in mt4
Ergebnis in mt5, zeigt nur "2" Dicke, obwohl ich "3" in den Einstellungen habe
Auch das Setzen der Eigenschaft in OnInit() hilft nicht
PlotIndexSetInteger(0,PLOT_LINE_WIDTH, 3);
Kritischer Fehler während der Fehlersuche:
Ergebnis:
Derzeitige BetaversionHat jemand einen Weg gefunden, um den Indikator-Handle im Hauptfenster oder in einem Unterfenster anzeigen zu lassen? Ich spreche von benutzerdefinierten Indikatoren, die mit IndicatorCreate erstellt werden und dann mit ChartIndicatorAdd zum Diagramm hinzugefügt werden können.
Sie können den Indikator wahrscheinlich in OBJ_CHART verschieben und sehen, wo er sich befindet.
Hat jemand einen Weg gefunden, um eine Display-Eigenschaft von einem Indikator-Handle im Hauptfenster oder Unterfenster zu erhalten? Ich spreche von benutzerdefinierten Indikatoren, die mit IndicatorCreate erstellt werden und dann auf Wunsch des Benutzers mit ChartIndicatorAdd zum Diagramm hinzugefügt werden können.
hat etwas Ähnliches gemacht.
Der Code durchsucht alle offenen Charts nach einem Indikator anhand seines Handles. Gibt Symbol, Zeitrahmen, Chart-ID, Unterfenster und Indikatorname zurück.Hier ist eine, die ich gefunden habe. Ich weiß nicht mehr, ob es funktioniert oder nicht. Bitte schauen Sie sich das an.
Ich denke, Sie könnten den Indikator in OBJ_CHART einfügen und sehen, wo er sich befindet.
Ich werde es versuchen, denn jetzt hatte ich die Möglichkeit, es durch den Benutzer zu spezifizieren.
hat etwas Ähnliches gemacht.
Dem Code nach zu urteilen, werden alle offenen Charts nach einem Indikator anhand seines Handles durchsucht. Gibt Symbol, Zeitrahmen, Chart-ID, Unterfenster und Indikatorname zurück.Hier ist eine, die ich gefunden habe. Ich weiß nicht mehr, ob es funktioniert oder nicht. Bitte sehen Sie sich das an.
Das passt nicht zu Ihrer Frage: Indikatoren, die von IndicatorCreate erstellt werden, werden nicht in einem Fenster platziert - sie "sitzen" darin, und die Aufgabe besteht darin, einen solchen Indikator an seinem Handle im Fenster zu platzieren. MQL5 erlaubt es nun, mit der Funktion ChartIndicatorAdd ein beliebiges Handle zum Haupt- oder Unterfenster hinzuzufügen, unabhängig von den "Eigenschaften" des Indikators (keine Fehler!), und das Ergebnis sieht sehr seltsam aus, wenn das Hinzufügen nicht wie beabsichtigt durchgeführt wird.
Es gibt ein größeres Problem mit Indikatoren.
Einige von ihnen implementieren den OnCalculate-Handler entsprechend der vereinfachten Version mit einem Eingabefeld, und Sie können den Preistyp für ihre Berechnung auswählen. Woher wissen Sie aus dem fremden MQL5-Programm, dass der Indikator diesen Preistyp erwartet, der bei der Erstellung des Indikators nach allen Parametern übergeben werden muss? Es scheint, dass es keinen Weg gibt. Und wenn Sie das nicht tun, wird der Indikator durch die #Eigenschaft indicator_applied_price gezeichnet, auf die von außen nicht zugegriffen werden kann. Hier ist ein einfacher Expert Advisor, der den Indikator/AMA programmatisch in das Diagramm einfügt:
Wenn wir danach den Zeitrahmen des Charts wechseln, erhalten wir 2 AMA-Indikatoren: einen zum Schlusskurs (programmatisch erstellt) und den zweiten zum Eröffnungskurs (generiert aufgrund des Zeitrahmenwechsels und der #Eigenschaft indicator_applied_price PRICE_OPEN; es ist auch nicht klar, warum diese Eigenschaft nicht in iCustom übernommen wird).
Um das Thema der Indikatoren fortzusetzen, hänge ich den Expert Advisor an, den ich verwendet habe, um das Problem mit den MqlParam-Parametern herauszufinden und zu vermeiden.
Die Aufgabe des Expert Advisors besteht darin, den Indikator "Examples/Price_Channel" mit denselben Parametern in den Chart einzufügen, falls er noch nicht vorhanden ist.
Um dies zu tun, erstellen wir eine Instanz mit iCustom/IndicatorCreate, erhalten ein Array seiner Parameter durch IndicatorParameters und rufen dann in der Schleife IndicatorParameters für Indikatoren auf, die bereits im Diagramm existieren: Wenn es keine Übereinstimmung der Array-Parameter gibt, wird der Indikator dem Diagramm hinzugefügt, wenn es eine Übereinstimmung gibt, wird der neue Handle einfach zerstört.
Das Problem ist, dass die Gleichheit der Parameter nicht immer wie erwartet funktioniert. Insbesondere gibt es einen solchen ausfallsicheren Testfall. Wir platzieren den Expert Advisor auf ein beliebiges leeres Diagramm und klicken - es wird die erste Instanz des Indikators erstellt. Dann wechseln wir zu einem anderen Diagramm-Zeitrahmen (der alte Indikator bleibt erhalten) und klicken erneut. Seltsamerweise wird die zweite Instanz des Indikators erstellt.
Aus der Analyse der Ausführung und des Protokolls geht hervor, dass dies auf die falsche Gleichsetzung von Zeichenfolgen des Indikatornamens in Parametern zurückzuführen ist. Die Zeichenketten sind dort 260 Zeichen lang, aber die Klemme 0 befindet sich viel früher. Danach gibt es entweder einige Serviceinformationen oder Müll. Der String-Vergleich "==" oder StringCompare berücksichtigt diesen "Müll" und wir erhalten eine Ungleichheit der Strings.
Wenn wir Zeichenketten in ein char-Array umwandeln, erhalten die Arrays eine vollständige Übereinstimmung. Wenn Sie in ein kurzes Array konvertieren, erhalten Sie nur Unsinn. Alles in allem ein inkonsistentes Verhalten, das in der Dokumentation nicht beschrieben wird.
Ich bin mir nicht sicher, was genau der Fehler ist, ob er im Prinzip der String-Verarbeitung in MQL liegt oder etwas anderes.
Wenn jemand die Feinheiten kennt, bitte ich um einen Hinweis.
Wenn jemand die Feinheiten kennt, bitte ich um einen Hinweis.
Das ist die Art von Merkmal, bei der man, selbst wenn man sie kennt, die ganze Ebene noch einmal im Kopf durchgehen muss.
Hier ist die Definition von Selbstverfügbarkeit. Es schien zu funktionieren, wenn man die TFs wechselte.