Dokumentation
Anwendungen
Zuletzt aktualisiert am 21. 12. 2021 von clonex / Ivan Hudec
ATR-Volatilität Einfaches Sizing
Inhalt der Seite
In Situationen, in denen die Volatilität kurzfristig steigt oder fällt, kann es sinnvoll sein, die Positionsgröße zu ändern. Im folgenden Tutorial zeigen wir Ihnen ein einfaches Snippet in StrategyQuant X x, mit dem Sie die Größe eines Trades erhöhen/verringern können. Das Snippet können Sie herunterladen hier.
Schritt 1 - Neues Snippet für die Geldverwaltung erstellen
Öffnen Sie CodeEditorklicken Sie auf Neu erstellen und wählen Sie Geld-Management Option ganz unten. Name ATRVolatilitätGröße.
Dadurch wird ein neues Snippet erstellt ATRVolatilitätGröße.java im Ordner Benutzer/Schnipsel/SQ/Geldverwaltung
Schritt 2 - Parameter definieren
An dieser Stelle definieren wir die Parameter, die wir später bei der Implementierung des Snippets verwenden werden. In diesem Fall werden wir Folgendes definieren
- Größe - der Standardwert für die Handelsgröße.
- Multiplikator - Multiplikator, den wir verwenden, um die Handelsgröße zu ändern.
- FastATR- Schneller ATR-Zeitraum
- SlowATR- Langsamer ATR-Zeitraum
@ClassConfig(name="ATR Volatility Sizing", display="ATR Volatility Sizing: #Size# lots with multiplication #Multiplier#") @Help("<b>ATR-Volatilitätsberechnung</b>") @Description("ATR Volatility Sizing, #Size# und #Multiplier#") @SortOrder(100) public class ATRVolatilitySizing extends MoneyManagementMethod { @Parameter(defaultValue="0.1", minValue=0.01d, name="Ordergröße", maxValue=1000000d, step=0.1d, category="Default") @Help("Ordergröße (Anzahl der Lots für Forex)") public double Size; @Parameter(defaultValue="0.1", minValue=0.01d, name="Multiplier", maxValue=1000, step=0.1d, category="Default") @Help("Multiplikator") public double Multiplikator; @Parameter(defaultValue="5", minValue=2, name="Fast ATR Period", maxValue=480, step=1, category="Default") @Hilfe("Schneller ATR-Zeitraum") public int FastATR; @Parameter(defaultValue="20", minValue=2, name="Slow ATR Period", maxValue=480, step=1, category="Default") @Help("Langsamer ATR-Zeitraum") public int SlowATR;
Schritt 3 - Implementierung der Methode double computeTradeSize
Bei dieser Methode geben Sie die Losgröße an. Die Parameter der Methode sind erwähnenswert.
- StrategyBase strategy ist die Basisklasse für die Strategie, von ihr gibt es abgeleitete Klassen, die zusätzliche Funktionen implementieren
String-Symbol - das Symbol, mit dem die Strategie bestellt wurde - byte orderType
- doppelter Preis - der Preis bei der Eröffnung des Geschäfts
- Doppelter Sl - Stop Loss
- double tickSize tick size
- double pointValue - Wert des Punktes.
Mit dieser Methode können wir einfachere, aber auch komplexere Berechnungen durchführen. In unserem Fall geben wir den vorherigen Schlusskurs und zwei verschiedene ATR-Werte ein. Wenn die kurzfristige ATR höher ist als die langfristige ATR, ändern wir die Positionsgröße.
@Override public double computeTradeSize(StrategyBase strategy, String symbol, byte orderType, double price, double sl, double tickSize, double pointValue) throws Exception { double tradeSize; // Vorherigen Schlusskurs ermitteln double prevClose = strategy.MarketData.Chart(symbol).Close(1); // liefert gerundete ATR mit langsamerer Periode double slowValueATR = SQUtils.round(strategy.getATRValue(strategy.MarketData.Chart(symbol),SlowATR, 1), 5); // gerundete ATR mit schnellerer Periode erhalten double fastValueATR = SQUtils.round(strategy.getATRValue(strategy.MarketData.Chart(symbol),FastATR, 1), 5); // wenn die Short-Volatilität nach oben schnellt, dann die Größe des Handels ändern if(fastValueATR>slowValueATR){ tradeSize = Größe*Multiplikator; } // sonst nichts tun sonst tradeSize = Size; // Rückgabe der Handelsgröße return tradeSize; }
Schritt 4 - Verwendung des ATR Volatility Sizing Snippets
Nach dem Neustart von SQX finden Sie das neue Snippet auf der Registerkarte Geldverwaltung.
In der nachstehenden Grafik sehen Sie, wie sich der Umfang der Geschäfte verändert.
Kommentierter Code
/* * Copyright (c) 2017-2018, StrategyQuant - Alle Rechte vorbehalten. * * Der Code in dieser Datei wurde in dem guten Glauben erstellt, dass er korrekt ist und das tut, was er soll. * Wenn Sie einen Fehler in diesem Code gefunden haben ODER Sie einen Verbesserungsvorschlag haben ODER Sie möchten * Ihren eigenen Codeschnipsel in unsere Standardbibliothek aufnehmen möchten, kontaktieren Sie uns bitte unter: * https://roadmap.strategyquant.com * * Dieser Code kann nur innerhalb von StrategyQuant-Produkten verwendet werden. * Jeder Besitzer einer gültigen (kostenlosen, Test- oder kommerziellen) Lizenz für ein StrategyQuant-Produkt * darf diesen Code ohne Einschränkungen frei verwenden, kopieren, modifizieren oder davon abgeleitete Arbeiten erstellen, * in allen StrategyQuant-Produkten zu verwenden und seine Änderungen oder abgeleiteten Arbeiten * mit der StrategyQuant-Gemeinschaft zu teilen. * * DIE SOFTWARE WIRD OHNE MÄNGELGEWÄHR BEREITGESTELLT, OHNE JEGLICHE AUSDRÜCKLICHE ODER STILLSCHWEIGENDE GARANTIE, * EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF DIE GARANTIEN DER MARKTGÄNGIGKEIT, DER EIGNUNG FÜR EINEN BESTIMMTEN * ZWECK UND NICHTVERLETZUNG VON RECHTEN DRITTER. IN KEINEM FALL SIND DIE AUTOREN HAFTBAR FÜR JEGLICHE ANSPRÜCHE, SCHÄDEN * ODER ANDERE HAFTUNG, OB IN EINER KLAGE AUS VERTRAG, UNERLAUBTER HANDLUNG ODER ANDERWEITIG, DIE AUS, * AUS ODER IN VERBINDUNG MIT DER SOFTWARE ODER DER NUTZUNG ODER DEM SONSTIGEN UMGANG MIT DER SOFTWARE. * */ Paket SQ.MoneyManagement; import com.strategyquant.lib.*; import com.strategyquant.datalib.*; import com.strategyquant.tradinglib.*; @ClassConfig(name="ATR Volatility Sizing", display="ATR Volatility Sizing: #Size# lots with multiplication #Multiplier#") @Help("<b>ATR-Volatilitätsberechnung</b>") @Description("ATR Volatility Sizing, #Size# und #Multiplier#") @SortOrder(100) public class ATRVolatilitySizing extends MoneyManagementMethod { @Parameter(defaultValue="0.1", minValue=0.01d, name="Ordergröße", maxValue=1000000d, step=0.1d, category="Default") @Help("Ordergröße (Anzahl der Lots für Forex)") public double Size; @Parameter(defaultValue="0.1", minValue=0.01d, name="Multiplier", maxValue=1000, step=0.1d, category="Default") @Help("Multiplikator") public double Multiplikator; @Parameter(defaultValue="5", minValue=2, name="Fast ATR Period", maxValue=480, step=1, category="Default") @Hilfe("Schneller ATR-Zeitraum") public int FastATRPeriod; @Parameter(defaultValue="20", minValue=2, name="Slow ATR Period", maxValue=480, step=1, category="Default") @Help("Langsamer ATR-Zeitraum") public int SlowATRPeriod; //------------------------------------------------------------------------ //------------------------------------------------------------------------ //------------------------------------------------------------------------ @Override public double computeTradeSize(StrategyBase strategy, String symbol, byte orderType, double price, double sl, double tickSize, double pointValue) throws Exception { double tradeSize; // Vorherigen Schlusskurs ermitteln double prevClose = strategy.MarketData.Chart(symbol).Close(1); // liefert gerundete ATR mit langsamerer Periode double slowValueATR = SQUtils.round(strategy.getATRValue(strategy.MarketData.Chart(symbol),SlowATRPeriod, 1), 5); // gerundete ATR mit schnellerer Periode erhalten double fastValueATR = SQUtils.round(strategy.getATRValue(strategy.MarketData.Chart(symbol),FastATRPeriod, 1), 5); // wenn die Short-Volatilität nach oben schnellt, wird die Handelsgröße angepasst if(fastValueATR>slowValueATR){ tradeSize = Größe*Multiplikator; } // sonst Größe gleich Standardgröße sonst tradeSize = Size; // Rückgabe der Handelsgröße return tradeSize;
War dieser Artikel hilfreich? Der Artikel war nützlich Der Artikel war nicht nützlich
Ausgezeichnet !!!!!!!!!!!!!!
Das ist genau das, was ich brauche. Danke clonex
Hallo, wie kann ich diese Datei im CODE EDITOR kompilieren? Vielen Dank für Ihre Aufmerksamkeit
Danke clonex / Ivan Hudec.
Ich weiß nicht, warum ich meine Strategie nicht im mq5-Format speichern kann. Der Fehler ist "Einer oder mehrere Blöcke, die die Strategie verwendet, ist nicht in MQL-Code implementiert", "Template inclusion failed (for parameter value "MoneyManagement/ATRVolatilitySizing_variables.tpl").
Könnten Sie mir bitte helfen, das Problem zu beheben?
I can not make it work with build 138
For build 138 , we need to update the line :
@Override
public doppelt computeTradeSize(StrategyBase strategy, String symbol, byte orderType, doppelt Preis, doppelt sl, doppelt tickSize, doppelt pointValue, doppelt sizeStep) throws Exception {