Traders Kit: Drag Trade Library

TheXpert | 22 April, 2016

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:

  1. Trading Block
  2. Information Block
  3. Order-Abwicklung Block
  4. 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 Einstellungen

Die 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:

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:

3.2. Funktionalität

Also, die Benutzerschnittstelle ist in 3 unabhängige Bereiche unterteilt, die deaktiviert werden können:

Als Ganzes sieht es wie folgt aus:


Werfen wir einen genaueren Blick auf sie.

3.2.1. Informationsfenster

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

Dieses 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:

Das folgende Video bietet eine grafische Darstellung der Funktionalität dieses Fensters:

3.2.3. Trading-Fenster

Dieses 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:

Markt-Ordern werden wie folgt platziert:

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:

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:

  1. DragTrade_Init
  2. DragTrade_Deinit
  3. 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:

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!