
Die Strategie basiert auf der Bollinger Bands und dem Relative Strength Index (RSI). Die Strategie nutzt eine Methode des maschinellen Lernens, um die historischen Daten der letzten 1 Jahre mit Hilfe der Python-Sprache zu optimieren und die optimale Kombination von Parametern zu finden.
Die Handelssignale für diese Strategie stammen aus einer Kombination aus zwei Bollinger Bands und dem RSI-Indikator. Der Bollinger Bands-Indikator ist ein Schwankungskanal, der auf der Grundlage der Standarddifferenzbands des Preises berechnet wird.
Insbesondere wird ein Kaufsignal erzeugt, wenn der Schlusskurs unter der Standardabweichung von 1,0 unterwegs ist und der RSI größer als 42 ist. Ein Verkaufssignal wird erzeugt, wenn der Schlusskurs über der Standardabweichung von 1,0 unterwegs ist und der RSI größer als 70 ist. Zusätzlich werden in der Strategie zwei Arten von Parametern für BB und RSI festgelegt, die jeweils für die Ein- und Ausgleichsposition verwendet werden.
Der größte Vorteil dieser Strategie liegt in der Präzision der Parameter. Durch die Methode des maschinellen Lernens werden die einzelnen Parameter nach einer umfassenden Rückmessung für die optimale Sharpe-Ratio ermittelt. Dies gewährleistet sowohl die Ertragsrate der Strategie als auch die Risiken.
Das Risiko dieser Strategie resultiert hauptsächlich aus der Einstellung des Stop-Loss-Punkts. Wenn der Stop-Loss-Punkt zu groß ist, kann der Verlust nicht effektiv kontrolliert werden. Darüber hinaus erhöht sich das Risiko, wenn der Stop-Loss-Punkt mit den Gebühren und anderen Transaktionskosten wie den Transaktionsslip-Punkten falsch berechnet wird.
Die Strategie kann noch weiter optimiert werden. Man kann beispielsweise versuchen, die Längeparameter der Bollinger Bands zu ändern oder die Überkauf-Überverkauf-Schwelle des RSI anzupassen. Außerdem kann man versuchen, andere Indikatoren einzuführen und eine Mehrindikator-Palette zu erstellen.
Die Strategie kombiniert die Doppel-BB- und RSI-Indikatoren, um die besten Parameter durch eine maschinelle Lernmethode zu erhalten, um eine hohe Rendite und ein kontrollierbares Risiko zu erzielen. Es hat die Vorteile, sowohl die Portfolio-Bestimmung als auch die Parameteroptimierung zu bewerkstelligen. Mit kontinuierlicher Verbesserung ist die Strategie eine hervorragende quantitative Handelsstrategie.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// @version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Bunghole 2020
strategy(overlay=true, shorttitle="Flawless Victory Strategy" )
// Stoploss and Profits Inputs
v1 = input(true, title="Version 1 - Doesn't Use SL/TP")
v2 = input(false, title="Version 2 - Uses SL/TP")
stoploss_input = input(6.604, title='Stop Loss %', type=input.float, minval=0.01)/100
takeprofit_input = input(2.328, title='Take Profit %', type=input.float, minval=0.01)/100
stoploss_level = strategy.position_avg_price * (1 - stoploss_input)
takeprofit_level = strategy.position_avg_price * (1 + takeprofit_input)
//SL & TP Chart Plots
plot(v2 and stoploss_input and stoploss_level ? stoploss_level: na, color=color.red, style=plot.style_linebr, linewidth=2, title="Stoploss")
plot(v2 and takeprofit_input ? takeprofit_level: na, color=color.green, style=plot.style_linebr, linewidth=2, title="Profit")
// Bollinger Bands 1
length = 20
src1 = close
mult = 1.0
basis = sma(src1, length)
dev = mult * stdev(src1, length)
upper = basis + dev
lower = basis - dev
// Bollinger Bands 2
length2 = 17
src2 = close
mult2 = 1.0
basis2 = sma(src1, length2)
dev2 = mult2 * stdev(src2, length2)
upper2 = basis2 + dev2
lower2 = basis2 - dev2
// RSI
len = 14
src = close
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down)
// Strategy Parameters
RSILL= 42
RSIUL= 70
RSILL2= 42
RSIUL2= 76
rsiBuySignal = rsi > RSILL
rsiSellSignal = rsi > RSIUL
rsiBuySignal2 = rsi > RSILL2
rsiSellSignal2 = rsi > RSIUL2
BBBuySignal = src < lower
BBSellSignal = src > upper
BBBuySignal2 = src2 < lower2
BBSellSignal2 = src2 > upper2
// Strategy Long Signals
Buy = rsiBuySignal and BBBuySignal
Sell = rsiSellSignal and BBSellSignal
Buy2 = rsiBuySignal2 and BBBuySignal2
Sell2 = rsiSellSignal2 and BBSellSignal2
if v1 == true
strategy.entry("Long", strategy.long, when = Buy, alert_message = "v1 - Buy Signal!")
strategy.close("Long", when = Sell, alert_message = "v1 - Sell Signal!")
if v2 == true
strategy.entry("Long", strategy.long, when = Buy2, alert_message = "v2 - Buy Signal!")
strategy.close("Long", when = Sell2, alert_message = "v2 - Sell Signal!")
strategy.exit("Stoploss/TP", "Long", stop = stoploss_level, limit = takeprofit_level)