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
Denken Sie darüber nach, wo die Daten (desto mehr ist es garantiert) zur Verfügung stehen werden, wenn Ihre Indikatoren ungeheuer langsam Empfang / Legen Ticks, verbringen Hunderte von Millisekunden oder sogar Sekunden für einen Tick. Infolgedessen reicht die Zeit der CPU nicht aus, um die Ticks zu verarbeiten, was sich in einem zunehmenden Defizit und einem entsprechenden Stillstand in der Chart-Historie niederschlägt.
Wenn Sie um "garantiertes Geben" bitten, ist das höchstwahrscheinlich eine Bitte von "ich will nichts wissen, ich will weiter schreiben wie ich will, ich will nicht über Leistung und Sperren nachdenken, einfach geben"?
Wenn Ihnen Millionen von Barren zur Verfügung stehen, sollten Sie sich Gedanken über die Leistung Ihrer und anderer Indikatoren machen. Ein schlecht geschriebener und teurer Indikator kann leicht die Aktualisierung des Charts für sein Symbol blockieren.
Beginnen Sie mit der Messung der OnCalculate-Reaktionszeit in Mikrosekunden. Teilen Sie dann 1 Sekunde durch die durchschnittliche Tick-Reaktionszeit, um den maximalen Tick-Durchsatz des Indikators in Ticks pro Sekunde zu erhalten.
Dies ist sofort ernüchternd.
Für die neue Art der Datenverarbeitung durch den Indikator in der vorgeschlagenen Version bleibt nur ein Tick (neuer Balken) übrig. Wer mehrere Neuberechnungen des Nullbalkens und des Grals im Nullbalken mag, sollte die bestehende Version verwenden. Fügen Sie eine neue Funktion zu OnInit - iOnCalculate - ein Handle zu einer der TF-Funktionen / OnCalculate im Indikator, wie iCustom, aber es ist etwas näher, die Indikator-Puffer auf OnCalculate sollte an das Handle iOnCalculate gebunden werden. In den Indikatorfunktionen wie OnCalculate wird nur ein neuer Tickbalken gesendet. Für das Terminal ändert sich nichts, die grundlegende Logik von OnCalculate bleibt gleich, der Hauptteil des Indikators wird hinzugefügt, z.B. OnMain. (Jetzt wird alles von dem/den Indikator(en) erledigt, der/die an den Hauptindikator als Ressource angehängt ist/sind und von diesem bei einem neuen Takt aufgerufen wird).
Sie brauchen nicht immer Super-Geschwindigkeit, Benutzerfreundlichkeit ist auch sehr wichtig, heutzutage schreiben Multicurrency-Indikatoren ist wie "Untergang der Sonne von Hand", auch in MT4 war es einfacher, weil man immer bekommen konnte es durch i-Funktionen, wenn auch langsam, aber man konnte es bekommen, aber in MT5 können Sie entweder bekommen oder nicht, und Sie müssen noch einen speziellen Code selbst zu machen.
Lassen wir die Theorien beiseite.
Schicken Sie uns einfach ein zu reproduzierendes Beispiel und wir werden sehen, was in Ihrem Fall der Horror ist. Bislang sieht es so aus, als würde man die Leistung völlig außer Acht lassen, Killer-Retardanzeigen verstecken und versuchen, einen Schatten zu werfen.
Lassen wir die Theorien beiseite.
Geben Sie einfach ein Beispiel an, das Sie reproduzieren können, und wir werden sehen, welcher Schrecken Ihren Fall umgibt. Bisher sieht es so aus, als würde man die Leistung völlig außer Acht lassen, die tödlichen Verzögerungsanzeigen verstecken und versuchen, einen Schatten darüber zu legen.
Das Beispiel im Anhang ist nicht der fertige Code, es ist an einigen Stellen unvollständig, aber es ist möglich, es auszuführen, ich füge auch eine Vorlage für die Bequemlichkeit,
Ich sage Ihnen gleich, ich bin kein Programmierer, der Code ist sicher nicht optimal, ich bin ein humanitärer Wirtschaftswissenschaftler, ich habe wirklich im MT5 gelitten, im MT4 habe ich weniger gelitten,
Ich möchte wirklich eine einfache und zuverlässige Funktion, die ein synchronisiertes Array wie oben beschrieben https://www.mql5.com/ru/forum/289897/page2#comment_9363454 bauen würde.
Ich beschwere mich nicht, ich bitte nicht darum, meinen Indikator zu schreiben, ich möchte nur (übrigens nicht nur ich) eine schöne Standardfunktion.
EDIT: Die Anhänge wurden korrigiert.
Tun Sie bitte, was ich Ihnen geraten habe.
Andernfalls benötigen Sie alle Materialien für eine 100%ige Wiedergabe.Ihre Einstellung zu Fehlerberichten ist seltsam. Es ist ja nicht so, dass ich dafür bezahlt werde, etwas zu beweisen. Ich beschrieb die Situation, so gut ich konnte.
Das Problem ist nicht nur ich, das Problem erschien nach Ihrem 30. Update, aber immer noch Sie unterstellen, dass ich ein Narr bin und es ist alles meine Schuld einige sich langsam bewegende Indikatoren.
Waren sie davor nicht ein Jahr lang zu langsam?
Hier ist ein Beispiel für einen Code, der nach 25 Minuten auf M30 hängen bleibt:
Und hier ist das Ergebnis:
Das Beispiel in der Anlage, es ist noch nicht vollständig Code, an einigen Stellen nicht geschrieben, aber Sie können es ausführen, ich bin auch eine Vorlage für die Bequemlichkeit anhängen,
Ich kann versprechen, dass ich kein Programmierer bin, sicher ist der Code nicht optimal, ich bin ein humanitärer Wirtschaftswissenschaftler, ich leide wirklich in MT5, ich litt weniger in MT4,
Ich möchte wirklich eine einfache und zuverlässige Funktion, die ein synchronisiertes Array wie oben beschrieben https://www.mql5.com/ru/forum/289897/page2#comment_9363454 bauen würde.
Ich beschwere mich nicht, ich will keinen Ärger,
Ich beschwere mich nicht, ich bitte nicht darum, meinen Indikator für mich zu schreiben, ich möchte nur (übrigens nicht nur ich) eine schöne Standardfunktion.
EDIT: Die Anhänge wurden korrigiert.
Ihre Einstellung zu Fehlerberichten ist seltsam. Es ist ja nicht so, dass ich dafür bezahlt werde, etwas zu beweisen. Ich habe die Situation so gut beschrieben, wie ich konnte.
Was ich vorhin in diesem Thread geschrieben habe, ist in keiner Weise als Fehlerbericht zu werten.
Alle gingen nach dem Muster von Beschwerden ohne technische Details vor. Erst nach meinen Nachforschungen kamen die Details ans Licht.
Ihre Einstellung zu Fehlerberichten ist seltsam. Es ist ja nicht so, dass ich dafür bezahlt werde, etwas zu beweisen. Ich habe die Situation so gut beschrieben, wie ich konnte.
Das Problem liegt nicht nur bei mir, das Problem trat nach dem 30. Update auf, aber Sie unterstellen mir immer noch, dass ich ein Narr bin und geben irgendwelchen zurückgebliebenen Indikatoren die Schuld.
Waren sie davor nicht ein Jahr lang zu langsam?
Hier ist ein Beispiel für einen Code, der nach 25 Minuten auf M30 hängen bleibt:
Und hier ist das Ergebnis:
Hochgeladen
Es ist jetzt 18.10 Alles funktioniert.
Das beigefügte Beispiel ist nicht der fertige Code, er ist an einigen Stellen untergeschrieben, aber er läuft noch, und ich füge der Einfachheit halber auch eine Vorlage bei,
Ich werde Ihnen den Code und die Arbeit sofort zeigen:
Es ist notwendig, in einen sanften Modus zu wechseln: "Ich werde vorsichtig auf das erfolgreiche Herunterladen warten". Zum Beispiel wird OnCalculate nicht aufgerufen.
In diesem Fall wird die Aktualisierung der Charts dieses Symbols blockiert und viele andere Teilnehmer müssen warten und erhalten keine neuen Daten. Der Indikator sollte keine Ressourcen für eine lange Zeit in Anspruch nehmen. Es ist besser, die lange Initialisierung Schritt für Schritt/Symbolinitialisierung in OnCalculate zu strecken und Schritt für Schritt zu zählen.
Ihre Einstellung zu Fehlerberichten ist seltsam. Es ist ja nicht so, dass ich dafür bezahlt werde, etwas zu beweisen. Ich habe die Situation so gut beschrieben, wie ich konnte.
Das Problem liegt nicht nur bei mir, das Problem trat nach dem 30. Update auf, aber Sie unterstellen mir immer noch, dass ich ein Narr bin und geben irgendwelchen zurückgebliebenen Indikatoren die Schuld.
Waren sie davor nicht ein Jahr lang zu langsam?
Hier ist ein Beispiel für einen Code, der nach 25 Minuten auf M30 hängen bleibt:
Und hier ist das Ergebnis:
Ich habe den Code zum Laufen gebracht. So weit, so gut.
Eine Datei ohne Körper, nebenbei bemerkt.