Diese Strategie zielt darauf ab, den Unterschied zwischen dem Kauf von Vermögenswerten zu untersuchen, wenn die Volatilität niedrig ist und wenn sie hoch ist.
Diese Strategie bestimmt die Volatilität durch Berechnung des ATR und seines SMA. Insbesondere berechnet sie den SMA des ATR und berechnet dann das Verhältnis zwischen dem ATR und seinem SMA. Wenn dieses Verhältnis höher ist als die vom Benutzer definierte SchwellenvolatilitätTargetRatio, gilt die Volatilität als hoch. Wenn sie niedriger als die Schwelle ist, gilt die Volatilität als niedrig.
Abhängig vom vom Benutzer gewählten Modus erzeugt die Strategie Kaufsignale, wenn die Volatilität hoch oder niedrig ist.
Die wichtigsten Vorteile dieser Strategie sind:
Die wichtigsten Risiken dieser Strategie sind:
Die oben genannten Risiken können durch Anpassung der Parameter und Kombination von Käufen aus verschiedenen Volatilitätsniveaus gemildert werden.
Diese Strategie kann weiter optimiert werden, indem
Diese Strategie kann die Leistung von Low-Volatility-Buy- und High-Volatility-Buy-Strategien effektiv vergleichen. Sie verwendet SMA, um den ATR zu glätten und Handelssignale basierend auf Volatilitätsniveaus zu generieren. Die Strategie kann durch Parameter-Tuning und Optimierung von Bedingungen verbessert werden. Insgesamt bietet diese Strategie ein wirksames Werkzeug für die Erforschung von volatilitätsbasierten Strategien.
/*backtest start: 2023-01-01 00:00:00 end: 2024-01-07 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © I11L //@version=5 strategy("I11L - Better Buy Low Volatility or High Volatility?", overlay=false) mode = input.string("Buy low Volatility",options = ["Buy low Volatility","Buy high Volatility"]) volatilityTargetRatio = input.float(1,minval = 0, maxval = 100,step=0.1, tooltip="1 equals the average atr for the security, a lower value means that the volatility is lower") atrLength = input.int(14) atr = ta.atr(atrLength) / close avg_atr = ta.sma(atr,atrLength*5) ratio = atr / avg_atr sellAfterNBarsLength = input.int(5, step=5, minval=0) var holdingBarsCounter = 0 if(strategy.opentrades > 0) holdingBarsCounter := holdingBarsCounter + 1 isBuy = false if(mode == "Buy low Volatility") isBuy := ratio < volatilityTargetRatio else isBuy := ratio > volatilityTargetRatio isClose = holdingBarsCounter > sellAfterNBarsLength if(isBuy) strategy.entry("Buy",strategy.long) if(isClose) holdingBarsCounter := 0 strategy.exit("Close",limit=close) plot(ratio, color=isBuy[1] ? color.green : isClose[1] ? color.red : color.white) plot(1, color=color.white)