Schau, wie man Roboter kostenlos herunterladen kann
Finden Sie uns auf Twitter!
und werden Sie Mitglied unserer Fangruppe
Interessantes Skript?
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Hat Ihnen das Skript gefallen?
Bewerten Sie es im Terminal MetaTrader 5
Expert Advisors

Repaint Inspector - Experte für den MetaTrader 5

Quoc Dat Quach
Quoc Dat Quach
Software engineer with 8 years in fintech and mobile, writing MQL4/MQL5 since 2017. I build Expert Advisors, indicators, trade and risk-management panels and utilities for MT4/MT5, and I trade forex and gold on MT5 myself.
| German English Русский 中文 Español 日本語 Português 한국어 Français Italiano Türkçe
Ansichten:
6
Rating:
(1)
Veröffentlicht:
MQL5 Freelance Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance

Prüft, ob ein Indikator neu gezeichnet wird, anstatt die Angabe einfach für bare Münze zu nehmen. Es wird an ein Chart angehängt, liest die Puffer des zu testenden Indikators bei bereits geschlossenen Balken erneut ein und zählt jede dort festgestellte Änderung: Werte, die sich verschieben, Werte, die erscheinen, und Werte, die verschwinden – zusammen mit dem am weitesten zurückliegenden Zeitpunkt in der Historie, zu dem dies noch geschieht.

repaint-inspector-zigzag-panel

Beispiele: \ZigZag(12,5,3) auf XAUUSD M1. Das Fenster wurde nach 1 Stunde, 25 Minuten und 12 Sekunden Laufzeit aufgenommen, 87 Sekunden bevor der Lauf beendet wurde, weshalb die Gesamtwerte in der folgenden Tabelle etwas höher ausfallen. Die Farben des Fensters wurden für den Screenshot auf Schwarz auf Weiß eingestellt; die Standardeinstellung ist heller Text auf dunklem Hintergrund.

Das Problem

„Non-Repainting“ ist die häufigste Behauptung in Indikatorbeschreibungen und zugleich diejenige, die am schwersten zu überprüfen ist. Der übliche Test besteht darin, sich den Chart anzusehen, sich grob zu merken, wo die Pfeile standen, den Indikator neu zu laden und noch einmal hinzuschauen. Dieser Test übersieht die beiden Fälle, die tatsächlich Geld kosten.

Der erste Fall ist, dass sich ein Wert auf einem Balken, der bereits vor einiger Zeit geschlossen wurde, ändert, während das Chart geöffnet bleibt. Das Auge nimmt dies nicht wahr: Der Pfeil verschiebt sich um einige Pixel oder wird entfernt, während die Aufmerksamkeit auf den rechten Rand des Charts gerichtet ist.

Der zweite Fall ist ein Indikator, der sich während seiner Laufzeit normal verhält, nach dem Neuladen jedoch einen anderen Verlauf anzeigt – genau das, was ein Wechsel des Zeitrahmens, ein Neustart des Terminals oder ein neu geladener Chart für den Nutzer bewirkt.

Beides ist messbar. Was benötigt wird, ist eine Funktion, die aufzeichnet, was der Indikator bei seiner ersten Veröffentlichung angezeigt hat, und dies anschließend kontinuierlich überprüft.

Was gemessen wird

  • Ein Balken wird anhand seiner Eröffnungszeit identifiziert, niemals anhand seiner Verschiebung; daher können neue Balken, das Scrollen und das Auffüllen des Verlaufs nicht mit einer Änderung verwechselt werden.
  • Es werden nur geschlossene Balken verglichen, ab Verschiebung 1 und höher. Der sich noch bildende Balken ändert sich per Definition und sagt nichts über ein Repainting aus.
  • Der erste Wert, der für eine geschlossene Kerze erfasst wird, dient als Referenz. Jeder spätere Messwert wird mit dem vorherigen Messwert verglichen, der ein Ereignis zählt, sowie mit dem ersten Messwert, der die Abweichung misst.
  • Drei Arten von Ereignissen werden separat gezählt, da sie nicht gleichermaßen negativ sind:
    • Geändert – ein Wert hat sich auf einen anderen Wert verschoben.
    • Erschienen – ein leerer Platz hat einen Wert erhalten, sodass ein Signal auf einem bereits geschlossenen Balken entstanden ist.
    • Verschwunden – ein veröffentlichter Wert wurde gelöscht. Dies ist die schlimmste Art: Das Signal, auf das ein Händler reagiert hat, ist in der Historie, die der nächste Leser sieht, nicht mehr vorhanden.
  • Die wichtigste Kennzahl ist „MaxShift“, die größte Verschiebung, bei der jemals ein Ereignis beobachtet wurde. Ein Indikator, der nur den zuletzt geschlossenen Balken neu zeichnet, ist etwas ganz anderes als einer, der fünfzehn Balken der Historie neu schreibt.
  • Jedes Ereignis wird in eine CSV-Datei geschrieben, zusammen mit der Balkenzeit, dem Puffer, der Verschiebung bei der Erkennung sowie dem alten und dem neuen Wert, sodass der Bericht überprüft werden kann, anstatt ihm einfach zu glauben.
  • Der zu testende Indikator wird mit „IndicatorCreate“ aus einer geparsten Parameterliste erstellt, sodass jeder benutzerdefinierte Indikator überprüft werden kann, ohne dass etwas bearbeitet oder neu kompiliert werden muss. Die geparsten Parameter werden zu Beginn in das Journal ausgegeben, wodurch eine falsche Parameterliste sichtbar wird, anstatt unbemerkt zu bleiben.
  • Optional wird das Handle alle N Minuten freigegeben und neu erstellt. Der aufgezeichnete Verlauf wird bewusst nicht zurückgesetzt, sodass der Lauf auch Indikatoren erfasst, die während ihrer Laufzeit inaktiv sind und nach einem Neuladen eine andere Vergangenheit anzeigen.
  • Eine Überprüfung wird verworfen und als übersprungen statt als Nachweis gewertet, wenn das Indikator-Handle noch nicht existiert, der Indikator noch nicht berechnet wurde, weniger geschlossene Balken vorhanden sind als die angeforderte Tiefe, ein Puffer nicht kopiert werden kann oder sich die Reihe zwischen dem Auslesen der Zeitpunkte und dem Auslesen der Werte verschiebt.

Es erfolgt eine Stichprobenentnahme: Ein Wert, der kürzer als das Prüfintervall existiert, kann übersehen werden. Das ist eine echte Einschränkung, und weiter unten wird dies näher erläutert.

Gemessenes Beispiel

Im Folgenden werden ausschließlich Indikatoren verwendet, die im Terminal enthalten sind, sodass jeder die Schritte nachvollziehen kann.

Live, XAUUSD M1, 1 Stunde 26 Minuten

Vier Instanzen auf vier Charts desselben Terminals und desselben Feeds, 30.09.2026 von 02:19 bis 03:46 Serverzeit, 300 geschlossene Balken beobachtet, eine Überprüfung pro Sekunde.

Zu testender IndikatorPufferVergleicheGeändertErschienenVerschwundenMaxShiftFazit
Beispiele\ZigZag (12,5,3)01 315 713001715NEUFARBEN
Beispiele\ZigZag (12,5,3)11 315 7130031NEUFARBEN
Beispiele\Zickzack (12,5,3)21 315 71300103NEUFARBUNGEN
Beispiele\Benutzerdefinierter gleitender Durchschnitt (13,0,2)01 305 513000-STABIL
Beispiele\Fraktale, späte Bestätigung01 303 71301303NEULACKIERUNGEN
Beispiele\Fraktale, späte Bestätigung11 303 71301203NEUBEMALUNGEN

4387, 4353 bzw. 4347 Prüfungen, 0 / 0 / 1 übersprungene Prüfungen, 0 Neusynchronisierungen, 0 Handle-Neuladungen. Die Ereignisdateien enthalten 30, 0 und 25 Zeilen, was jeweils der Summe der drei Ereignisspalten entspricht.

Die Vergleichszahlen sind keine runden Zahlen und sollten es auch nicht sein: Während des Durchlaufs wurden 87 neue M1-Balken eröffnet, und ein gerade eröffneter Balken hat noch keine Historie geschlossener Balken. Für jede Instanz ergibt (Prüfungen – 1) × 300 – 87 genau die gemeldete Vergleichszahl.

Drei verschiedene Signaturen in einer Tabelle:

  • ZigZag löscht seine eigene Vergangenheit. 17 Werte wurden aus dem dargestellten ZigZag-Puffer gelöscht, einer davon 15 Balken nach dem Schließen dieses Balkens, und 13 weitere aus den beiden dahinter liegenden Berechnungspuffern. Nichts hat sich bewegt: Ein ZigZag-Extremwert ist das Hoch oder das Tief seines Balkens und kann nicht abdriften, daher wird er entfernt und an anderer Stelle erneut veröffentlicht. Deshalb sind die Ereignisse „verschwunden“ und die Delta-Spalte bleibt leer.
  • Ein gleitender Durchschnitt geschlossener Balken verschiebt sich nicht. 1.305.513 Vergleiche, kein einziges Ereignis.
  • Fraktale stellen einen dritten Fall dar, und das Tool unterscheidet diesen vom ersten. 25 Ereignisse, alle „Appeared“, keines „Changed“, keines „Vanished“, alle bei Shift 3. Das ist kein „Repainting“, sondern eine verspätete Bestätigung: Ein Fraktal benötigt zwei weitere Kerzen, bevor es gezeichnet werden kann; daher taucht der Wert berechtigterweise drei Kerzen zurück auf und bleibt dann bestehen. In der Spalte „Verdict“ steht weiterhin „REPAINTS“, da das Tool berichtet, was es gesehen hat, und die Beurteilung dem Leser überlässt. Ein Indikator, dessen Ereignisse alle bei einer festen Verschiebung „Appeared“ sind, ist mit dieser eingebauten Verzögerung verwendbar; ein Indikator, dessen Ereignisse bei verstreuten Verschiebungen „Vanished“ sind, ist es nicht.

Strategietester, dieselbe Messung in zehn Sekunden

Beispiele\ZigZag(12,5,3), XAUUSD M1, 28.09.2026 bis 29.09.2026, 1-Minuten-OHLC-Modellierung, 300 geschlossene Balken beobachtet:

ZählerWert
UrteilREPAINTS
Prüfungen5 512
Vergleiche bei geschlossenen Balken1 651 923
geändert / erschienen / verschwunden0 / 3 / 342
einzigartige Balken, die einen Wert verloren haben341
einzigartige Balken mit mindestens einem Ereignis343
MaxShift28
Übersprungene Überprüfungen / Neusynchronisierungen0 / 0
CSV-Zeilen345 (= 342 + 3)

An einem Handelstag löschte der ZigZag 342 Werte, die er bereits für zu diesem Zeitpunkt geschlossene Balken veröffentlicht hatte, wobei eine dieser Löschungen 28 Balken nach dem Schließen des betreffenden Balkens erfolgte. Drei Werte tauchten auf bereits geschlossenen Balken auf. Nur einer der drei war ein wiederkehrender Wert: Der Balken um 17:06 verlor 4126,184, erhielt zwanzig Sekunden später genau denselben Wert zurück und verlor ihn eine Minute danach erneut. Das ist auch der Grund, warum Max |delta| für diesen Durchlauf den Wert 0,00000000 anzeigt; es handelt sich um eine Messung, nicht um eine Lücke.

repaint-inspector-Zickzack-Verschiebungen

Die 345 Ereignisse dieses Tages, sortiert nach der Schicht, in der sie erkannt wurden. Die meisten Neuberechnungen finden ein oder zwei Balken zurück statt, weshalb es nicht ausreicht, nur den zuletzt geschlossenen Balken zu betrachten.

repaint-inspector-stable-panel

Beispiele\Benutzerdefinierter gleitender Durchschnitt (13,0,2), dasselbe Symbol und dasselbe Lauf-Fenster wie beim obigen ZigZag: 1 291 114 Vergleiche zum Zeitpunkt des Screenshots und kein einziger geänderter Wert. Die Vergleichszahl wird bewusst neben dem Ergebnis angezeigt – „STABLE“ ist nur so viel wert wie die Zahl daneben.

Was sich durch „0,0 als keinen Wert behandeln“ ändert und wie groß die Abtastlücke ist

Die vierte Instanz führte denselben ZigZag mit deaktivierter Option aus, sodass 0,0 als gewöhnlicher Wert gezählt wird: 1 308 513 Vergleiche, 18 + 3 + 11 = 32 Ereignisse, alle mit dem Status „Geändert“, derselbe MaxShift von 15 und ein Max |delta| von 4184,08800000 im Hauptpuffer. Diese Zahl ist der Goldstandard, da die „Änderung“ darin besteht, dass ein Spitzenwert durch 0,0 ersetzt wird. Beide Einstellungen beschreiben dieselbe Neuzeichnung; die Standardeinstellung benennt sie korrekt.

Die beiden Kopien haben nicht genau dieselbe Liste gesehen, und das ist wissenswert. Die vierte Kopie protokollierte zwei Ereignisse, die die erste übersehen hatte: Balken 03:32:00 in den Puffern 0 und 2, erkannt um 03:33:01. Die beiden Kopien starteten im Abstand von 14 Sekunden, und der Wert existierte weniger als ein Prüfintervall lang, sodass eine von ihnen ihn erfasste und die andere nicht. Bei einem Intervall von einer Sekunde auf M1 entspricht dies der Auflösung des Instruments.

repaint-inspector-delta-panel

Der gleiche ZigZag-Wert mit 0,0 wurde als Wert gezählt. Jede Löschung wird nun als „Geändert“ mit einem Delta in Höhe des Kurses angezeigt. Nützlich als Gegenprüfung, irreführend als Beschreibung.

Überprüfung der Zahlen

Auch den Zählern wurde nicht blind vertraut. Eine unabhängige Python-Neuimplementierung von „Examples\ZigZag“, die auf den vom Terminal abgerufenen Roh-Candlesticks ausgeführt wurde, wurde mit den Ereignisdateien verglichen:

  • Live-Lauf: Bei jedem der 17 Balken, bei denen der dargestellte Puffer einen Wert verlor, fehlt dieser Wert heute in der Wiedergabe, und bei allen 17 entspricht der letzte Messwert des Tools dem wiedergegebenen Wert.
  • Testlauf: 343 Balken mit Ereignissen, dieselben beiden Prüfungen, keine Abweichung – 341 verlorene Werte fehlen in der Wiedergabe, und 343 von 343 letzten Messwerten stimmen mit diesem Wert überein.

Eingaben

EingabeStandardBeschreibung
Zu prüfender Indikator (iCustom-Pfad, kein .ex5; Beispiel: Examples\ZigZag)leerPfad des benutzerdefinierten Indikators relativ zu MQL5\Indicators, ohne Dateiendung, genau so, wie es iCustom erwartet. Absichtlich leer gelassen: Wenn nichts eingegeben wird, meldet das Tool dies im Journal und im Panel und führt keine Messungen durch, anstatt auf einen Indikator zu verweisen, der möglicherweise nicht auf Ihrem Terminal vorhanden ist. Wenn der Pfad in einem Live-Chart falsch ist, bleibt das Tool angehängt und versucht es alle 30 Sekunden erneut, sodass die Eingabe korrigiert werden kann, ohne es zu entfernen. Gemessen auf XAUUSD M1 mit einem falschen Pfad: Das Tool gab den Fehlercode einmal an, das Terminal fügte bei jedem Versuch (im Abstand von 30,4 und 30,7 Sekunden) eine eigene Zeile „Kann nicht geladen werden“ hinzu, und nach Korrektur des Pfads begann die Messung, ohne dass etwas getrennt wurde.
Parameter, durch Kommas getrennt (leer = Standardwerte des Indikators)leerDie Eingabeliste des zu testenden Indikators, zum Beispiel 12,5,3. Jeder Eintrag wird nach seinem Inhalt typisiert: „true“ und „false“ werden zu „bool“, eine Zahl mit einem Punkt oder einem Exponenten wird zu „double“, eine einfache Zahl wird zu „int“, alles andere wird zu einer Zeichenkette, und umgebende Anführungszeichen werden entfernt. Die geparste Liste wird zu Beginn im Protokoll ausgegeben, sodass eine falsche Liste sofort erkennbar ist. Leer bedeutet, dass der Indikator mit seinen eigenen Standardwerten läuft.
Anzahl der zu überwachenden Puffer (1..32)1Anzahl der zu lesenden Puffer. Berechnungspuffer werden ebenfalls gezählt. Ein Puffer, über den der Indikator nicht verfügt, führt zum Scheitern der gesamten Prüfung: Dies wird als übersprungene Prüfung gewertet, und die ersten paar Vorkommnisse werden mit dem Fehlercode ins Protokoll geschrieben, sodass der Fehler sichtbar wird und nicht unbemerkt bleibt.
Symbol (leer = Chart-Symbol)leerEinen Indikator für ein anderes Symbol überprüfen, ohne dessen Chart zu öffnen.
ZeitrahmenAktuellEinen Indikator in einem anderen Zeitrahmen anzeigen.
Beobachtete geschlossene Kerzen (Verschiebung 1..N)300Tiefe der Überprüfung. Die Anzahl der Balken multipliziert mit den Puffern ist auf 200.000 Slots begrenzt; darüber hinaus wird die Tiefe reduziert und eine Zeile in das Journal geschrieben.
Mindestzeit in Sekunden zwischen den Überprüfungen, simulierte Zeit im Tester (0 = bei jedem Tick)1Drosselung. Eine Sekunde erfasst jede Neudarstellung, auf die ein Mensch reagieren könnte, und beansprucht weitaus weniger CPU-Leistung als bei jedem Tick; allerdings kann ein Wert, der weniger als das Intervall andauert, übersehen werden. Im Strategietester wird die modellierte Uhr anstelle der realen Uhr verwendet, sodass dieselbe Einstellung dort funktioniert.
Änderungen, die kleiner als dieser Wert sind, ignorieren (0 = jede Änderung zählen)0,0Absolute Toleranz in den Einheiten des Puffers für einen Indikator, der aus Gleitkommazahlen neu berechnet wird und bei dem es zu Schwankungen in den letzten Ziffern kommt. 0 zählt jede Differenz. Eine Änderung, die nicht größer als die Toleranz ist, wird überhaupt nicht erfasst – kein Ereignis, keine CSV-Zeile, kein Beitrag zu Max |delta|.
0,0 als „kein Wert“ behandeln (Pfeil-/ZigZag-Puffer)trueViele Signalindikatoren geben bei „kein Signal“ 0,0 statt EMPTY_VALUE aus. Wenn diese Option aktiviert ist, gilt 0,0 als leer und diese Ereignisse werden als „Erschienen“ und „Verschwunden“ gemeldet. Deaktivieren Sie diese Option für einen Puffer, bei dem genau Null ein zulässiger Wert ist.
Indikator-Handle alle N Minuten neu erstellen (0 = nie)0Gibt das Handle frei und fordert vom Terminal ein neues an, was eine vollständige Neuberechnung auslöst, sofern kein anderes Programm denselben Indikator mit denselben Parametern weiterhin hält. Der aufgezeichnete Verlauf wird nicht gelöscht; auf diese Weise wird der Indikator erfasst, der während der Ausführung stabil ist, sich nach einem Neuladen jedoch ändert.
Beende die Messung nach N Minuten (0 = so lange laufen lassen, bis sie entfernt wird)0Beendet die Messung und friert den Bericht ein, was für einen unbeaufsichtigten Lauf praktisch ist.
Jedes Ereignis in MQL5\Files (CSV) schreibentrueDie Ereignisdatei.
CSV-Dateiname (leer = automatisch)leerAutomatische Namen werden aus Symbol, Zeitrahmen und Startzeit gebildet. Wenn eine Datei mit diesem Namen derzeit geöffnet ist, weil eine andere Instanz in derselben Minute gestartet wurde, wird ein numerischer Zusatz hinzugefügt, anstatt die Instanz ohne Datei laufen zu lassen. Eine geschlossene Datei mit demselben Namen aus einem früheren Lauf in derselben Minute wird überschrieben; geben Sie daher einen eigenen Namen an, wenn ein Lauf von Bedeutung ist.
Schreiben nach dieser Anzahl von Zeilen beenden100000Schützen Sie sich vor einem Indikator, der bei jedem Tick neu gezeichnet wird. Die Zählung wird nach Erreichen des Limits fortgesetzt; lediglich die Datei wächst nicht weiter, und eine Zeile im Protokoll weist darauf hin.
Zeige das Berichtsfenster im Chart antrueDeaktivieren Sie es für einen unbeaufsichtigten Lauf oder einen Testlauf.
Abstand des Fensters X, Pixel bei 96 dpi12Position. Das Fenster wird entsprechend der Bildschirm-dpi skaliert.
Y-Abstand des Panels, Pixel bei 96 dpi20Position.
Schriftgröße, Punkte (4 oder mehr; das Bedienfeld wird entsprechend der Bildschirmauflösung skaliert)9Das Panel ist eine Tabelle in einer Monospace-Schriftart. Verkleinern Sie es auf einem Bildschirm mit hoher dpi-Auflösung oder bei einem kleinen Diagramm; die obigen Screenshots verwenden 4.
FenstereckeOben linksAnker-Ecke.
Hintergrundfarbe des FenstersdunkelgrauFarben des Fensters. Eine Instanz pro Chart, wie bei jedem Expert Advisor; mehrere Charts können gleichzeitig Instanzen ausführen.
Farbe des Feldrahmensblassgrau
Textfarbe des Fenstershellgrau
Farbe der Kopfzeile, wenn alle Puffer stabil sindLimettengrün
Farbe der Kopfzeile, wenn ein Puffer neu gezeichnet wirdtomatenrot

Der Bericht

Dies ist der Zusammenfassungsblock, den das Tool in das Journal geschrieben hat, als der oben gezeigte Live-ZigZag-Lauf gestoppt wurde, wortwörtlich kopiert. Das Feld im Chart zeigt dieselbe Tabelle, wobei die Laufzeit rechtsbündig ausgerichtet ist:

=== Zusammenfassung des Repaint Inspectors =====================================
Repaint Inspector   Examples\ZigZag (12,5,3)
XAUUSD M1   300 geschlossene Balken beobachtet   läuft seit 01:26:39
Prüfungen 4 387   übersprungen 0   Neusynchronisierungen 0   Neuladungen 0
Puffer  Beurteilung      Vergleiche    Geändert   Erscheint   Verschwindet   MaxShift    Max |delta|
  0  REPAINTS       1 315 713          0          0         17         15              -
  1  REPAINTS       1 315 713          0          0          3          1              -
  2  REPAINTS       1 315 713          0          0         10          3              -
CSV: RepaintInspector_XAUUSD_M1_20260930_0219.csv (30 Zeilen)
gestartet am 30.09.2026 um 02:19:31 Uhr Serverzeit, 4387 Prüfungen, 0 übersprungen, 0 Neusynchronisierungen, 0 Handle-Neuladungen
Ereignisse insgesamt 30, CSV-Zeilen 30
Puffer 0: REPAINTS, Vergleiche 1.315.713, geändert 0, erschienen 0, verschwunden 17, betroffene Balken 17
Puffer 0: maximale Verschiebung 15 (VANISHED am Balken 30.09.2026 02:59)
Puffer 0: max. |delta| keine
Puffer 0: erstes Ereignis 30.09.2026 02:23:02, letztes Ereignis 30.09.2026 03:46:03

Die Ereignisdatei im Verzeichnis „MQL5\Files“ enthält eine Zeile pro Ereignis:

detect_time;bar_time;shift_at_detect;buffer;event;old_value;new_value;delta;drift_from_first;after_reload
28.09.2026 17:11:20;28.09.2026 17:06:00;5;0;VANISHED;4126,18400000;EMPTY;;;0

Ein leerer Wert wird als „EMPTY“ geschrieben und eine undefinierte Differenz bleibt leer, sodass kein Leser eine fehlende Zahl mit einer Null verwechseln kann. Eine zweite Datei, <name>_summary.csv, enthält pro Puffer eine Zeile mit jedem Zähler sowie dem Indikator, dessen Parametern, Symbol, Zeitrahmen und Tiefe; sie wird während des Laufs alle 15 Sekunden aktualisiert, sodass die Zahlen aus der Ereignisdatei nachgezählt werden können, ohne ein Protokoll auswerten zu müssen. Das Journal erhält den Startblock, die ersten 20 Ereignisse in voller Länge sowie die oben genannte Zusammenfassung, wenn das Tool entfernt wird.

So verwenden Sie es

  1. Legen Sie den Indikator, den Sie überprüfen möchten, im Ordner „MQL5\Indicators“ ab und notieren Sie sich dessen Parameterliste.
  2. Fügen Sie den „Repaint Inspector“ einem Chart des Symbols und des Zeitrahmens hinzu, mit denen Sie tatsächlich handeln, geben Sie den Pfad und die Parameter ein und legen Sie die Anzahl der Puffer fest.
  3. Lassen Sie das Tool über die Stunden laufen, in denen Sie handeln. Repainting ist eine Eigenschaft der Marktaktivität, nicht der Uhrzeit, und ein ruhiger Sonntagabend beweist gar nichts.
  4. Lesen Sie zunächst den „MaxShift“-Wert ab, dann die Aufteilung zwischen „Changed“, „Appeared“ und „Vanished“, öffnen Sie anschließend die CSV-Datei und sehen Sie sich einige Zeilen an.
  5. Wenn der Indikator das übersteht, stellen Sie die Neuladungsintervalle auf 30 Minuten ein und lassen Sie ihn erneut laufen.

Einschränkungen, klar und deutlich

  • Das Tool kann das Fehlen von Repainting nicht beweisen. Es kann lediglich feststellen, dass im gemessenen Zeitraum kein Repainting vorliegt, weshalb die Vergleichszahl neben jedem Ergebnis steht.
  • Es erfolgt eine Stichprobenentnahme im Prüfintervall. Ein Wert, der innerhalb eines Intervalls kurzzeitig auftritt und wieder verschwindet, kann übersehen werden, und die obige Messung zeigt, dass dies zweimal in anderthalb Stunden geschieht.
  • Es misst, was ein Indikator über seine Puffer ausgibt. Ein Indikator, der Objekte auf das Chart zeichnet, anstatt Puffer zu füllen, ist für das Tool unsichtbar.
  • Der Strategietester ist hier nützlich, da er einen Tag auf Sekunden komprimiert, aber ein Repaint im Tester und ein Repaint im Live-Betrieb sind nicht automatisch dasselbe. Wenn das Ergebnis entscheidend ist, führen Sie den Test im Live-Betrieb durch.
  • Im Strategietester muss der zu testende Indikator vor Beginn des Laufs vorhanden und kompiliert sein. Der Tester behandelt einen fehlgeschlagenen „IndicatorCreate“-Aufruf als kritischen Fehler und entlädt den Expert, was durch keine Fehlerbehandlung innerhalb des Tools geändert werden kann: Bei einer Messung mit einem absichtlich falschen Pfad führt das Erstellen des Handles in „OnInit“ zu einem „Indikator-Erstellungsfehler“ und anschließend zu einem „kritischen Fehler in OnInit“, während das Erstellen bei der ersten Überprüfung stattdessen dieselben sechs Fehlerdatensätze erzeugt, die mit „kritischer Fehler in OnTester“ enden. Auf einem Live-Chart ist derselbe falsche Pfad nicht fatal: Das Tool blieb verbunden und versuchte es erneut, und die Messung mit dem korrigierten Pfad begann an der richtigen Stelle.
  • Das sagt nichts darüber aus, ob ein Indikator profitabel ist. Ein Indikator ohne Repainting kann dennoch nutzlos sein, und manche Indikatoren mit Repainting werden bewusst und korrekt eingesetzt.
  • Keine Handelsfunktionen, keine DLL, kein Netzwerkzugriff, keine externen Dateien erforderlich. Es liest Puffer aus und schreibt CSV-Dateien in den Ordner „MQL5\Files“.

Übersetzt aus dem Englischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/en/code/77842

ATS Liquidity City - liquidity pools and sweeps, drawn as a neon city ATS Liquidity City - liquidity pools and sweeps, drawn as a neon city

Zeigt an, wo Stopps wahrscheinlich liegen und welche gerade ausgelöst wurden. Liquiditätspools = bestätigte Swing-Hochs und -Tiefs, die der Kurs noch nicht durchbrochen hat, gleiche Hochs/Tiefs (ein größerer Pool) sowie das gestrige Hoch und Tief. Wenn eine Kerze über einen Pool hinaushandelt, wird sie als „geswept“ markiert und als „erobert &amp; zurückgewiesen“, wenn dieselbe Kerze wieder innerhalb des Pools schließt. Kein Repainting: Ein Swing wird erst nach N geschlossenen Kerzen auf jeder Seite verwendet. Das Panel ist eine auf einem CCanvas gezeichnete Neonstadt: Der Kurs ist ein fliegendes Auto, Verkaufs-Stops sind Türme darunter, Kauf-Stops schwebende Plattformen darüber, die gestrigen Niveaus goldene Werbetafeln, ein Suchscheinwerfer fegt über den Himmel und ein Ticker zeigt den heutigen Fang an. Zwei Puffer liefern den nächstgelegenen aktiven Pool oberhalb und unterhalb zur Verwendung in einem Expert Advisor. Nur Indikator: Es werden niemals Trades ausgeführt.

Symbol Spec Auditor Symbol Spec Auditor

Ein Diagrammfenster, das die Details der Kontraktspezifikationen anzeigt, die die Positionsgröße und die Handelskosten (Punktwert, Spread-Kosten, Margin, Swap, Ausführungsregeln) in der Kontowährung bestimmen, vor Broker-Einstellungen warnt, die den Lot-Größen-Code unbemerkt verletzen, und die Überprüfung jedes Market-Watch-Symbols als CSV-Datei exportiert.

Session Levels - Asia London New York High Low with Alerts Session Levels - Asia London New York High Low with Alerts

Zeichnet Hoch und Tief von bis zu 3 Handelssitzungen (Asien, London, New York) mit optionalen Ausbruchs-Alarmen ohne Repainting.

Accelerator Oszillator (AC) Accelerator Oszillator (AC)

Der Acceleration/Deceleration Indikator (AC) misst die Beschleunigung und Verlangsamung des aktuellen Marktimpulses, der Kraft der Kursbewegung.