Die Handelsplattform erlaubt es, benutzerdefinierte Finanzinstrumente zu erstellen. Man kann sich ihre Charts anschauen und die technische Analyse durchführen sowie diese bei der Prüfung von Handelsrobotern und Indikatoren im Strategietester verwenden.
Wenn Sie Ihre Strategie auf einem Symbol testet wollen, das Ihr Broker nicht anbietet, oder er stellt zu diesem Symbol eine nicht tiefe oder eine qualitativ mangelhafte Preishistorie bereit, erstellen Sie ein Symbol und laden Sie Ihre eigene Daten ins Symbol hoch.
Öffnen Sie das Fenster der Verwaltung von Symbolen über das Kontextmenü "Marktübersicht" und klicken Sie auf "Symbol erstellen":
Es können alle Parameter aus der Spezifikation von Handelssymbolen sowie eine Reihe zusätzlicher Parameter konfiguriert werden:
Neben den angegebenen Parametern können Sie Handelssitzungen und Notierungssitzungen einstellen. Die Sitzungen werden für jeden Tag einzeln eingestellt. Doppelklicken Sie auf einen Tag, um ihn zu bearbeiten.
Setzen Sie die Sitzungen mithilfe von Slider. Expert Advisors können außerhalb von Handelssitzungen im Strategietester nicht handeln.
Standardmäßig sind Handelssitzungen nicht angegeben, sie fallen mit Notierungssitzungen zusammen. Wenn die Zeit von Notierungssitzungen und Handelssitzungen getrennt eingestellt werden muss, muss man die Option "Separate Handelssitzungen verwenden" aktivieren. Alle Handelssitzungen müssen innerhalb von Notierungssitzungen sein.
|
Sie können benutzerdefinierte Symbole teilen oder diese zwischen Ihren Plattformen übertragen. Die Einstellungen eines konkreten benutzerdefinierten Symbols können in dem oben erwähnten Fenster der Einstellungen exportiert und importiert werden.
Sie können ganze Gruppen von Symbolen exportieren und importieren:
Die Einstellungen werden in Textdateien im JSON-Format exportiert:
{
|
Alle Symbole werden in der separaten Gruppe "Custom" angezeigt. Um ein Symbol zu ändern oder zu löschen, verwenden Sie das Kontexmenü in der Liste:
Sie können Kursdaten aus jeder Textdatei sowie aus Historiedateien des MetaTrader 5 (HST) ins eigene Symbol importieren. Wählen Sie ein Symbol aus und gehen Sie zum Reiter "Balken". Wählen Sie ein Symbol aus und gehen Sie zum Reiter "Balken" oder "Ticks".
Geben Sie den Pfad zur Datei mit den Daten im Importdialog an und setzen Sie die Einstellungen:
Die Datei mit Minutenbalken muss folgendes Format haben: Datum Zeit Open High Low Close Tickvolumen Volumen Spread. Zum Beispiel:
<DATE> <TIME> <OPEN> <HIGH> <LOW> <CLOSE> <TICKVOL><VOL> <SPREAD>
|
Die Datei mit Ticks muss folgendes Format haben: Datum Zeit Bid Ask Last Volume. Zum Beispiel:
<DATE> <TIME> <BID> <ASK> <LAST> <VOLUME>
|
Übergeben Sie keine Tick-Flags, da das Terminal diese während des Imports berechnet.
Für ein benutzerdefiniertes Symbol können Sie die Daten jedes existierenden Symbols verwenden. Exportieren Sie sie, modifizieren, wenn nötig und importieren sie zurück.
|
Die Preisdaten benutzerdefinierter Symbole werden in einem separaten Verzeichnis Custom (nicht in den Verzeichnissen für die Daten konkreter Handelsservern) gespeichert:
C:\Users\[windows account]\AppData\Roaming\MetaQuotes\Terminal\[instance id]\bases\Custom |
Sie können die Historie von Balken und Ticks benutzerdefinierter Symbole im manuellen Modus bearbeiten. Rufen Sie das gewünschte Datenintervall im Reiter "Balken" oder "Ticks" ab.
Bei der Bearbeitung von Balken ist es dringend empfohlen, Daten des Zeitrahmens М1 abzurufen. Die Preishistorie wird als Minutenbalken auf der Handelsplattform gespeichert. Alle anderen Zeitrahmen werden basierend auf Minutenbalken erstellt. Auch wenn Sie ursprünglich die Balken eines anderen Zeitrahmens angefordert haben, werden die Änderungen auf die entsprechenden Minutenbalken angewandt. Zum Beispiel, wenn Sie die Daten von М5 abrufen und einen Balken ändern, werden fünf Minutenbalken durch einen Minutenbalken (der dem Anfang des М5-Balkens entspricht) ersetzt. Das heißt, das ganze bearbeitete Intervall wird komplett ersetzt. |
Die geänderten Einträge werden hervorgehoben:
|
Um die Änderungen zu speichern, klicken Sie auf "Änderungen übernehmen" im unteren Teil des Fensters.
Die Verwendung benutzerdefinierter Symbole unterscheidet sich kaum von der Verwendung von Symbolen, die vom Broker bereitgestellt werden. Sie werden auch im Fenster "Marktübersicht" angezeigt, und man kann sich ihre Charts ansehen, auf welche Indikatoren und analytische Objekte gezogen werden können.
Man kann keine realen Trades mit benutzerdefinierten Symbolen ausführen, sie können aber für das Testen von Handelsrobotern und Indikatoren im Strategietester verwendet werden. Wählen Sie einfach ein benutzerdefiniertes Symbol aus und starten Sie das Testen:
Bei der Berechnung der Margin und des Profits für Trades, die beim Testen ausgeführt werden, verwendet der Strategietester zugängliche Kreuzkurse automatisch, wenn nötig. Zum Beispiel, wenn die Währung des Gewinns der Euro ist, und die Kontowährung der US-Dollar, wird der Strategietester sie nach den entsprechenden Kursen des Währungpaares EURUSD umrechnen.
Mit großer Wahrscheinlichkeit haben benutzerdefinierte Symbole verschiedene Suffixe in ihren Namen, zum Beispiel, EURUSD.1 oder EURUSD.f. Deswegen verwendet der Strategietester einen speziellen Mechanismus, um nach passenden Kreuzkursen für Neuberechnung zu suchen.
Wir haben zum Beispiel ein benutzerdefiniertes Symbol AUDCAD.custom mit dem Typ der Marginberechnung Forex erstellt, unsere Kontowährung ist USD. Anhand des Namens des Forex-Symbols sucht der Tester nach benötigten Symbolen wie folgt:
Für Symbole mit anderen Typen der Marginberechnung (Futures, Stock Exchange) wird ein Währungspaar für die Umrechnung der Währung des Symbols in die Kontowährung benötigt. Wir haben zum Beispiel ein benutzerdefiniertes Symbol erstellt, die Währung des Profits und der Margin ist der britische Pfund (GBP), die Kontowährung ist der Schweizer Franken (CHF). In diesem Fall wird es nach Symbolen für das Testen wie folgt gesucht:
|
Die Handelsplattform erlaubt es, synthetische Finanzinstrumente zu erstellen. Das sind Symbole, die auf einem oder mehreren der vorhandenen Symbole basieren. Man muss eine Formel für die Berechnung der Kurse angeben, und die Plattform wird Ticks des synthetischen Symbols in Echtzeit erzeugen sowie eine Minuten-Historie für es erstellen.
Sie können, zum Beispiel, ein Symbol erstellen, das den Dollarindex (USDX) zeigt. Seine Formel sieht wie folgt aus:
50.14348112*pow(ask(EURUSD),-0.576)*pow(USDJPY,0.136)*pow(ask(GBPUSD),-0.119)*pow(USDCAD,0.091)*pow(USDSEK,0.042)*pow(USDCHF,0.036) |
---|
Die Plattform berechnet den Preis des neuen Symbols in Echtzeit basierend auf Kursen der sechs anderen Symbole, die von Ihrem Broker bereitgestellt werden. In der Marktübersicht und auf dem Chart sehen Sie, wie sich sein Preis ändert:
Erstellen Sie ein neues benutzerdefiniertes Symbol, öffnen Sie seine Spezifikation und geben Sie seine Formel an:
Die Berechnung vonTicks und Minutenbalken eines synthetischen Symbols beginnt mit dem Hinzufügen des Symbols zur "Marktübersicht". Gleichzeitig werden der Marktübersicht alle Symbole hinzugefügt, die für dessen Berechnung benötigt werden. Dem Journal der Plattform wird eine Eintragung über den Beginn der Berechnung hinzugefügt: Synthetic Symbol USDX: processing started.
|
Jede 100 Ms (zehn mal pro Sekunde) wird überprüft, ob sich der Preis der Symbole in der Formel geändert hat. Wenn sich der Preis mindestens eines Symbols geändert hat, wird der Preis des synthetischen Symbols berechnet und ein Tick wird generiert. Die Berechnung wird parallel in drei Threads für Bid, Ask und Last-Preise durchgeführt. Zum Beispiel, wenn die Formel EURUSD*GBPUSD ist, werden die Preise des synthetischen Symbols wie folgt berechnet:
Das Vorhandensein der Veränderungen wird für jeden Preis separat geprüft. Wenn sich bei einer Berechnung nur der Bid-Preis des ursprünglichen Symbols verändert hat, wird nur der entsprechende Preis eines synthetischen Symbols berechnet.
Neben dem Sammeln von Ticks in Echtzeit, erstellt die Plattform eine Minuten-Historie des synthetischen Symbols. Auf diese Weise kann sich der Trader seine Charts wie die Charts einfacher Symbole ansehen und mithilfe von Objekten und Indikatoren technische Analyse durchführen.
Sobald der Trader ein synthetisches Symbol zur Marktübersicht hinzufügt, prüft die Plattform, ob es für ihn eine berechnete Minutenhistorie gibt. Wenn nicht, wird diese für die letzten 60 Tage erstellt. Das macht ungefähr 50 000 aus. Wenn einige Balken für diese Perioden bereits gezeichnet wurden, erzeugt die Plattform zusätzlich neue Balken.
Nach dem Zeichnen von Balken für die letzten 60 Tage erstellt die Plattform eine tiefere Historie im Hintergrundmodus. Die Preis-Historie jedes Finanzinstruments in der Formel kann unterschiedlich tief sein. Aus diesem Grund wird für den kürzesten verfügbaren Zeitraum berechnet. In der Formel werden zum Beispiel drei Finanzinstrumente verwendet:
In diesem Fall wird die Historie des synthetischen Finanzinstruments für einen Zeitraum vom 01.06.2014 bis heute berechnet. Von diesem Datum werden zusätzlich 100 Minuten abgezogen, um die Vollständigkeit der Berechnung zu sichern (wenn es einen Minutenbalken in der Historie nicht gibt, wird bei der Berechnung der Balken der vorherigen Minute verwendet).
Die Historie von Minutenbalken eines synthetischen Symbols wird basierend auf Minutenbalken (nicht Ticks) der Symbole in der Formel berechnet. Um den Open-Kurs eines Minutenbalkens eines synthetischen Symbols zu berechnen, verwendet die Plattform Opеn-Kurse der Symbole in der Formel. Die High-, Low- und Close- Kurse werden gleich berechnet.
Wenn der benötigte Minutenbalken für ein Symbol aus der Formel fehlt, verwendet die Plattform den Close-Kurs des vorherigen Balkens für die Berechnung. Es werden zum Beispiel drei Symbole verwendet: EURUSD, USDJPY und GBPUSD. Fehlt bei der Berechnung eines Balkens, der der Minute 12:00 entspricht, der Minutenbalken von USDJPY, werden folgende Preise verwendet:
Wenn der Minutenbalken bei allen Symbolen in der Formel fehlt, wird der entsprechende Minutenbalken des synthetischen Symbols nicht berechnet.
Alle neuen Balken (der aktuelle und die darauffolgenden) eines synthetischen Symbols werden basierend auf erzeugten Ticks erstellt. Der Preis, nach welchem die Balken gezeichnet werden, hängt vom Parameter "Zeichnen von Charts" in der Spezifikation ab:
In der Formel können Preisdaten sowie einige Eigenschaften der vorhandenen Symbole (bereitgestellt vom Broker) verwendet werden. Dafür geben Sie bitte folgende Informationen an:
Wenn der Symbol einen komplizierten Namen hat (Bindestrich, Punkte usw. beinhaltet), muss er in Anführungszeichen gesetzt werden. Zum Beispiel, "RTS-6.17". |
Folgende Rechenoperationen können in der Formel verwendet werden: Addition (+), Subtraktion (-), Multiplikation (*), Division (/) und Division mit Rest (%). EURUSD+GBPUSD bedeutet, zum Beispiel, dass der Preis als Summe der Preise von EURUSD und GBPUSD berechnet wird. In der Formel kann auch unäres Minus für die Änderung des Vorzeichens verwendet werden: -10*EURUSD.
Die Rechenoperationen werden nach Vorrangregeln ausgeführt:
Darüber hinaus können Konstanten in der Formel verwendet werden:
Darüber hinaus kann man alle mathematischen Funktionen verwenden, die in MQL5 unterstützt werden, außer MathSrand, MathRand und MathIsValidNuber:
Funktion |
Beschreibung |
---|---|
fabs(Zahl) |
Gibt den absoluten Wert (Modulo-Wert) der der Funktion übergebenen Zahl zurück. |
acos(Zahl) |
Gibt den Wert des Arkuskosinus der Zahl im Bogenmaß zurück |
asin(Zahl) |
Gibt den Wert des Arkussinus der Zahl im Bogenmaß zurück |
atan(Zahl) |
Gibt den Arkustangens der Zahl im Bogenmaß zurück |
ceil(Zahl) |
Gibt die nächste ganze Zahl von oben zurück |
cos(Zahl) |
Gibt den Kosinus der Zahl zurück |
exp(Zahl) |
Gibt die Exponente der Zahl |
floor(Zahl) |
Gibt die nächste ganze Zahle von unten zurück |
log(Zahl) |
Gibt den natürlichen Logarithmus zurück |
log10(Zahl) |
Gibt den Logarithmus mit der Basis 10 zurück |
fmax(Zahl1, Zahl2) |
Gibt den größten aus zwei Zahlenwerten zurück |
fmin(Zahl1, Zahl2) |
Gibt den kleinsten aus zwei Zahlenwerten zurück |
fmod(Dividend, Divisor) |
Gibt den reellen Rest von der Division zweier Zahlen zurück |
pow(Basis, Potenz) |
Erhebt die Zahl in die angegebene Potenz |
round(Zahl) |
Rundet die Zahl auf die nächste ganze Zahl |
sin(Zahl) |
Gibt den Sinus der Zahl zurück |
sqrt(Zahl) |
Gibt die Wurzel zurück |
tan(Zahl) |
Gibt den Tangens der Zahl zurück |
expm1(Zahl) |
Gibt den Wert des Ausdrucks exp(Zahl)-1 zurück |
log1p(Zahl) |
Gibt den Wert des Ausdrucks log(1+Zahl) zurück |
acosh(Zahl) |
Gibt den Wert des hyperbolischen Arkuskosinus zurück |
asinh(Zahl) |
Gibt den Wert des hyperbolischen Arkussinus zurück |
atanh(Zahl) |
Gibt den Wert des hyperbolischen Arkustangens zurück |
cosh(Zahl) |
Gibt den hyperbolischen Kosinus zurück |
sinh(Zahl) |
Gibt den hyperbolischen Sinus zurück |
tanh(Zahl) |
Gibt den hyperbolischen Tangens zurück |