
Traders Kit: Drag Trade Library
Einführung
Zum Zeitpunkt der Entwicklung gab es bereits einige Produkte, die in einem gewissen Umfang die durch die Bibliothek bereitgestellte Funktionalität umgesetzt haben oder ähnliche Funktionen hatten. Ich kann nicht sagen, ob die Bibliothekl besser oder schlechter als diese ist. Sie kommt gegenüber einigen von ihnen in der Funktionalität schlechter weg, z.B. der bekannte Autograph, und zu anderen - im Bedienkomfort. Allerdings hat die Drag Trade Library ihre Besonderheiten und das Produkt wird hoffentlich gefragt sein.
1. Ziel der Entwicklung
Ursprünglich war es geplant einen Expert Advisor zu entwickeln, der direkt auf dem Chart handeln und Ordern handhaben würde, unter Verwendung der Maus und Steuerungsobjekten, bei Beibehaltung der Benutzerfreundlichkeit und einem minimalistischen Interface. Das heißt, ein wesentliches Merkmal des Expert Advisors war die Tatsache, dass er vollständig in der Original-Sprache des Terminals entwickelt wurde und daher sicher für Benutzer war, da er keinen schädlichen Code enthalten konnte. Darüber hinaus war der Expert Advisor als kostenlose Software gedacht.
Die Arbeit an dem Projekt führte zu der Bibliothek, welche die obigen Eigenschaften kombiniert und leicht in nahezu jeden EA zu integrieren ist. Zusätzlich enthält die Bibliothek viele nützliche Funktionen, die außerhalb des Rahmens der Bibliothek verwendet werden können.
2. Struktur
Die Funktionalität der Bibliothek kann in vier Blöcke unterteilt werden:
- Trading Block
- Information Block
- Order-Abwicklung Block
- Einstellungen Block
Abb. 1. Bibliothek Funktionalität
Die Funktionalität des EA basiert auf dem gleich aufgeteilten Prinzip an Blöcken - die Benutzerschnittstelle ist in 3 unabhängige Blöcke unterteilt, die gemeinsam und unabhängig voneinander genutzt werden können, durch Deaktivieren und Aktivieren der Blöcke, wie es für den Betrieb erforderlich ist. Darüber hinaus hilft dieser Ansatz durch unnötige Verarbeitung von Blöcken verschwendete Ressourcen zu sparen, oder sogar nur minimale Ressourcen zu verwenden, wenn Funktionalitätsblöcke deaktiviert werden. Standardmäßig sind alle Funktionalitätsblöcke deaktiviert.
2.1. Prinzipien der Aktivierung / Deaktivierung von Blöcken
Alle Blöcke für Zeichnen- und Verarbeitungsfunktionen befinden sich in dem Expert Advisor. Allerding erden die Informationen und die meisten Steuerungs- und Informationsobjekte nicht in dem Haupt-Werkzeugfenster gezeichnet. Die Zeichenfläche wird durch Pseudo-Indikatoren bereitgestellt, die außerdem zum Aktivieren und Deaktivieren von Funktionsblöcken dienen. Dies bedeutet, dass, wenn ein bestimmter Indikator in dem Chart vorhanden ist, der entsprechende Funktionsblock des Expert Advisors aktiviert ist und arbeitet.
Die Indikatoren als solche werden nicht verwendet. Ihr einziger Zweck ist die Bereitstellung der Zeichenfläche.
Abb 2. Hilfsindikatoren
Es gibt einige Einschränkungen bei der Verwendung von Indikatoren. Jeder externe Indikator kann in ein Pseudo-Indikator Fenster gezogen werden, aber nicht umgekehrt, da das Vorhandensein eines Fensters durch den Namen des Pseudo-Indikators bestimmt wird und der entsprechende Funktionsblock einfach nicht aktiviert wird.
3. Benutzerschnittstelle
3.1. Expert Advisor EinstellungenDie Einstellungen wurden aus der Bibliothek entnommen, um einen separaten Funktionsblock zu bilden. Dies ermöglichte es uns tatsächlich einzelne herauszugreifen und die gesamte Funktionalität in der Bibliothek zu platzieren und die Einstellungen außerhalb zu machen, sowohl vor, als auch während des Betriebs des Expert Advisor. Zusätzlich können die Einstellungen in separate logische Blöcke unterteilt werden, ohne an der Spezifikation zu knausern.
Der Prozess selbst besteht darin, das entsprechende Skript auf dem erforderlichen Chart anzuwenden.
Im Moment gibt es 3 Einstellungen-Skripte:
- DragTrade_CommentsSettings.mq4 - kommentiert Einstellungen (anzeigte Protokolle im Trading-Unterfenster).
- DragTrade_ObjectsSettings.mq4 - allgemeine Einstellungen der Benutzeroberfläche - Stil der Steuerung und Informationsobjekte.
- DragTrade_TradeSettings.mq4 - Bibliothek Tradingeinstellungen.
The script provides a description for every property so there should be no problem figuring out how they are set.
Die Umsetzung dieser Funktion basiert auf der der Verwendung globaler Variablen des Terminals zum Speichern der Einstellungen. Dies verhängt einige Einschränkungen in der Anwendung - Linien können auf diese Weise nicht übergeben werden, das die Maximalgröße der übermittelten Informationen begrenzt ist und gleich zu dem double Typ, das heißt 8 Byte.
Ein Beispiel der Einstellung der Expert Advisor Eigenschaften ist im Folgenden zu sehen. Einstellungen für Kommentar- und Objekt-Ausgabe sind für einen ausgeführten Expert Advisor geändert:
Um in der Lage zu sein Strategien im Tester frei zu testen, ohne Angst vor dem Zurücksetzen von Parametern für das Online-Trading zu haben, gibt es eine unterschiedliche Parameterübergabe für Online- und Test-Modus. Einstellungen der Parameter für den einen, werden die den anderen nicht beeinflussen.
Deshalb, wenn Sie die Standard-Parameter im Tester ändern möchten, sollten die gleichen Skripte für den Test-Modus verwenden:
- DragTrade_TesterCommentsSettings.mq4 - kommentiert Einstellungen (anzeigte Protokolle im Trading-Unterfenster).
- DragTrade_TesterObjectsSettings.mq4 - allgemeine Einstellungen der Benutzeroberfläche - Stil der Steuerung und Informationsobjekte.
- DragTrade_TesterTradeSettings.mq4 - Bibliothek Tradingeinstellungen.
Also, die Benutzerschnittstelle ist in 3 unabhängige Bereiche unterteilt, die deaktiviert werden können:
- DragTrade_Infobar (Information Block)
- DragTrade_OrdersBar (Order-Abwicklung Block)
- DragTrade_Toolbar (Trading Block)
Als Ganzes sieht es wie folgt aus:
Werfen wir einen genaueren Blick auf sie.
Das Informationsfenster ist ein Bereich zum Anzeigen von Informationen. Dies ist der unkomplizierteste Teil der Funktionalität. Es zeigt allgemeine Konto- und Instrument-Informationen, sowie die aktuellen Bibliothek-Einstellungen.
Abb. 3. Informationsfenster
Informationen für die Anzeige können einfach erweitert werden, allerdings erfordert dies Änderungen im Code der Bibliothek.
Wenn Sie das nicht abschreckt, die Funktionalität wird durch die folgenden Funktionen dargestellt: void ClearInformation() und void DrawInformation()
3.2.2. Order-FensterDieses Fenster zeigt Informationen über aktuelle (offene) Instrument-Ordern und enthält und enthält Steuerungen für deren Abwicklung.
Abb. 4. Order-Fenster
Was Sie durch Aktivierung dieses Fensters tun können:
- Schließen aller Ordern der Orderliste, platziert für ein bestimmtes Währungspaar (nachfolgend in Übereinstimmung mit den EA Magic Number Einstellungen), einschließlich Markt- und Pending Order.
- Schließen aller Buy-Ordern
- Schließen aller Sell-Ordern
- Löschen aller Pending-Ordern
- Löschen und Schließen aller Ordern
Das folgende Video bietet eine grafische Darstellung der Funktionalität dieses Fensters:
3.2.3. Trading-FensterDieses Fenster wird für die Anzeige der Handelsfunktionalität verwendet. Es ist das wichtigste und erforderliche Fenster, da es die Hauptfunktionen der Bibliothek enthält. Die Aktivierung dieses Fensters gibt Ihnen die Möglichkeit Ordern zu platzieren und abzuwickeln, mit verschiedenen Steuerungen direkt in dem Chart.
Abb. 5. Trading Fenster
Was Sie durch Aktivierung dieses Fensters tun können:
- Platzieren und Schließen von Markt-Ordern.
- Öffnen von Pending Ordern, sowohl Stop als auch Limit. Da ich noch keinen ausreichend guten Weg zum Setzen von Stop-Ebenen gefunden habe, fehlen diese aktuell und können nur mit den integrierten Terminal-Funktionen gesetzt werden (d.h. Order-Änderungsfenster).
- Löschen von Pending-Ordern.
- Stop-Ebene von Ordern ändern.
- Auslösekurs von Limit- und Stop-Ordern ändern.
Markt-Ordern werden wie folgt platziert:
- setzen Sie den Stop Loss Kurs der künftigen Order mit dem Kurs-Zeiger (Pointer)
- überlagern Sie die Steuerung für "Markt-Order öffnen"
Eine Markt-Order wird durch einfaches Ziehen der Stop-Ebene auf die andere Seite des Kurses geschlossen.
Das folgende Video zeigt Beispiele der Abwicklung von Markt-Ordern.
Abwicklung von Buy-Ordern:
Abwicklung von Sell-Ordern:
Pending Ordern werden wie folgt platziert:
- legen Sie den Auslösekurs der künftigen Order mit dem Kurs-Zeiger fest
- überlagern Sie die Steuerung für "Stop Order öffnen", wenn Sie eine Stop Order platzieren möchten, oder für "Limit Order öffnen", wenn Sie eine Limit Order platzieren möchten.
Eine Pending Order wird durch einfaches Ziehen der Order-Linie auf die andere Seite des Kurses geschlossen.
Das folgende Video zeigt Beispiele über die Handhabung von Pending Ordern.
Handhabung von Stop Ordern:
Handhabung von Limit Ordern:
4. Integration in den Expert Advisor
Und schließlich, der interessanteste Teil.
Es ist in der Tat sehr einfach. Der Integrationsvorgang wird durch die Tatsache erheblich vereinfacht, dass nur die minimal notwendigen Einstellungen während der Integration an die Bibliothek übergeben werden. Die verbleibenden Einstellungen werden über externe Skripts abgedeckt.
Das einfachste Beispiel eines Expert Advisor kann anhand einer Shell demonstriert werden, welche die Bibliothek in einen Expert Advisor dreht. Es wird wie folgt aussehen:
//+------------------------------------------------------------------+ //| DragTrade_Example_v_1.0.mq4 | //+------------------------------------------------------------------+ #property copyright "Copyright ɠ2009, TheXpert" #property link "theforexpert@gmail.com" extern int Magic = 1111; extern int EAMagic = 1234; extern int TimesToRepeat = 3; extern int Slippage = 3; #include <DragTrade_v_1.0/DragTradeLib_v_1.0.mqh> bool Testing; int init() { Testing = IsTesting(); DragTrade_Init(Magic, EAMagic, TimesToRepeat, Slippage, "Drag Trade Example"); Comment_("Test Example of using Drag Trade Library"); return(0); } int deinit() { DragTrade_Deinit(); return(0); } int start() { DragTrade_Start(); return(0); }
Der obige Code kann als betriebsbereiter Expert Advisor zum Traden mit der Maus angewandt werden.
Ereignisse in diesem Code werden mit jedem neuen Tick behandelt.
Die wichtigsten Bibliothek Integrationspunkte:
- Die Funktionen init und deinit sind wesentlich und in dem Expert Advisor erforderlich.
- Fügen Sie die Bibliothek in die Head-Datei DragTradeLib_v_1.mqh ein und stellen Sie sicher, dass die Komponenten der Bibliothek sich alle am richtigen Ort befinden.
- Die folgenden Bibliothek-Funktionen müssen in den entsprechenden EA-Funktionen aufgerufen werden:
- DragTrade_Init
- DragTrade_Deinit
- DragTrade_Start
Die DragTrade_Init Funktion sieht aus wie folgt:
void DragTrade_Init(int magic, int eaMagic, int timesToRepeat, int slippage, string ordersComment = "");
Werfen wir einen genauen Blick auf die zu übergebenden Parameter:
- int magic - die von der Bibliothek verwendete Magic Number. Mit der Bibliothek platzierte Ordern werden diese Nummer führen. Wenn der übergebene Wert gleich -1 ist, werden die Ordern mit der Magic Number 0 geöffnet und die Filteroption wird während der Anzeige nicht verfügbar sein.
- int eaMagic - Die Magic Number der Strategie. Sie ist so eingeführt, dass die Ordern automatisch platziert werden und manuell von der implementierten Strategie unterschieden werden können. Wenn Sie möchten, dass die Strategie in der Lage ist diese Ordern zu "sehen", können Sie identische Magic Numbers einstellen oder die Rückverfolgbarkeit von zwei Magic Numbers umsetzen. Wenn der Wert -1 ist, wird die zusätzliche Magic Number nicht verwendet.
- int timesToRepeat - Handelsparameter. Die Anzahl der Versuche eine Order zu platzieren, wenn der verursachende Fehler sofort einen neuen Versuch ermöglicht.
- int slippage - Handelsparameter. Slippage.
- string ordersComment - der Kommentar für mit der Bibliothek platzierte Ordern.
Wenn Sie eine schnelle Ausführung möchten, kann die start Funktion des EAs durchgeschleift werden:
int start() { while (!IsStopped()) { DragTrade_Start(); Sleep(200); } return(0); }
Es wird allerdings unmöglich sein einen solchen EA im Tester zu testen - er wird einfrieren.
Eine Lösung kann eine Bestimmung für ein anderes Verhalten des Testers sein:
int start() { if (Testing) { DragTrade_Start(); } else { while (!IsStopped()) { RefreshRates(); DragTrade_Start(); Sleep(200); } } return(0); }
Das an den Artikel angehangene Standardpaket enthält diesen besonderen einfachsten Expert Advisor.
Darüber hinaus enthält das Paket einen Standard Expert Advisor MACD Sample mit integrierter Bibliothek und den Bibliothek-Handelsfunktionen.
Neben den für die Integration erforderlichen Funktionen, bietet die DragTradeLib_v_1.0.mqh Datei einen ganzen Satz an Funktionen, die sich als nützlich bei der Umsetzung von Handelsstrategien erweisen können, die durch die Bibliothek genutzt werden und für die Umsetzung Ihres Code verwendet werden können.
5. Bibliothek Installation
Die Installation ist einfach - Sie müssen das angehangene Archiv in Ihren Terminal-Ordner entpacken, das Terminal neu starten, falls es in Betrieb war, so dass die ausführbaren Dateien in der Liste der Dateien in dem Terminal erscheinen.
6. Lizenz
/* =============================================================================================== */ /* Copyright (c) 2010 Andrey Nikolaevich Trukhanovich (aka TheXpert) */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining a copy of this software */ /* and associated documentation files (the "Software"), */ /* to deal in the Software without restriction, including without limitation the rights */ /* to use, copy, modify, merge, publish, distribute, */ /* sublicense, and/or sell copies of the Software, and to permit persons */ /* to whom the Software is furnished to do so, subject to the following conditions: */ /* */ /* */ /* The above copyright notice and this permission notice shall be included */ /* in all copies or substantial portions of the Software. */ /* */ /* THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS */ /* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, */ /* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR */ /* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER */ /* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR */ /* IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /* =============================================================================================== */
Fazit
Die Bibliothek wurde bei der Arbeit mit einem realen Handelskonto ausprobiert und erwies sich selbst als nützliches, zuverlässiges und stabiles Tool.
Noch einmal möchte ich meine tiefe Dankbarkeit gegenüber Viktor Khabibulaevich Rustamov ausdrücken. Er war der Urheber der Idee, eine Bibliothek zu erstellen, sowie ein Tester und wertvolle Quelle der Beratung bei der Umsetzung der Idee.
Es ist eine ganze Menge an Code, also sind kleine Fehler und Störungen sehr wahrscheinlich vorhanden. Ich würde es wirklich schätzen, wenn Sie mich von ihnen wissen lassen.
Ich werde versuchen durchführbare (nicht garantierte) Code-Wartung bereitzustellen. Weitere Projektentwicklungen unter den Lizenzbedingungen durch andere Leute werden meine volle Unterstützung erhalten. Ale Kommentare und Vorschläge in Bezug auf die Bibliothek werden, so weit möglich, in zukünftigen Versionen in Betracht gezogen.
Viel Glück und einfaches Trading!
Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalartikel: https://www.mql5.com/ru/articles/1354





- 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.