
Die Strategie untersucht die Unterschiede zwischen dem Kauf von Vermögenswerten während der niedrigen und hohen Volatilität. Sie ermöglicht es dem Benutzer, die Kaufoption während der niedrigen und hohen Volatilität zu wählen, indem er die Modus-Eingabevariablen ändert.
Die Strategie ermittelt die Volatilitätsrate durch die Berechnung des ATR und seines SMA. Konkret berechnet sie den SMA des ATR und berechnet dann das Verhältnis des ATR zu seinem SMA. Wenn dieses Verhältnis höher ist als der benutzerdefinierte Schwellenwert volatilityTargetRatio, wird die Volatilität als hoch angesehen; wenn sie unter diesem Schwellenwert liegt, wird die Volatilität als niedrig angesehen.
Je nach Modus der Benutzerwahl erzeugt die Strategie ein Kaufsignal bei hoher oder niedriger Volatilität. Nach dem Kauf hält die Strategie eine bestimmte Anzahl von Bars (definiert durch sellAfterNBarsLength) und platziert dann.
Die wichtigsten Vorteile der Strategie sind:
Die wichtigsten Risiken dieser Strategie sind:
Diese Risiken können durch die Anpassung der Parameter und die Kombination von Kauf von verschiedenen Ebenen der Volatilität gemildert werden.
Die Strategie kann weiter optimiert werden:
Diese Strategie kann die Performance von Low Volatility und High Volatility Buy Strategien effektiv vergleichen. Sie verwendet SMAs, um die ATR zu glätten und Handelssignale zu erzeugen, die auf den Niveaus der Volatilität basieren. Die Strategie kann durch Anpassung der Parameter und Optimierung der Bedingungen verbessert werden.
/*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)