TradeManager - Seite 3

 

Durch den Thread von Carl über die CLOSE_BY Funktionalität ist mir etwas bewusst geworden, was ich zuvor nur vermutet habe.

Man kann einen BasicTradeManager schreiben, der nur mit MarketOrders handelt und im Hedging-Modus nur offene Positionen in ein und dieselbe Richtung offen hält. Hier könnten alle Account-Typen ohne großen Aufwand bedient werden.

Aber sobald es komplizierter wird, müsste man das ganze splitten in einen NettingTradeManager, einen FIFOTradeManager und einen HedgingTradeManager. Denn was im vollen Hedging-Modus geht, geht nicht notwendiger Weise im FIFO-Modus und eventuell auch nicht im Netting-Modus. Daher könnte man die Stärken der einzelnen Modi nur dann ohne großen Aufwand nutzen, wenn man keine Kompatibilität zueinander fordert. Aber wenn man die Stärken der einzelnen Modi erhalten will und einen einzigen TradeManager haben möchte, so müsste man die Kompatibilität erst künstlich und kompliziert durch verschiedene Tracking-Algorithmen erzeugen, bspw. einen Stop-Loss für eine gegenläufige Position oder partielle Take-Profits im Netting-Modus.

 
Benjamin Fotteler #:

Durch den Thread von Carl über die CLOSE_BY Funktionalität ist mir etwas bewusst geworden, was ich zuvor nur vermutet habe.

Man kann einen BasicTradeManager schreiben, der nur mit MarketOrders handelt und im Hedging-Modus nur offene Positionen in ein und dieselbe Richtung offen hält. Hier könnten alle Account-Typen ohne großen Aufwand bedient werden.

Aber sobald es komplizierter wird, müsste man das ganze splitten in einen NettingTradeManager, einen FIFOTradeManager und einen HedgingTradeManager. Denn was im vollen Hedging-Modus geht, geht nicht notwendiger Weise im FIFO-Modus und eventuell auch nicht im Netting-Modus. Daher könnte man die Stärken der einzelnen Modi nur dann ohne großen Aufwand nutzen, wenn man keine Kompatibilität zueinander fordert. Aber wenn man die Stärken der einzelnen Modi erhalten will und einen einzigen TradeManager haben möchte, so müsste man die Kompatibilität erst künstlich und kompliziert durch verschiedene Tracking-Algorithmen erzeugen, bspw. einen Stop-Loss für eine gegenläufige Position oder partielle Take-Profits im Netting-Modus.

Das ist so nicht ganz richtig. Man kann z.B. den Account Margen Mode abfragen und so eine Basis schreiben die je nach Account Typ unterschiedlich handelt. Es werden somit nicht mehrere Manager benötigt sondern nur einer und die passenden Abfragen.

Davon abgesehen behandeln gute "TradeManager" jede Position als einzelne. Dadurch kann man im Hedging neue Positionen in die selbe oder auch Gegenrichtung eröffnen oder bereits bestehende Positionen einzeln schließen. Im Netting kann man in dem Vergleich eine bereits geöffnete Position im Volumen erhöhen oder auch im Volumen verringern.

 
Es ist somit Problemlos möglich im Netting Mode mit Pending Orders das Volumen zu erhöhen oder zu verringern sowie die Pending Orders als Take Profit oder auch Trailing Take Profit zu verwenden um damit zum Beispiel Teilschließungen einer offenen Position durchzuführen.

Im Hedging kann man bei einzelner Kontrolle der Positionen das selbe durchführen nur geht das nicht durch Volumen bedingte Schließungen sonder partielle Teilschließungen der Positionen in Bezug auf andere Positionen.


 

Da hast du natürlich recht. Ich merke, dass ich mich ungünstig ausgedrückt habe. Was ich eigentlich meinte, war das Imitieren im Netting-Modus von mehreren Positionen mit eigenen StopLosses und TakeProfits, die veränderbar sind, und in einer komplexere Hedging-Strategie verwendet werden. Das ist natürlich möglich. Aber der Kerngedanke war, dass die Kompatibilität der drei Modi nur dann erreicht wird, ohne Abstriche an den Stärken der einzelnen Modi machen zu müssen, wenn man komplexere Tracking-Algorithmen erzeugt.

Und hier bin ich noch der Meinung, dass man 3 gesplittete mqh-Dateien nutzen sollte, welche die gemeinsame Funktionalität von einer BasicTradeManager-Klasse vererben, und die man dann in einer übergeordneten FullTradeManager.mqh vereint und kompatibel zueinander macht. Dann hätte man die Teilbereiche sauber abgetrennt, ohne sie zu verwursteln, aber die übergeordnete FullTradeManager.mqh wäre dennoch ziemlich komplex und aufwendig.

 
Benjamin Fotteler #:

Da hast du natürlich recht. Ich merke, dass ich mich ungünstig ausgedrückt habe. Was ich eigentlich meinte, war das Imitieren im Netting-Modus von mehreren Positionen mit eigenen StopLosses und TakeProfits, die veränderbar sind, und in einer komplexere Hedging-Strategie verwendet werden. Das ist natürlich möglich. Aber der Kerngedanke war, dass die Kompatibilität der drei Modi nur dann erreicht wird, ohne Abstriche an den Stärken der einzelnen Modi machen zu müssen, wenn man komplexere Tracking-Algorithmen erzeugt.

Und hier bin ich noch der Meinung, dass man 3 gesplittete mqh-Dateien nutzen sollte, welche die gemeinsame Funktionalität von einer BasicTradeManager-Klasse vererben, und die man dann in einer übergeordneten FullTradeManager.mqh vereint und kompatibel zueinander macht. Dann hätte man die Teilbereiche sauber abgetrennt, ohne sie zu verwursteln, aber die übergeordnete FullTradeManager.mqh wäre dennoch ziemlich komplex und aufwendig.

Naja, das kann jeder machen wie er möchte.

Ich unterscheide die einzelne Modelle lieber anhand der Positionen bzw. Orders und der damit verbunden Eigenschaften. Dadurch kann ich eine Strategie nutzen und durch unterschiedliche Parameter jede Position bzw. Order unterschiedlich behandeln. Sprich Position oder Order abfragen, Ausgangszustand ermitteln und dann die Strategie Triggern und völlig unterschiedliche Ergebnisse der Strategie erzeugen. Dadurch habe ich eine Strategie die bei jeder Position anders reagiert bzw. die Daten für diese erzeugt. So Unterscheide ich z.B. auch das eröffnen von Positionen (direkte Eröffnung) zu dem setzen von Orders (Stop/ Limit Orders). Preislevel des Einstiegs berechnen und dann je nach dem ob es in Range ist oder nicht Positionen oder Pending Orders erzeugen. Das Trailing kann in dem Bezug auch wieder über eine Strategie abgedeckt werden.

Ob man das nun mit einer oder mehrerer Include Dateien macht ist dann eine Frage der Performanz, da man bei vielen Strategien natürlich alle Abfragen muss und ggf. auch dadurch Überschneidungen haben kann bei der Order Ausführung bzw. der Modifikation.