TradeManager

 

Wenn man einen EA oder etwas ähnliches anbieten möchte, dann muss man sich bei MQL5 selbst um die Positionen und dergleichen kümmern. Daher finde ich es sinnvoll eine mqh-Datei im Include-Ordner zu haben, die sich um die Handels-Routinen kümmert, alle Checks durchführt und man für seinen EA nur einen Import benötigt und dann Methoden wie EnterLong, EnterShort, ClosePosition und GetPosition o.ä. aufrufen kann.

Nun meine Frage: Gäbe es Interesse innerhalb des Forums, gemeinsam darüber nachzudenken und zu tüfteln, wie so ein TradeManager aussehen könnte, was er benötigt und wie man das am besten implementiert?

Für den Anfang kann man sich kleine Ziele setzen und nur mit Market-Orders arbeiten. Das Ziel wäre dann ein unter der Creative-Common-Lizenz stehender Quellcode in der Code-Basis, den sich jeder herunterladen kann.

 

Hat nicht Christian gerade so etwas empfohlen: https://www.mql5.com/de/forum/440832?

Außerdem hast Du schon gesucht? Du bist sicher nicht der erste der so eine Idee hat.

Der beste Positons-Rechner den ich kenne.
Der beste Positons-Rechner den ich kenne.
  • 2023.01.31
  • www.mql5.com
Für alle, die gerne manuell Traden, habe ich einen guten Tipp. https://www.earnforex...
 

Nein, Christian hat einen EA empfohlen. Mir geht es aber um eine mqh-Datei, die man in jeden EA importieren kann. Gefunden habe ich so etwas bisher noch nicht, obwohl ich gesucht habe. Ich finde es überhaupt seltsam, dass so eine Datei nicht standardmäßig im MetaTrader enthalten ist.

Außerdem wird immer wieder auf den Artikel über die Checks, die ein Trading-Roboter durchlaufen muss, hingewiesen. Gäbe es den von mir vorgeschlagenen TradeManager bereits, dann wäre das so nicht sinnvoll, da bereits eine Implementierung existierte, auf die verwiesen werden könnte.

Edit: Eine Basisversion habe ich bereits programmiert, aber mir geht es um den Austausch und die gemeinsame Verbesserung, die man dann für andere zugänglich macht. Und eventuell bzw. hoffentlich würde ich beim gemeinsamen Austausch auch noch etwas dazulernen.
 
Aber dieser hat doch mehrere mqh, mit denen er seinen Handel realisiert.
 
Ja wenn du das schin vorschlägst, dann lad doch deine mqh hoch. Nehm an du musst da ja einige haben bei deinen vielen Produkten im Markt
 

Ich sehe da keinen Bedarf an einem neuen Trade-Manager.


Es sei denn, du möchtest andere dazu animieren, dir dein Produkt zu verbessern.

 

@Carl

Die Datei Trade.mqh hat die notwendigen Überprüfungen (Checks) nicht. Die Datei Expert.mqh benötigt meines Wissens nach Signale und dergleichen, um richtig zu funktionieren, und die Datei ExpertTrade.mqh hat bspw. keine ClosePosition Methode.


@Amando

Ich habe nur vier EAs und bei den ersten habe ich tatsächlich die Handelsroutinen in die mq5-Datei integriert. Das mit der mqh-Datei im Include-Ordner ist mir erst später gekommen. Im Anhang habe ich mal eine Basisversion eingefügt, welche nur mit Market-Orders handelt und die keine anderen Positionen schließt, außer diejenigen, welche sie selbst geöffnet hat, und daher im Netting-Modus nur dann eine Position eröffnet, wenn keine andere offen ist.


@Christian

Wenn ich andere dazu animieren kann, etwas dazu beizutragen, einen guten Artikel mitsamt Quellcode hervorzubringen, welcher die Verwendung von Trade.mqh und die Implementierung von Handelsroutinen mitsamt der dazugehörigen Überprüfungen obsolet macht, dann wäre das meines Erachtens sehr viel wert. Wie bereits gesagt: Ich finde es seltsam, dass es so eine Datei nicht schon längst gibt.

Dateien:
 

Ein kleiner Vermerk zu der Methode CheckStopsLevel:

   bool CheckStopsLevel(const double closePrice, const double stopLoss, const double takeProfit, const ulong slippage = 0) {
      bool isSLChecked = false, isTPChecked = false;
      uint stopsLevel = (int)SymbolInfoInteger(symbol, SYMBOL_TRADE_STOPS_LEVEL);
      
      if (stopLoss == 0.0) isSLChecked = true;
      else if (MathAbs(closePrice - stopLoss) > (stopsLevel + slippage) * point) isSLChecked = true;
      if (takeProfit == 0.0) isTPChecked = true;
      else if (MathAbs(closePrice - takeProfit) > (stopsLevel + slippage) * point) isTPChecked = true;;
      return (isSLChecked && isTPChecked);
   }

Mir ist aufgefallen, dass die Check-Methode aus "Checks a trading robot must pass ..." nicht die mögliche Slippage berücksichtigt. Angenommen der StopLoss ist so groß, dass dies nicht relevant sein kann, dann ist diese Überprüfung so oder so völlig unnötig. Angenommen der StopLoss ist nicht so groß, dann sollte man die Slippage mitberücksichtigen. Denn ansonsten kann die Slippage in Richtung StopLoss gehen und dafür sorgen, dass die Market-Order mit einer "Invalid Stops" Fehlermeldung abgelehnt wird. Und genau das sollen die Checks ja vermeiden.

 
Benjamin Fotteler #:

Ein kleiner Vermerk zu der Methode CheckStopsLevel:

Mir ist aufgefallen, dass die Check-Methode aus "Checks a trading robot must pass ..." nicht die mögliche Slippage berücksichtigt. Angenommen der StopLoss ist so groß, dass dies nicht relevant sein kann, dann ist diese Überprüfung so oder so völlig unnötig. Angenommen der StopLoss ist nicht so groß, dann sollte man die Slippage mitberücksichtigen. Denn ansonsten kann die Slippage in Richtung StopLoss gehen und dafür sorgen, dass die Market-Order mit einer "Invalid Stops" Fehlermeldung abgelehnt wird. Und genau das sollen die Checks ja vermeiden.

Kennst du diese Klassen? 

Die sind schon sehr mächtig. 


Handelsklassen

Dieser Abschnitt enthält die technischen Details der Arbeit mit Handelsklassen und die Beschreibungen der Komponenten der Standardbibliothek MQL5.

Durch die Verwendung der Handelsklassen sparen Sie Zeit bei der Entwicklung von benutzerdefinierten Anwendungen (Expert Advisors).

Die Standardbibliothek MQL5 (in Bezug auf Handelsklassen) befindet sich im Arbeitsverzeichnis des Terminals im Ordner Include\Trade.

Klasse/Gruppe

Beschreibung

CAccountInfo

Klasse für die Arbeit mit den Eigenschaften des Handelskontos

CSymbolInfo

Klasse für die Arbeit mit den Eigenschaften des Handelsinstruments

COrderInfo

Klasse für die Arbeit mit den Eigenschaften der Pending-Ordern

CHistoryOrderInfo

Klasse für die Arbeit mit den Eigenschaften der "historischen" Ordern

CPositionInfo

Klasse für die Arbeit mit den Eigenschaften der offenen Position

CDealInfo

Klasse für die Arbeit mit den Eigenschaften des "historischen" Deals

CTrade

Klasse für den Handel

CTerminalInfo

Klasse für den Zugriff auf die Parameter der Terminal-Umgebung


Das ist doch das was du suchst.


Dann könnte man überlegen ob man daraus einen "Manager" Baut.

Nachschlagewerk über die MQL5 - wie verwendet man die algorithmische/automatische Handelssprache für MetaTrader 5
Nachschlagewerk über die MQL5 - wie verwendet man die algorithmische/automatische Handelssprache für MetaTrader 5
  • www.mql5.com
Nachschlagewerk über die MQL5 - wie verwendet man die algorithmische/automatische Handelssprache für MetaTrader 5
 
Benjamin Fotteler #:


Wenn ich andere dazu animieren kann, etwas dazu beizutragen, einen guten Artikel mitsamt Quellcode hervorzubringen, welcher die Verwendung von Trade.mqh und die Implementierung von Handelsroutinen mitsamt der dazugehörigen Überprüfungen obsolet macht, dann wäre das meines Erachtens sehr viel wert. Wie bereits gesagt: Ich finde es seltsam, dass es so eine Datei nicht schon längst gibt.

Kleiner Hinweis dazu.


Metaquotes verdient direkt an den Freelancer Aufträgen. Also haben sie kein Interesse, alles fertig zur Verfügung zu stellen.


Denke darüber mal nach wenn du etwas "vermisst".

 
Die Funktion, die Du kritisierst, arbeitet mit Ask und Bid statt Slippage:
Buying is done at the Ask price
Selling is done at the Bid price
TakeProfit >= Bid
StopLoss <= Bid
TakeProfit <= Ask
StopLoss >= Ask
Das bedeutet, dass so, ohne den Slippage-Wert direkt zu verwenden, er tatsächlich berücksichtigt wird, da Slippage = Ask-Bid.