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.
- 2023.01.31
- www.mql5.com
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.
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.
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.
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 |
---|---|
Klasse für die Arbeit mit den Eigenschaften des Handelskontos | |
Klasse für die Arbeit mit den Eigenschaften des Handelsinstruments | |
Klasse für die Arbeit mit den Eigenschaften der Pending-Ordern | |
Klasse für die Arbeit mit den Eigenschaften der "historischen" Ordern | |
Klasse für die Arbeit mit den Eigenschaften der offenen Position | |
Klasse für die Arbeit mit den Eigenschaften des "historischen" Deals | |
Klasse für den Handel | |
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.
- www.mql5.com
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".
Buying is done at the Ask price | Selling is done at the Bid price |
---|---|
TakeProfit >= Bid StopLoss <= Bid | TakeProfit <= Ask StopLoss >= Ask |
- 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.
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.