Schau, wie man Roboter kostenlos herunterladen kann
Finden Sie uns auf Telegram!
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

Session Reality Auditor - 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:
8
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

Jeder Zeitfilter in einem Expert Advisor, jede Regel „Vor dem Rollover schließen“ und jedes Sitzungsfeld in einem Chart stützt sich auf eine einzige Sache: die Sitzungstabelle des Symbols, also die Zeiten, die der Broker über „SymbolInfoSessionQuote“ und „SymbolInfoSessionTrade“ angibt. Dieses Tool gleicht diese Tabelle mit den historischen Daten ab. Über die letzten N ganzen Tage zählt es für jede Minute der Woche, an wie vielen dieser Tage das Symbol einen M1-Balken aufweist, und stellt das Ergebnis neben die Angaben der Tabelle: anggebene Minuten, die normalerweise leer sind, Balken in Minuten, die die Tabelle als geschlossen ausweist, Minuten, in denen die Handels- und Kurs-Tabellen voneinander abweichen, sowie einmalige Ausfälle in angegebenen Minuten, die normalerweise nicht leer sind.

sra-panel

Fünf Market-Watch-Symbole, jeweils 35 volle Tage (01.09.2026 bis 06.10.2026, Serverzeit), ein Durchlauf in 62 ms. „Table h/wk“ und „Real h/wk“ sind die von der Sitzungstabelle angegebenen Stunden pro Woche bzw. die Stunden, in denen an mindestens der Hälfte der Tage dieses Wochentags Balken vorhanden sind. „Dead min/wk“ zählt deklarierte Minuten, in denen an höchstens einem Viertel der Tage Balken vorhanden sind; „Outages“ zählt Lücken von fünf Minuten oder mehr in deklarierten Minuten, die nicht als „Dead“ gelten. Angepasst an die Panel-Schriftgröße 4, um auf die Seite zu passen; die Standardeinstellung ist 8.

Das Problem

Eine Session-Tabelle ist eine Deklaration, keine Messung. Das Terminal zeigt sie in der Symbolspezifikation an und ein EA kann sie lesen, aber es findet keine Überprüfung anhand der tatsächlich eintreffenden Kurse statt. Auf dem unten gemessenen Demo-Server werden EURUSD, GBPUSD und USDJPY als von Montag bis Donnerstag von 00:00 bis 24:00 Uhr notiert deklariert. Die M1-Historie zeigt, dass direkt nach 21:00 Uhr Serverzeit oft überhaupt kein Kurs vorliegt. Gold auf demselben Server gibt eine Pause von 20:58 bis 22:00 Uhr an, und seine Balken stimmen minutengenau mit der Tabelle überein – außer am Montag, dem 7. September 2026, einem US-Feiertag, an dem der letzte Balken vor der Unterbrechung um 18:27 Uhr liegt und zweieinhalb Stunden einer angegebenen Handelssitzung leer sind.

Nichts davon ist in der Tabelle ersichtlich, und all das ist für den automatisierten Handel von Bedeutung. Ein anhand der Tabelle erstellter Zeitfilter wird versuchen, in Minuten zu handeln, in denen oft kein Kurs vorliegt. Auch der Strategietester verfügt dort über keine Ticks, sodass eine Regel, die „um 21:01 Uhr“ ausgelöst wird, an den meisten Tagen möglicherweise gar nicht ausgelöst wird. Und eine Eingabe zu den „Handelszeiten“, die jemand einmal aus der Spezifikation kopiert hat, ist nur so korrekt wie die Spezifikation selbst.

Was er misst

Das Fenster ist [D0, D1): D1 ist 00:00 Uhr Serverzeit des Tages, an dem der neueste M1-Balken des Symbols liegt; somit wird der noch nicht abgeschlossene heutige Tag ausgelassen, und D0 liegt InpDays ganze Tage früher (verschoben auf den ersten ganzen Tag, falls die M1-Historie später beginnt). Für jede Minute der Woche zählt das Tool die Daten dieses Wochentags im Fenster – im Kalender, sodass ein Feiertag ohne einen einzigen Balken als Datum zählt, bei dem jede Minute fehlt – sowie die Treffer, also die Daten, an denen in dieser Minute ein M1-Balken vorhanden ist. Eine Minute gilt als real, wenn ihr Beginn innerhalb einer Kurssitzung ihres Wochentags liegt, wobei derselbe Sitzungstest angewendet wird, den auch der „Tick Integrity Auditor“ verwendet.

  • Effektive Tabelle. Eine Minute gilt als „real“, wenn an mindestens InpLivePct Prozent ihrer Tage Balken vorhanden sind (Standardwert 50). Aufeinanderfolgende „reale“ Minuten eines Wochentags bilden die effektiven Sitzungen, die neben den deklarierten Sitzungen angezeigt werden.
  • Als „tote“ deklarierte Minuten (C1). Eine deklarierte Minute, bei der an höchstens InpDeadPct Prozent ihrer Tage Balken vorhanden sind (Standardwert 25). Jede Folge aufeinanderfolgender toter Minuten an einem Wochentag stellt einen Befund dar.
  • Balken außerhalb der Tabelle (C2). Eine Minute, die die Tabelle als geschlossen bezeichnet und die an mindestens einem Datum einen Balken aufweist. Jede Folge stellt einen Befund dar, zusammen mit der Anzahl der darin enthaltenen Balken.
  • Handelstabelle gegenüber Notierungstabelle (C3). Minuten, die in einer Handelssitzung, aber in keiner Notierungssitzung liegen (Aufträge angenommen, kein Kurs erwartet), sowie Minuten, die in einer Notierungssitzung, aber in keiner Handelssitzung liegen (Kurse angezeigt, Aufträge abgelehnt). Jede Folge gilt als Befund. InpCheckTrade=false deaktiviert die Prüfung.
  • Einmalige Ausfälle (C4). Auf der realen Zeitachse, Minute für Minute: eine deklarierte Minute, die nicht „tot“ ist und keinen Balken aufweist. Folgen solcher Minuten, die auch die Mitternachtsgrenze überschreiten können und mindestens InpOutageMinutes Minuten (Standardwert 5) umfassen, gelten als Ausfälle; jeder ist ein Befund mit seinem Datum. „Tote“ Minuten werden bewusst ausgeschlossen: Eine Minute, die die meiste Zeit leer ist, stellt ein Muster dar und gehört zu C1; eine leere Minute, die normalerweise gefüllt ist, ist ein Ereignis und gehört hierher.

Das Journal gibt die Berechnung als Identität pro Symbol aus: findings_rows == dead_windows + outside_windows + trade_no_quote_windows + quote_no_trade_windows + outages. Eine Prüfung, die nicht gemessen wurde, bleibt in der CSV-Datei leer und wird im Panel als „-“ angezeigt, niemals als „0“.

Beispiel für eine Messung

Exness-Demo-Server, Serverzeit = UTC, fünf Market-Watch-Symbole, InpDays=35, alle anderen Eingaben auf Standardwerten.

Symbol Tabelle h/Woche tatsächliche h/wk tote Minuten / Fenster Minuten außerhalb Handel ≠ Kurs-Min. Ausfälle Längster Ausfall
XAUUSD 114,82 114,82 0 / 0 0 0 1 150 Min., Mo., 07.09.2026, 18:28 Uhr
EURUSD 119,90 119,70 7 / 5 0 0 4 7 Min., Mi., 02.09.2026, 11:39 Uhr
BTCUSD 168,00 168,00 0 / 0 0 0 1 13 Min., So, 13.09.2026, 07:16 Uhr
GBPUSD 119,90 119,62 9 / 6 0 0 5 9 Min., Do, 01.10.2026, 21:03 Uhr
USDJPY 119,90 119,57 14 / 5 0 0 9 10 Min., So, 04.10.2026, 21:05 Uhr

Der Rollover ist eine Lücke, die in der Tabelle nicht ausgewiesen wird. An allen 20 Abenden von Montag bis Donnerstag innerhalb des Zeitfensters liegt der letzte Balken vor dem Rollover bei 20:59. Danach fehlt an 16 Abenden für EURUSD, an 19 für GBPUSD und an 20 für USDJPY mindestens eine Minute zwischen 21:00 und 21:19 Uhr, und an 10, 10 bzw. 14 dieser Abende fehlen vier oder mehr dieser Minuten. Die Dauer variiert von Abend zu Abend, sodass sich dies auf zwei Arten zeigt: als „tote Minuten“, bei denen die meisten Abende übereinstimmen (USDJPY am Montag und Dienstag, 21:00 bis 21:05 Uhr, Balken an höchstens einem von fünf Tagen) und als Ausfälle, bei denen dies nur an einigen Abenden der Fall ist (GBPUSD an drei Abenden, gezählt ab 21:03 Uhr, wo die „toten Minuten“ enden, jeweils sieben bis neun Minuten). Achtundzwanzig der 36 Feststellungen beginnen zwischen 21:00 und 21:15 Uhr; zwei davon sind die Sonntagseröffnungen von USDJPY, bei denen der erste Balken 6 bzw. 10 Minuten nach der angegebenen Zeit von 21:05 Uhr erschien.

sra-real-vs-table

Links: Anteil der 20 Abende von Montag bis Donnerstag innerhalb des Zeitfensters, an denen EURUSD einen M1-Balken aufweist, Minute für Minute von 20:50 bis 21:15 Uhr; die Sitzungstabelle gibt jede dieser Minuten als Eröffnung an. Rechts: XAUUSD am Montag, den 07.09.2026, im Vergleich zu den anderen vier Montagen des Zeitraums; der schattierte Bereich entspricht dem in der Tabelle angegebenen Handelsbeginn. Die Daten stammen aus M1-Balken, die über die MCP-Schnittstelle des Terminals ausgelesen wurden, nicht aus der eigenen Ausgabe des Tools.

Die Tabelle für Gold ist bis auf den Feiertag korrekt. Die tatsächlichen und ausgewiesenen Handelssitzungen von XAUUSD stimmen an jedem Wochentag minutengenau überein: 00:00 bis 20:58 Uhr und 22:00 bis 24:00 Uhr von Montag bis Donnerstag, 22:01 bis 24:00 Uhr am Sonntag, 00:00 bis 20:58 Uhr am Freitag. Die einzige Abweichung betrifft den 07.09.2026, den US-Labor-Day, an dem von 18:28 Uhr bis zur Handelsunterbrechung um 20:58 Uhr – also 150 Minuten lang – kein Kursbalken angezeigt wird. Die Tabelle kann nicht angeben, dass der Handel an diesem Tag vorzeitig beendet wurde; die historischen Daten tun dies jedoch.

Zwei Ausfälle tagsüber betrafen alle drei Währungspaare gleichzeitig: am Mittwoch, den 02.09.2026, ab 11:39 Uhr und am Mittwoch, den 09.09.2026, ab 10:37 Uhr: jeweils sieben Minuten, genau dieselben Minuten bei EURUSD, GBPUSD und USDJPY, während XAUUSD und BTCUSD in jeder dieser Minuten einen Balken aufweisen. Was auch immer die Ursache war – sie betraf die drei Währungspaare gleichzeitig und ließ Gold und Bitcoin unberührt, und es handelt sich um die Art von Ereignis, die ein Backtest dieser Tage wortlos wiedergibt.

Was einwandfrei ist: Kein Symbol weist einen einzigen Balken in einer Minute auf, die in seiner Tabelle als geschlossen ausgewiesen ist, und die Handelstabelle stimmt bei allen fünf mit der Kursnotierungstabelle überein, sodass C2 und C3 hier nichts gefunden haben. BTCUSD, das als 24/7 deklariert ist, ist tatsächlich rund um die Uhr verfügbar; der einzige Ausfall beträgt 13 Minuten am Sonntag, dem 13.09.2026, ab 07:16 Uhr.

Unabhängige Überprüfung des Berichts

Der Bericht lässt sich außerhalb von MetaTrader nachverfolgen. Das für diese Seite verwendete Skript liest nur das aus, was Python nicht selbst abrufen kann – das Fenster, die drei Schwellenwerte, ob die Handelsprüfung aktiviert war, sowie die Sitzungstabellen aus den Zusammenfassungs- und Sitzungsdateien –, ruft die M1-Balkenzeiten über die MCP-Schnittstelle des Terminals ab und berechnet die 22 Ergebnisspalten der Zusammenfassung neu, alle 10.080 Zellen der Karte jedes Symbols, die effektiven Sitzungen sowie die Ergebniszeilen aus den obigen Definitionen neu. Bei dem hier gezeigten Durchlauf stimmt es bei jedem Wert aller fünf Symbole mit dem Tool überein. Zwei manuell in eine Kopie der Dateien eingefügte Fehler (ein Zähler, eine Map-Zelle) wurden beide gemeldet. Seine eigenen Definitionen wurden zunächst anhand von zwei manuell erstellten synthetischen Wochen überprüft.

So wird es verwendet

Fügen Sie den Expert Advisor einem beliebigen Chart hinzu. Ist „InpSymbols“ leer, überprüft er das Chart-Symbol; „*“ überprüft den gesamten Market Watch; eine durch Kommas getrennte Liste überprüft die entsprechenden Symbole. Die Überprüfung läuft einmal (oder alle „InpRefreshMinutes“), schreibt den Vergleich pro Wochentag und die Ausfälle in das Expert-Journal, zeichnet die Tabelle auf das Chart und erstellt die CSV-Dateien. Es liest ausschließlich Verlaufs- und Sitzungstabellen: Der Code enthält keine Handelsfunktion, keine DLL und keinen Netzwerkzugriff. Bei Eingabe von * werden nur Symbole berücksichtigt, die bereits im Market Watch vorhanden sind; ein in der Liste genanntes Symbol, das noch nicht vorhanden ist, wird vom Terminal beim Einlesen der Historie ausgewählt, wie bei jeder Historieabfrage.

Lesen Sie zunächst die Journalzeilen. Eine Zeile wie

USDJPY Mo Tabelle 00:00–24:00 | real 00:00–21:00 21:05–24:00 | dead 21:00–21:05 (1/5) | outside none

bedeutet, dass montags der „Table“-Modus den ganzen Tag abdeckt, Balken von 00:00 bis 21:00 Uhr und ab 21:05 Uhr vorhanden sind und jede Minute von 21:00 bis 21:05 Uhr an höchstens einem von fünf Montagen einen Balken aufwies. Verwende für Zeitfilter die tatsächlichen Sitzungen, nicht die deklarierten; erweitere „InpDays“, um mehr Wochen zu sehen, und verringere „InpOutageMinutes“, um kürzere Lücken zu erkennen.

Eingaben

Eingabe Standard Bedeutung
InpSymbols "" Symbole: leer = Chart-Symbol, * = Market Watch, ansonsten CSV-Liste
InpDays 28 Gesamtzahl der Server-Tage der M1-Historie, die geprüft werden sollen (vor dem heutigen Tag endend)
InpLivePct 50 Eine Minute gilt als real, wenn an mindestens diesem Prozentsatz ihrer Wochentage Balken vorhanden sind
InpDeadPct 25 Eine deklarierte Minute gilt als ungültig, wenn auf höchstens diesem Prozentsatz dieser Minuten Balken vorhanden sind
InpOutageMinutes 5 Meldet einmalige Lücken in normalerweise aktiven deklarierten Minuten ab dieser Länge
InpCheckTrade true Vergleiche die Handelssitzungstabelle mit der Kursnotierungstabelle
InpMaxExamples 5 Journal: Ausfälle, die pro Symbol ausgegeben werden
InpWriteCsv true CSV-Dateien mit Zusammenfassung, Sitzungen, Karte, Wirksamkeit und Ergebnissen schreiben
InpShowPanel true Ergebnistabelle im Diagramm darstellen
InpPanelCorner CORNER_LEFT_UPPER Panel-Ecke
InpPanelFontSize 8 Schriftgröße des Panels
InpPanelX 10 X-Versatz des Panels, px
InpPanelY 18 Y-Versatz des Panels, px
InpRefreshMinutes 0 Alle N Minuten erneut prüfen (0 = einmal prüfen)

Werte der Überprüfungs-Eingaben, die außerhalb des zulässigen Bereichs liegen, werden jeweils mit einer Journalzeile begrenzt (das Panel nimmt die Eingaben ohne Fehlermeldung entgegen); der Expert Advisor verweigert niemals den Start.

Ausgabedateien

Alle Dateien werden im Verzeichnis „MQL5\Files\SessionRealityAuditor\“ abgelegt, durch Semikolons getrennt und mit einer Kopfzeile versehen. Sie tragen den Namen <Symbole>_<Tage>d_<Chart-ID>_…, sodass sich zwei Charts niemals gegenseitig überschreiben.

  • …_<Symbol>_summary.csv – eine Zeile: das Fenster, die Schwellenwerte und alle darüber liegenden Zählerstände.
  • …_<Symbol>_sessions.csv – alle Kurs- und Handelssitzungsdatensätze der Tabelle.
  • …_<Symbol>_map.csv – 10.080 Zeilen, eine pro Minute der Woche: gemeldete Kurse, gemeldete Handelsgeschäfte, Treffer, Daten.
  • …_<symbol>_effective.csv – die effektiven Sitzungen, eine Zeile pro Fenster.
  • …_findings.csv – eine Zeile pro Befund für jedes Symbol, mit Wochentag, Start, Ende, Dauer und Wert.

Einschränkungen, klar formuliert

  • Das Vorhandensein wird anhand von M1-Bars ermittelt: Eine Minute mit einer Bar gilt als notiert. Eine Bar liegt vor, wenn die Minute mindestens einen Tick aufweist; eine 30-sekündige Pause innerhalb einer Minute ist hier also nicht sichtbar; für Pausen in Sekunden verwenden Sie ein Tick-Tool.
  • Das Tool liest die Sitzungstabelle so, wie sie aktuell ist. Wenn der Broker seine Handelszeiten innerhalb des Zeitfensters geändert hat, werden die älteren Tage anhand der neuen Tabelle bewertet.
  • Die Daten werden im Kalender gezählt, sodass ein Feiertag den Anteil jeder Minute des entsprechenden Wochentags um ein Datum verringert. Das ist beabsichtigt: Genau das wurde in der Tabelle nicht angegeben.
  • Durchgehend Serverzeit. Eine Umstellung auf Sommerzeit innerhalb des Zeitfensters verschiebt den Rollover für einen Teil der Daten um eine Stunde, und die Anteile dieser Minuten sinken entsprechend.
  • Die Tiefe der Analyse wird durch den M1-Verlauf begrenzt, den das Terminal für das Symbol speichert (die Einstellung für die maximale Anzahl von Balken pro Chart); ein kürzerer Verlauf verkürzt das Zeitfenster um eine Journalzeile.
  • Die obigen Zahlen beziehen sich auf einen Demo-Server über einen Zeitraum von fünf Wochen. Sie beschreiben diesen Feed, nicht die Echtkonten des Brokers und auch keinen anderen Server.

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

ATS Trade Management Library - break-even, trailing stop and partial closes for any EA ATS Trade Management Library - break-even, trailing stop and partial closes for any EA

Verwaltet offene Positionen in einem Expert Advisor: Break-Even, Trailing Stop, zwei Teilschließungen sowie ein Stop und ein Kursziel für Positionen, für die noch keine festgelegt sind. Es eröffnet niemals einen Trade.

ATS Prop Rules Monitor - prop firm challenge scoreboard with the room left on every rule ATS Prop Rules Monitor - prop firm challenge scoreboard with the room left on every rule

Ein Fenster für die Regeln eines Prop-Firm-Wettbewerbs: Tagesverlust, Maximalverlust (statisch oder gleitend), Gewinnziel, Mindestanzahl an Handelstagen und die „Best-Day“-Regel (Konsistenz). Für jede dieser Größen wird angezeigt, wie viel bereits verbraucht wurde und wie viel Spielraum noch verbleibt, ausgedrückt in Geld. „One more trade“ zeigt Ihnen die größte Lotgröße an, bei der ein Stop-out noch innerhalb des heute verbleibenden Spielraums und des Spielraums für den Maximalverlust bleibt. Nur-Lese-Modus: Es werden niemals Trades eröffnet, geändert oder geschlossen. Die Voreinstellungen enthalten typische Werte; da Unternehmen ihre Regeln ändern, sollten Sie Ihre eigenen Regeln überprüfen und die benutzerdefinierte Voreinstellung verwenden. Basiert auf der ATS Risk Library (ATS_RiskLib.mqh, im Lieferumfang enthalten).

CajasTF – Integriertes Seitenpanel mit mehreren Zeitrahmen für MT5 CajasTF – Integriertes Seitenpanel mit mehreren Zeitrahmen für MT5

Echtzeit-Mini-Chart für mehrere Zeitrahmen im Seitenbereich mit intelligenter Farbanpassung, unabhängiger Kursskala und Countdown-Timer für Kerzen.

Advanced Prop-firm Trade Panel based on S-R Advanced Prop-firm Trade Panel based on S-R

Ein Panel für den manuellen Handel mit integriertem Risikoschutz für Prop-Firmen und einem versteckten Support-/Resistance-Finder für MetaTrader 5.