Schau, wie man Roboter kostenlos herunterladen kann
Finden Sie uns auf Twitter!
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
Ansichten:
1356
Rating:
(62)
Veröffentlicht:
2018.12.24 09:14
\MQL5\Include\fxsaber\Virtual\
String.mqh (0.59 KB) ansehen
Sync.mqh (5.42 KB) ansehen
Order.mqh (15.78 KB) ansehen
Orders.mqh (13.93 KB) ansehen
Virtual.mqh (23.14 KB) ansehen
\MQL5\Experts\fxsaber\
MQL5 Freelance Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance

Diese plattformübergreifende Lösung ermöglicht es, auf eine der einfachsten Arten mit einer virtuellen Handelsumgebung zu arbeiten.


Szenarien für die Nutzung einer virtuellen Handelsumgebung

  1. Real Time Tester. Das bedeutet, Sie können beobachten, was wäre, wenn der EA mit den neuesten Kursen im Tester in Echtzeit handeln würde. Auf diese Weise können Sie die Ursachen für Diskrepanzen zwischen dem realen Markt und dem Tester identifizieren. Es ist nicht nötig, auf einen neuen Tag zu warten (MT5-Testerbeschränkung) oder spezielle Tools für den Tester zu erstellen, damit er aktuelle Daten aufnehmen kann. Dementsprechend ist es nicht notwendig, den Tester wiederholt auszuführen, um Updates zu erhalten. Tatsächlich ist die virtuelle Handelsumgebung ein Echtzeit-Tester.
  2. Autooptimierung. Die virtuelle Handelsumgebung geht davon aus, dass Sie definieren, mit welchen Daten sie arbeiten soll. Daher ermöglicht Ihnen ein Array von historischen Daten, jeden TS auf ihnen in einer virtuellen Handelsumgebung auszuführen. So können Sie die Autooptimierung in Programme implementieren - ein Programm optimiert sich regelmäßig selbst, genau wie der herkömmliche Tester.
  3. Umwandlung des realen Handels in einen virtuellen (und umgekehrt). Zum Beispiel das vorübergehende Deaktivieren eines TS im Falle von Verlusten. Die Zeit bis zur Wiederfreigabe des TS kann über den Tester oder durch den Handel mit einem Mindestvolumen analysiert werden. Die virtuelle Umgebung wiederum ermöglicht es den Nutzern, den Handel in Echtzeit einzustellen und gleichzeitig den Handel in der virtuellen Handelsumgebung fortzusetzen. Dies bietet viel Komfort bei der Analyse, ob es an der Zeit ist, den TS wieder zu aktivieren, und die Möglichkeit, den realen Handel einfach wieder zu aktivieren.
  4. Vereinfachung einer Handelslogik auf einem Handelskonto. Der Markt schafft Situationen, die im Tester nicht vorhanden sind. Dazu gehören Ablehnungen und Teilausführungen. Das größte Problem ist, den realen Handel so ähnlich wie möglich zu gestalten wie denjenigen, den der TS im Tester durchführt. Im Allgemeinen unternehmen TS-Entwickler erhebliche Anstrengungen, um schwer vorhersehbare Marktnuancen zu überwinden. Tatsächlich lernen sie aus ihren eigenen Fehlern und zahlen dafür echtes Geld, da Demokonten nicht in der Lage sind, viele Dinge des realen Marktes nachzubilden. Die virtuelle Umgebung wiederum ermöglicht es uns, das perfekte Ausführungsbild zu sehen. Um die Fallstricke des realen Marktes zu umgehen, brauchen wir also den Zugang zu diesem perfekten Bild und einen hochwertigen Synchronizer (Kopierservice) von der virtuellen Umgebung zur realen. Daher sind virtuelle Handelsumgebungen eine große Hilfe bei der Bewältigung schwieriger Situationen auf dem realen Markt.
  5. Testerbeschleunigung. Der eingebaute Tester ist ein universelles Werkzeug. Das bedeutet, dass er das Handelsumfeld so vollständig wie möglich nachbilden muss. Dies ist mit hohen Kosten in Form von Geschwindigkeitsbegrenzungen verbunden. Bei der Entwicklung und Analyse eines TS ist diese hohe Genauigkeit erschöpfend. Es gibt verschiedene Möglichkeiten, den Tester zu beschleunigen, darunter benutzerdefinierte Symbole (bis zu Hunderten von Prozent) und virtuelle Handelsumgebungen (Zehntel und Hunderte von Prozent), die es sich leisten können, etwas aus Gründen der Geschwindigkeit nicht zu berücksichtigen. Die Testerbeschleunigung ist ein wesentlicher Vorteil von virtuellen Handelsumgebungen, da sie Computerressourcen und vor allem Zeit spart.
  6. TS Umkehrung. Eine virtuelle Handelsumgebung ermöglicht die einfache Umkehrung jeder TS.
  7. Verwendung mehrerer TS auf einem Netting-Konto. Eine virtuelle Handelsumgebung vereinfacht den Start einer beliebigen Anzahl von TS auf einem Netting-Konto erheblich. TS stören sich nicht gegenseitig.
  8. Unidirektionale Positionen auf einem Netting-Konto. Sie können mehrere Positionen in einer Richtung eröffnen. Jeder von ihnen wird eigene Magicnummer, OpenTime, OpenPrice, Kommentar, etc. haben. Dies ermöglicht z.B. die Erstellung von Raster TS auf einem Netting-Konto, bei dem jeder TP einer unidirektionalen Position unterschiedlich ist.
  9. Hiding Limit/Stop/SL/TP Levels. Wenn es eine Aufgabe gibt, signifikante Trading Levels zu verstecken, kann sie schnell mit einer virtuellen Handelsumgebung gelöst werden.
  10. Starten von Hedge TS auf einem Netting-Konto. Alle TS werden in einer virtuellen Umgebung gestartet. Netting reale Umgebung synchronisiert sich mit einer virtuellen.
  11. Wiederaufnahme des TS-Vorgangs nach (abnormalem) Stopp. Die Logik vieler TS hängt davon ab, was sie vorher gemacht haben. Selbst, wenn Sie einen TS deaktivieren und sofort neu starten, erhalten Sie möglicherweise nicht das Ergebnis, das Sie erhalten hätten, wenn der TS ohne eine Abschaltung funktioniert hätte. Eine virtuelle Handelsumgebung ermöglicht es Ihnen, diese Aufgabe zu lösen. Beim Start läuft der TS temporär in einer virtuellen Umgebung auf einer Preishistorie bis zum aktuellen Zeitpunkt. Dann wird er dauerhaft in die reale Handelsumgebung verschoben. Dies kann beispielsweise viele anormale Situationen lösen, in denen TS heruntergefahren und neu gestartet wird.


Umsetzung

Die Bibliothek ermöglicht es, eine virtuelle Handelsumgebung zu schaffen und so zu handeln, als wäre es eine reale Handelsumgebung. Die Bibliotheksfunktionalität ist nicht neu, obwohl die plattformübergreifende Bibliothek eine Eigenschaft aufweist, die manchmal wichtig sein kann: Sie müssen nichts studieren, um zu benutzen. Es genügt, die Handelslogik des MT4 (nicht die des MT5) zu kennen.

Die MT4-Handelslogik wurde für den virtuellen Handel gewählt, da sie bequemer ist und die Entwicklung plattformübergreifender EAs mit Leichtigkeit ermöglicht.


Beispiel

Die Funktionalität der Bibliothek kann traditionell durch ein vorab vorbereitetes Beispiel demonstriert werden.

    // Starten des TS in realer und virtueller Handelsumgebung
    
    #include <MT4Orders.mqh> // https://www.mql5.com/de/code/16006
    #include <fxsaber\Virtual\Virtual.mqh> // Virtuelle Handelsumgebung
    
    input double Lots = 1;
    input int Interval = 100;  // Positionsdauer
    input bool Example = true; // Welches Codebeispiel ist zu wählen
    
    // TS umkehren
    void System()
    {
      if (!OrderSelect(OrdersTotal() - 1, SELECT_BY_POS))
        OrderSend(_Symbol, OP_BUY, Lots, SymbolInfoDouble(_Symbol, SYMBOL_ASK), 100, 0, 0); // Gibt es keine offenen Positionen, öffne eine
      else if (TimeCurrent() - OrderOpenTime() > Interval) // Wenn die Positionsdauer die angegebene Zeit überschreitet
      {
        // Position umkehren
        OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 100);
        OrderSend(_Symbol, 1 - OrderType(), Lots, OrderClosePrice(), 100, 0, 0);
      }
    }
    
    void OnTick()
    {
      static const int handle = VIRTUAL::Create(); // Virtuelle Handelsumgebung erstellen. 0 - reale Handelsumgebung
    
      if (Beispiel)
      {
        if (VIRTUAL::SelectByHandle()) // Reale Handelsumgebung wurde gewählt
          System();                    // Start des TS in der gewählten Handelsumgebung (reale)
    
        if (VIRTUAL::SelectByHandle(handle)) // Virtuelle Handelsumgebung gewählt
        {
          VIRTUAL::NewTick();      // neuer Tick wird der virtuellen Handelsumgebung übergeben
          System();                // Start des TS in der gewählten Handelsumgebung (virtuelle)
        }
      }
      else // Alternative Aufzeichnung derselben Aktionen.
        // Alle verfügbaren Handelsumgebungen ausführen.
        for (int i = 0; i <= VIRTUAL::Total(); i++)
          if (VIRTUAL::SelectByIndex(i)) // Auswahl der geeigneten Handelsumgebung
          {
            VIRTUAL::NewTick(); // neuer Tick wird der virtuellen Handelsumgebung übergeben
    
            System(); // Start des TS in der gewählten Handelsumgebung
          }
    
      Comment(VIRTUAL::ToString()); // Statusanzeige der virtuellen Handelsumgebung auf dem Chart
    }


Dies ist eine plattformübergreifende Umkehrung des EA. Seine Handelslogik lässt sich dank des MT4-Stils mit wenigen Zeilen (SystemFunktion) beschreiben. Der EA startet TS gleichzeitig in der realen und der virtuellen Handelsumgebungen. Dies ist im MT4 oder MT5 Tester (STRG+F5) gut zu erkennen.

Der Screenshot zeigt, dass der Handel in realen und virtuellen Umgebungen identisch ist.


Beachten Sie, dass der TS-Code gleich bleibt. Es wird nur eine Handelsumgebung ausgewählt: eine reale oder beliebig viele virtuelle.

Der hier angezeigte Code ist redundant - die beiden Versionen zeigen lediglich die Logik der Arbeit mit der Bibliothek.


Testerbeschleunigung

Da das Szenario Testerbeschleunigung (siehe S. 5 oben) häufiger als andere benötigt werden, haben wir die Möglichkeit hinzugefügt, jede TS in eine virtuelle Umgebung umzuschalten und zurück, indem wir zwei Zeilen am Anfang des Codes hinzufügen.

#define VIRTUAL_TESTER /// Start in der virtuellen Handelsumgebung
#include <fxsaber\Virtual\Virtual.mqh> /// Virtuelle Handelsumgebung

Die hervorgehobene Zeichenkette erlaubt es dem Benutzer, den ursprünglichen TS-Code nicht zu stören.

Dieser Modus wurde speziell für den Tester entwickelt. Es wird davon ausgegangen, dass eine langfristige Optimierung mit der aktivierten (VirtualTester = true) virtuellen Umgebung anstelle einer realen gestartet wird. Dies führt zu einem deutlichen Anstieg der Optimierungsgeschwindigkeit (Zeit). Die erhaltenen Ergebnisse (OnTester-Kriterium - Saldo) können dann für Standard-Einzelläufe im realen Handelsumfeld verwendet werden (VirtualTester = falsch).


TS-Umkehrung

Die gleichen beiden Zeichenketten, die den Tester beschleunigen sollen, ermöglichen die Lösung eines weiteren häufigen Problems - die TS-Umkehrung.

ReverseDeals = true Der Modus aktiviert die Umkehrung der Deals. Der interne Algorithmus ist wie folgt:

  • Das ursprüngliche EA handelt innerhalb der virtuellen Umgebung wie in der realen.
  • In der realen Umgebung werden die Positionen angezeigt, die zu den entsprechenden Positionen in der virtuellen Umgebung invers sind.

Somit wird die EA-Logik in keiner Weise verletzt. Gleichzeitig können wir sehen, was die TS-Umkehrung bietet. Dieser Modus ist auch für den Tester gedacht.


Eigenschaften

  • Nicht alles ist in dieser virtuellen Handelsumgebung implementiert, verglichen mit dem integrierten Tester.
  • Beide Modi, Hedge und Netting, werden unterstützt. So können Sie beispielsweise in MT4/5 gleichzeitig Netting und Hedging für virtuelle Umgebungen erstellen.
  • Keine Begrenzung der Anzahl der virtuellen Umgebungen.
  • Keine Ausführung nach letzten Kursen, wie es manchmal im MT5-Tester der Fall ist, da der letzte Preis zu keinem Zeitpunkt relevant ist.
  • Limit-Orders und TakeProfit-Level werden immer zu den angegebenen Preisen ohne Slippage ausgeführt. Dadurch entfällt der Eindruck, dass es sich bei einigen TS um einen Gral handelt, der mit dem MT5-Tester erzeugt wurde.
  • Stop-Orders und StopLoss-Level werden immer zum ersten Preis ausgeführt (negative Slippages), um Tester-Grails zu vermeiden.
  • Das Setzen von Pending-Orders und SL/TP-Levels zu den aktuellen Preisen startet ihre Akzeptanz sofort, im Gegensatz zu einigen MT5-Tester-Betriebsarten. Ein solches Verhalten entspricht den Marktgegebenheiten.

Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/22577

MAMy Expert MAMy Expert

Ein ES auf Basis des Indikators MAMy v.3

TrendLineAlert_V2 TrendLineAlert_V2

Der Indikator zeigt die Steigung der Trendlinie. Seine Parameter werden eingestellt, wenn der Indikator von einem Händler gestartet wird. Die Trendlinie definiert den Auslöser des Signals. Der Trendliniendurchbruch aktiviert Signale, die von E-Mails und Push-Benachrichtigungen begleitet werden.

MAMy v3 MAMy v3

Der Indikator basiert auf drei gleitenden Durchschnitten.

RNN RNN

Ein Expert Advisor auf Basis des iRSI (Relative Strength Index, RSI) und einem kleinen Neuronalen Netz