
Kurslücke - eine profitabele Strategie oder 50/50?
- Einführung
- Welchen Markt sollte man wählen?
- Arbeiten mit einer Gruppe von Symbolen
- Datenerhebung
- Verwenden von CGraphic
- Dateiauswahl über den Systemdialog "Select txt file".
- Statistiken anderer Wertpapiere
- Schlussfolgerung
Einführung
Hier werden wir uns mit der Überprüfung von D1-Lücken an den Aktienmärkten befassen. Wie oft bewegt sich der Markt danach in Richtung der Lücke? Kehrt sich der Markt nach einer Lücke um? Ich werde versuchen, diese Fragen im Artikel zu beantworten, während benutzerdefinierte Grafiken mittels CGraphic erstellt werden, um die Ergebnisse zu visualisieren. Symboldateien werden mit der DLL-Funktion GetOpenFileName ausgewählt.
Welchen Markt sollte man wählen?
Mich interessieren ausschließlich die Kurslücke des D1-Zeitrahmens.
Offensichtlich gibt es die größte Anzahl von Lücken bei Wertpapieren und nicht bei Forexsymbolen, da Wertpapiere von morgens bis abends und nicht rund um die Uhr gehandelt werden. Ich interessiere mich besonders für Aktien, da für sie eine relativ umfangreiche Kurshistorie vorliegt. Futures hingegen sind nicht sehr geeignet, da sie oft eine Lebensdauer von 3 oder 6 Monaten haben, was nicht ausreicht, um die Historie in einem D1-Zeitraum zu untersuchen.
Das Skript TestLoadHistory.mq5 aus dem Dokumentationsteil "Datenzugriff organisieren" ermöglicht es, die Anzahl der auf dem Server vorhandenen aktuellen Symbol- und D1-Zeitrahmenleisten zu definieren. Nachfolgend finden Sie ein Beispiel für die Überprüfung der Anzahl der D1-Balken für das Symbol ABBV:
Abb. 1. ABBV Symbol
Die Vorgehensweise ist wie folgt:
- Wir speichern zunächst das in der Dokumentation beschriebene Skript. Um dies zu erreichen, wird im MetaEditor 5 ein neues Skript erstellt ("Erstellen eines Skripts"). Nennen wir es TestLoadHistory.mq5. Nun müssen wir den Code des Skript aus der Dokumentation auswählen, kopieren und in das Skript TestLoadHistory.mq5 einfügen (der Text aus der Dokumentation sollte den gesamten Text im Skript ersetzen).
- Kompilieren wir das resultierende Skript (nach der Kompilierung wird das Skript im Navigatorfenster des Terminals sichtbar).
- Starten wir das Skript in MetaTrader 5. Da die Prüfung für das Symbol ABBV gestartet wurde, müssen wir das Chart vorbereiten: Wir öffnen das Chart von ABBV und ersetzen den Zeitrahmen durch D1. Wir nehmen das Skript aus dem Navigatorfenster und starten es auf dem Chart ABBV. Legen wir in dem Parameter des Skripts ABBV als Symbolnamen ein, wählen den D1-Zeitrahmen und geben das Jahr 1970 als Datum an:
Abb. 2. Ausführen des Skripts TestLoadHistory.mq5
Ergebnisse des Skriptes:
TestLoadHistory (ABBV,D1) Start loadABBV,Dailyfrom1970.03.16 00:00:00 TestLoadHistory (ABBV,D1) Loaded OK TestLoadHistory (ABBV,D1) First date 2015.09.18 00:00:00 - 758 bars
— Historie beginnt 2015 und umfasst 758 D1 Balken. Diese Anzahl reicht für eine Analyse.
Arbeiten mit einer Gruppe von Symbolen
Um alle Kriterien zu analysieren und zu berechnen, müssen wir die Symbole einer Symbolgruppe vergleichen. In der Regel sind die Symbole im MetaTrader 5 Terminal bereits in Gruppen unterteilt (Rechtsklick im Fenster Market Watch und Auswahl von Symbolen oder Drücken von Strg + U):
Abb. 3. Symbole der NASDAQ-Gruppe (SnP100)
Die NASDAQ-Gruppe (SnP100) wird in der Abbildung ausgewählt. Diese Gruppe enthält das Symbol ABBV. Der bequemste Weg, mit einer Gruppe von Symbolen zu arbeiten, besteht darin, sicherzustellen, dass das Skript auf einem Chart dieses Symbols aus dieser Gruppe gestartet wird. Um über jede Gruppe hinweg zu iterieren, müssen wir manuell ein Symboldiagramm aus jeder Gruppe öffnen und das Hilfsskript Symbols on symbol tree.mq5 starten - dieses Skript sammelt alle Gruppensymbole (Symbolnamen) in einer separaten Datei.
Das Skript Symbols on symbol tree.mq5 arbeitet nach folgendem Algorithmus: Es holt sich einen Pfad im Symbolbaum SYMBOL_PATH; sucht sich die letzte Gruppe von Symbolen aus dem gefundenen Pfad (hier ist es die Gruppe NASDAQ(SnP100)); wählt sich alle Symbole aus dieser Gruppe aus und speichert diese Symbole in der Datei. Der Dateiname ist ein Pfad in einem Symbolbaum, in dem alle "/" und "\"-Zeichen durch "_" ersetzt werden (die Ersetzung erfolgt durch das Skript automatisch, der Dateiname wird auch automatisch generiert). Nach dem Ersetzen von Symbolen wird der folgende Name für die Symbolgruppe NASDAQ(SnP100) generiert: "Stock Markets_USA_NYSE_NASDAQ(SnP100)_.txt".
Warum müssen wir jede Gruppe in eine separate Datei eintragen? Anschließend wird es möglich sein, Symbolnamen einfach aus Gruppendateien zu lesen, ohne über alle Symbole zu iterieren und die Richtung der Lücken zu analysieren. Im Allgemeinen entfernt das Hilfsskript Symbols on symbol tree.mq die Notwendigkeit manuell die Symbole aus einer bestimmten Symbolgruppe auszuwählen.
Das Skript Symbols on symbol tree.mq5
Besprechen wir nun das Skript.
HINWEIS: Nur der Text "Everything is fine. There are no errors" in der Registerkarte Experten garantiert, dass die Arbeit des Skripts erfolgreich war und die erhaltene Datei mit Symbolen für die weitere Arbeit verwendet werden kann!
Um den Code von Dateioperationen zu verkürzen, wird die Klasse CFileTxt eingebunden, und die Arbeit mit der Textdatei wird von dem Klassenobjekt m_file_txt - CFileTxt durchgeführt. Das Skript durchläuft sieben Schritte aus:
//+------------------------------------------------------------------+ //| Symbols on symbol tree.mq5 | //| Copyright © 2018, Vladimir Karputov | //| http://wmua.ru/slesar/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2018, Vladimir Karputov" #property link "http://wmua.ru/slesar/" #property version "1.000" //--- #include <Files\FileTxt.mqh> CFileTxt m_file_txt; // file txt object //--- string m_file_name=""; // File name //+------------------------------------------------------------------+ //| Script Programm Start Funktion | //+------------------------------------------------------------------+ void OnStart() { //--- SCHRITT 1 string current_path=""; if(!SymbolInfoString(Symbol(),SYMBOL_PATH,current_path)) { Print("ERROR: SYMBOL_PATH"); return; } //--- SCHRITT 2 string sep_="\\"; // Ein Separator als Zeichen ushort u_sep_; // Der Zahlencode des Separatorzeichens string result_[]; // Ein Array für die Zeichenketten //--- Abfrage des Separator-Zeichens u_sep_=StringGetCharacter(sep_,0); //--- Aufteilen der Zeichenkette in Teile int k_=StringSplit(current_path,u_sep_,result_); //--- SCHRITT 3 //--- Ausgabe der erhaltenen Zeichenketten if(k_>0) { current_path=""; for(int i=0;i<k_-1;i++) current_path=current_path+result_[i]+sep_; } //--- SCHRITT 4 string symbols_array[]; int symbols_total=SymbolsTotal(false); for(int i=0;i<symbols_total;i++) { string symbol_name=SymbolName(i,false); string symbol_path=""; if(!SymbolInfoString(symbol_name,SYMBOL_PATH,symbol_path)) continue; if(StringFind(symbol_path,current_path,0)==-1) continue; int size=ArraySize(symbols_array); ArrayResize(symbols_array,size+1,10); symbols_array[size]=symbol_name; } //--- SCHRITT 5 int size=ArraySize(symbols_array); if(size==0) { PrintFormat("ERROR: On path \"%s\" %d symbols",current_path,size); return; } PrintFormat("On path \"%s\" %d symbols",current_path,size); //--- SCHRITT 6 m_file_name=current_path; StringReplace(m_file_name,"\\","_"); StringReplace(m_file_name,"/","_"); if(m_file_txt.Open("5220\\"+m_file_name+".txt",FILE_WRITE|FILE_COMMON)==INVALID_HANDLE) { PrintFormat("ERROR: \"%s\" file in the Data Folder Common folder is not created",m_file_name); return; } //--- SCHRITT 7 for(int i=0;i<size;i++) m_file_txt.WriteString(symbols_array[i]+"\r\n"); m_file_txt.Close(); Print("Everything is fine. There are no errors"); //--- } //+------------------------------------------------------------------+
Algorithmus des Skripts:
- SCHRITT 1: SYMBOL_PATH (Pfad im Symbolbaum) ist für das aktuelle Symbol definiert;
- SCHRITT 2: Der erhaltene Pfad wird mit dem Separator "\" in Teilzeichenketten unterteilt;
- SCHRITT 3: Den aktuellen Pfad ohne die letzte Teilzeichenkette neu zusammensetzen, da er den Symbolnamen enthält;
- SCHRITT 4: Schleife über alle verfügbaren Symbole; wenn der Pfad des Symbols im Symbolbaum mit dem aktuellen übereinstimmt, wählen wir den Symbolnamen aus und fügen ihn dem Array der erkannten Symbole hinzu;
- SCHRITT 5: Überprüfen der Größe des erkannten Symbolarrays;
- STEP 6: Erstellen des Dateinamens (entfernen von "/" und "\" aus dem Namen, Erstellen der Datei);
- STEP 7: Schreiben des Arrays mit den gefundenen Symbolen in die Datei und dieselbe schließen.
Achten wir auf Schritt 6: Die Datei wird im Ordner 5220 im Gesamtordner (das Flag FILE_COMMON wird verwendet) erstellt.
Jetzt prüfen wir, ob das Skript fehlerfrei endete. Die folgende Meldung sollte auf der Registerkarte Experten erscheinen: "Everything is fine. There are no errors. Create file:". Der Dateiname wird in der nächsten Zeile angezeigt — wir kopieren ihn und fügen ihn in das Skript "Getting gap statistics ..." ein. Die erfolgreiche Datei-Generierung wird unten angezeigt:
On path "Stock Markets\USA\NYSE/NASDAQ(SnP100)\" 100 Symbole
Everything is fine. There are no errors. Create file:
Stock Markets_USA_NYSE_NASDAQ(SnP100)_
Als Ergebnis erhalten wir die Datei (hier ist es Stock Markets_USA_NYSE_NASDAQ(SnP100)_) mit einem einzelnen Symbol in jeder Zeile. Die ersten fünf Zeilen der Datei:
AAPL ABBV ABT ACN AGN
Datenerhebung
Die OHLC-Daten der Historie der Symbole und die statistische Berechnung werden vom Hauptskript Getting gap statistics.mq5 durchgeführt. Die Struktur SGapStatistics wird für jedes Symbol ausgefüllt:
struct SGapStatistics { string name; // symbol name int d1_total; // total number of D1 bars int gap_total; // total number of gaps int gap_confirmed; // gap was confirmed };
name — Symbolname
d1_total — Anzahl der D1-Balken des Symbols
gap_total — Anzahl der gefundenen Lücken
gap_confirmed — Anzahl der bestätigten Lücken (zum Beispiel öffnet ein Tag mit einer Aufwärtslücke und schließt als Aufwärtsbalken)
Die am besten geeignete Funktion zur Ermittlung der OHLC-Preise pro Symbol ist CopyRates. Wir verwenden das dritte Beispiel - mit Start- und Enddatum des gewünschten Zeitintervalls. Als Startzeit nehmen wir die aktuelle Zeit des TimeTradeServer Trade Server plus einen Tag, während das Enddatum der 1. Januar 1970 ist.
Nun müssen wir nur noch definieren, wie wir den Fehler behandeln sollen ("-1" wird als Ergebnis von der Funktion zurückgegeben) oder wie wir uns entscheiden wollen, dass nicht alle Daten als Ergebnis der Anfrage erhalten wurden (z.B. wurden noch nicht alle Daten vom Server hochgeladen). Wir können einen einfachen Weg gehen (Datenabfrage — Pause N — Sekunden — neue Datenabfrage) oder den richtigen. Die richtige Lösung basiert auf der Verbesserung des Skripts TestLoadHistory.mq5 aus dem Dokumentationsteil "Datenzugriff organisieren".
Die Ergebnisse der Ausführung von Skriptanfragen sind unten aufgeführt:
switch(res) { case -1 : Print("Unknown symbol",InpLoadedSymbol); break; case -2 : Print("Number of requested bars exceeds the one that can be displayed on chart"); break; case -3 : Print("Execution interrupted by user"); break; case -4 : Print("Indicator cannot upload own data"); break; case -5 : Print("Upload failed"); break; case 0 : Print("All data uploaded"); break; case 1 : Print("Present timeseries data sufficient"); break; case 2 : Print("Timeseries made of existing terminal data"); break; default : Print("Execution result not defined"); }
— was bedeutet, dass das Ausführungsergebnis kleiner als Null ist — dies ist ein Fehler. In diesem Fall sieht das Vorgehen wie folgt aus: Wir öffnen die Symboldatei und stellen für jedes Symbol eine Datenabfrage. Zusammenfassen der negativen Ergebnisse. Wenn mindestens ein negatives Ergebnis vorliegt, zeigen wir die Nachricht zur Anforderungsausgabe an. In diesem Fall muss der Nutzer das Skript erneut starten (die Historie wird wahrscheinlich zu diesem Zeitpunkt hochgeladen oder erstellt worden sein). Wenn keine Fehler vorliegen, holen wir uns die OHLC-Daten und zählen die Anzahl der Kurslücken.
Das Skript Getting Gap statistics.mq5
Dieses Skript zeigt die Statistik der Kurslücken auf der Registerkarte Experten des Terminals an. Im Weiteren werden wir den Wortlaut "bestätigte Kurslücke" (Gap Confirmation) verwenden. Eine bestätigte Kurslücke bedeutet, dass der Tagesbalken in Richtung der Kurslücke schloss, während eine unbestätigte Kurslücke bedeutet, dass der Tagesbalken in die entgegengesetzte Richtung der Kurslücke schloss:
Abb. 4. Bestätigte und unbestätigte Kurslücken
Das Skript verfügt über einen einzigen Parameter "File name" — einen Dateinamen, der durch das Hilfsskript Symbols on symbol tree.mq5 gebildet wurde (wie wir uns erinnern, wird diese Datei im Ordner 5220 des Gesamtordners erstellt). Der Dateiname wird ohne Angabe von Verzeichnis und Erweiterung angegeben, z.B. so:
Abb. 5. Der Eingabeparameter des Skripts "Getting gap statistics"
Daher müssen wir mehrere Schritte unternehmen, um die Statistik zu erhalten:
- Wir wählen eine Symbolgruppe aus, für die die Berechnung der Kurslücken durchgeführt werden soll.
- Wir wählen ein Symbol aus der ausgewählten Gruppe aus und öffnen dessen Chart.
- Wir platzieren das Skript Symbols on symbol tree.mq5 auf dem Chart — die Datei mit allen Symbolen der ausgewählten Symbolgruppe wird dadurch erstellt. Prüfen wir nun, dass während des Skriptdurchlaufs keine Fehler auftreten. Die folgende Meldung sollte auf der Registerkarte Experten erscheinen: "Everything is fine. There are no errors"
- Ziehen Sie das Skript Getting gap statistics.mq5 auf dem Chart.
Auf der Registerkarte "Experten" werden daher solche Statistiken zur Anzahl der Kurslücken angezeigt. Ansicht für die ersten fünf Symbole:
[name] [d1_total] [gap_total] [gap_confirmed] [ 0] "AAPL" 7238 3948 1640 [ 1] "ABBV" 759 744 364 [ 2] "ABT" 762 734 374 [ 3] "ACN" 759 746 388 [ 4] "AGN" 761 754 385
Verwenden von CGraphic
Die Anzeige der gesamten Daten auf der Registerkarte Experten ist nicht sehr informativ, daher erstellt das Skript Getting gap statistics CGraphic.mq5 mittels CGraphic Grafiken. Das Skript hat die folgenden Parameter:
- Dateiname — Dateiname mit Symbolen (diese Datei sollte vorab mit dem Hilfsskript "Symbols on symbol tree.mq5" erstellt werden).
- Log CheckLoadHistory — Ergebnisse des Ladens der Symbolhistorie auf die Registerkarte Experten verbergen/anzeigen.
- Log Statistics — Ausblenden/Anzeigen der Statistik der Kurslücken in der Registerkarte Experten
Berechnungsergebnis — Prozentkurve der bestätigten Kurslücken:
Abb. 6. Die Ergebnisse des Skripts Getting gap statistics CGraphic.mq5
Die Zahlen auf dem Diagramm:
- 1 — Name der Linie der bestätigten Kurslücken
- 2 — Prozentskala
- 3 — Name aus der die Symbole gelesen wurden
Die Grafik verdeutlicht, dass die Werte der Kurslücken um 50% plus minus 6% schwanken, obwohl es drei Ausreißer von weniger als 42% gibt. Diese drei Ausreißer der bestätigten Kurslücken von weniger als 42% bedeuten, dass sich ein Tagesbalken der drei Symbole mit einer Wahrscheinlichkeit von 58% gegen die Kurslücke bewegt.
Jetzt können wir eine andere Gruppe von Symbolen überprüfen — Stock Markets\RussiaMICEX20. Getting gap statistics CGraphic.mq5 Berechnungsergebnis des Skripts für Stock Markets\RussiaMICEX20:
Abb. 7. Die Statistik der Kurslücken für die Gruppe Stock Markets\RussiaMICEX20
Hier gibt es zwei ungewöhnliche Ausreißer. Allerdings können wir das Bild und das Symbol in der aktuellen Version nicht verlinken. Deshalb müssen wir das Skript leicht verbessern.
Das Skript Getting gap statistics CGraphic 2.mq5
Änderungen: In der Version 2.0 werden in der Registerkarte Experten die Statistiken über bestätigte Kurslücken in % angezeigt. Wenn also Log Statistics aktiviert ist, können leicht zwei anomale Symbole für die Gruppe Stock Markets\RussiaMICEX20 erkannt werden:
[name] [d1_total] [gap_total] [gap_confirmed] [confirmed_per] *** [14] "NVTK.MM" 757 737 347 47.08 [15] "PIKK.MM" 886 822 282 34.31 [16] "ROSN.MM" 763 746 360 48.26 [17] "RSTI.MM" 775 753 357 47.41 [18] "RTKM.MM" 753 723 324 44.81 [19] "SBER.MM" 762 754 400 53.05 [20] "SBER_p.MM" 762 748 366 48.93 [21] "SNGS.MM" 762 733 360 49.11 [22] "TATN.MM" 765 754 370 49.07 [23] "SNGS_p.MM" 751 708 305 43.08 [24] "URKA.MM" 765 706 269 38.10 [25] "VTBR.MM" 763 743 351 47.24 [26] "RASP.MM" 778 756 354 46.83
Für die Symbole PIKK.MM und URKA.MM bedeuten 34% und 38% bestätigte Kurslücken, dass die Tagesbalken der Symbole mit der Wahrscheinlichkeit von 66% bzw. 62% schlossen.
Die Anzahl der Symbole (Instrumente) in der Datei begrenzen
Bei der Analyse verschiedener Symbolgruppen fand ich Gruppen mit mehr als tausend Symbolen. Die Arbeit mit einem so großen Set ist sehr umständlich: Es dauert ziemlich lange, bis eine so große Anzahl von Symbolen in das Fenster Market Watch eingefügt wird, während die endgültige Grafik unlesbar wird — zu viele Daten, die sehr nah beieinander liegen.
Deshalb entschied ich mich, das Skript Symbols on symbol tree.mq5 zu aktualisieren und schrieb Symbols on symbol tree 2.mq5. In dieser Version darf die maximale Anzahl der Symbole in der Datei 200 nicht überschreiten, und die jew. Nummer des Teils der Gruppe wird dem Dateinamen hinzugefügt. Zum Beispiel enthält die Symbolgruppe Stock Markets\USA\NYSE/NASDAQ(SnP100)\ 100 Symbole, was bedeutet, dass es nur einen Teil gibt. Der Dateiname sieht wie folgt aus: Aktienmärkte_USA_NYSE_NASDAQ(SnP100)_part_0.txt.
Dateiauswahl über den Systemdialog "Select txt file".
Nachdem ich mit den Skripten dieses Artikels gearbeitet hatte, wurde mir klar, dass das Hinzufügen des Dateinamens in den Eingabeparametern des Skripts Getting Gap Statistics CGraphic 2.mq5 zu unangenehm ist. Wir müssen mehrere Aktionen durchführen: Wir öffnen den Gesamtordner aller Terminals, kopieren den Dateinamen und fügen den kopierten Dateinamen in das Skript ein.
Daher wird die Dateiauswahl mit der System-DLL-Funktion GetOpenFileName durchgeführt. Um dies zu erreichen, füge ich die Datei GetOpenFileNameW.mqh hinzu. Die Funktion OpenFileName aus dieser Datei gibt den vollständigen Pfad der ausgewählten *.txt-Datei zurück. Der Pfad kann beispielsweise wie folgt aussehen: "C:\Users\barab\AppData\Roaming\MetaQuotes\Terminal\Common\Files\5220\Stock Markets_USA_NYSE_NASDAQ(SnP100)_part_0.txt". Jetzt müssen wir den Dateinamen aus der Datei holen.
Das Skript Getting gap statistics CGraphic 3.mq5 verwendet die DLL-Funktion GetOpenFileName:
Abb. 8. Anfrage DLL zu erlauben, wenn das Skript Getting gap statistics CGraphic 3.mq5 gestartet wird
Hier sieht man, wie die Dateien über den Dialog "Select txt file" ausgewählt werden:
Abb. 9. Dateiauswahl
Statistiken anderer Wertpapiere
Jetzt können wir die Statistik der Kurslücken für andere Symbolgruppen erstellen.
Die Gruppe Stock Markets\USA\NYSE\NASDAQ(ETFs)
Die Symbolgruppen sind in sieben Dateien aufgeteilt:
Abb. 10. Die Gruppe Stock Markets\USA\NYSE\NASDAQ(ETFs), part 0
Abb. 11. Die Gruppe Stock Markets\USA\NYSE\NASDAQ(ETFs), part 1
Abb. 12. Die Gruppe Stock Markets\USA\NYSE\NASDAQ(ETFs), part 2
Abb. 13. Die Gruppe Stock Markets\USA\NYSE\NASDAQ(ETFs), part 3
Abb. 14. Die Gruppe Stock Markets\USA\NYSE\NASDAQ(ETFs), part 4
Abb. 15. Die Gruppe Stock Markets\USA\NYSE\NASDAQ(ETFs), part 5
Abb. 16. Die Gruppe Stock Markets\USA\NYSE\NASDAQ(ETFs), part 6
Stock Markets\United Kngdom\LSE Int. Die Gruppe (ADR/GDR)\
Abb. 17. Stock Markets\United Kngdom\LSE Int. Die Gruppe (ADR/GDR)\
Die Gruppe Stock Markets\United Kngdom\LSE (FTSE350)\
Diese Gruppe umfasst 350 Symbole, daher werden auf zwei Dateien aufgeteilt.
Abb. 18. Die Gruppe Stock Markets\United Kngdom\LSE (FTSE350)\, part 0
Abb. 19. Die Gruppe Stock Markets\United Kngdom\LSE (FTSE350)\, part 1
Die Gruppe Stock Markets\Germany\XETRA (IBIS)\Dax100\
Abb. 20. Die Gruppe Stock Markets\Germany\XETRA (IBIS)\Dax100\
Die Gruppe Stock Markets\France\Eurnext (CAC40)\
Abb. 21. Die Gruppe Stock Markets\France\Eurnext (CAC40)\
Schlussfolgerung
Bei der Analyse mehrerer Wertpapiermärkte habe ich gesehen, dass nach einer Kurslücke die Wahrscheinlichkeiten einer anhaltenden Bewegung und einer Umkehrung bei fast 50% liegen, was bedeutet, dass der Versuch, eine Lücke zu schließen, die Erfolgsquote von 50/50 hat. Gleichzeitig gibt es Wertpapiere mit einer Wahrscheinlichkeit (sowohl der Fortsetzung als auch der Umkehrung) von deutlich mehr als 65%. Diese Wertpapiere könnte man für den Handel von Kurslücken verwenden.
Das Archiv mit den im Artikel beschriebenen Skripten ist unten angehängt:
Skriptname | Beschreibung |
---|---|
Symbols on symbol tree.mq5 | Hilfsskript. Das Skript definiert eine Gruppe von Symbolen und sichert alle Symbole dieser Gruppe in einer Datei (Gesamtordner, Verzeichnis 5220) |
Symbols on symbol tree 2.mq5 | Hilfsskript. Das Skript definiert eine Gruppe von Symbolen und sichert alle Symbole dieser Gruppe in einer Datei (Gesamtordner, Verzeichnis 5220). Es verteilt außerdem die Symbole dieser Symbolgruppe in Dateien mit bis zu 200 Symbolen. |
Getting gap statistics.mq5 | Das Skript lädt die Symbole aus der Datei, die von dem Hilfsskript erstellt wurde und zeigt die Statistik der Kurslücken in der Registerkarte Experten |
Getting gap statistics CGraphic.mq5 | Das Skript lädt alle Symbole aus der Datei, die von dem Hilfsskript erstellt wurde und zeigt die Statistik der Kurslücken als Grafik an. Es wird CGraphic verwendet. |
Getting gap statistics CGraphic 2.mq5 | Das Skript lädt alle Symbole aus der Datei, die von dem Hilfsskript erstellt wurde und zeigt die Statistik der Kurslücken als Grafik an. Es wird CGraphic verwendet. Die Statistik wird in % und in der Registerkarte Experten dargestellt |
Getting gap statistics CGraphic 3.mq5 | Das Skript lädt alle Symbole aus der Datei, die von dem Hilfsskript erstellt wurde und zeigt die Statistik der Kurslücken als Grafik an. Es wird CGraphic verwendet. Die Statistik wird in % und in der Registerkarte Experten dargestellt. Der Dialog "Select txt file" wird verwendet, um eine Datei mit den Symbolen auszuwählen |
GetOpenFileNameW.mqh | Einzubindende Datei, die die Arbeit mit dem Dialog "Select txt file" bereitstellt |
Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalartikel: https://www.mql5.com/ru/articles/5220





- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.