Flawless Victory Quantitative Trading Strategy auf Basis von Double BB Indikatoren und RSI

Schriftsteller:ChaoZhang, Datum: 2024-01-29 10:33:43
Tags:

img

Übersicht

Diese Strategie ist eine quantitative Handelsstrategie, die auf dem Bollinger Bands-Indikator und dem Relative Strength Index (RSI) basiert.

Strategieprinzipien

Die Handelssignale dieser Strategie stammen aus dem kombinierten Urteil von doppelten Bollinger Bands und RSI-Indikatoren. Unter ihnen ist der Bollinger Bands-Indikator der Volatilitätskanal, der auf der Grundlage der Preisstandardabweichung berechnet wird. Er erzeugt Handelssignale, wenn sich der Preis dem Kanal nähert oder berührt. Der RSI-Indikator beurteilt die Überkauf- und Überverkaufssituation des Preises.

Insbesondere wird ein Kaufsignal erzeugt, wenn der Schlusskurs unter der unteren Schiene von 1,0 Standardabweichungen liegt und der RSI gleichzeitig größer als 42 ist. Ein Verkaufssignal wird erzeugt, wenn der Schlusskurs gleichzeitig über der oberen Schiene von 1,0 Standardabweichungen liegt und der RSI größer als 70 ist. Darüber hinaus legt diese Strategie auch zwei Sätze von BB- und RSI-Parametern fest, die jeweils für den Einstieg und den Stop-Loss-Schlusspositionen verwendet werden. Diese Parameter sind optimale Werte, die durch umfangreiches Backtesting und maschinelles Lernen erhalten werden.

Analyse der Vorteile

Der größte Vorteil dieser Strategie ist die Genauigkeit der Parameter. Durch maschinelle Lernmethoden wird jeder Parameter durch umfassendes Backtesting erhalten, um das beste Sharpe-Verhältnis zu erzielen. Dies gewährleistet sowohl die Rendite der Strategie als auch Risiken. Darüber hinaus verbessert die Kombination von doppelten Indikatoren auch die Genauigkeit und Gewinnrate von Signalen.

Risikoanalyse

Das Hauptrisiko dieser Strategie liegt in der Einstellung von Stop-Loss-Punkten. Wenn der Stop-Loss-Punkt zu groß eingestellt ist, wird er die Verluste nicht effektiv kontrollieren. Darüber hinaus erhöht er, wenn der Stop-Loss-Punkt andere Handelskosten wie Provisionen und Slippage nicht richtig berechnet, auch die Risiken. Um Risiken zu reduzieren, wird empfohlen, den Stop-Loss-Größenparameter anzupassen, um die Handelsfrequenz zu reduzieren, während eine angemessene Stop-Loss-Position berechnet wird.

Optimierungsrichtlinien

Es gibt immer noch Raum für weitere Optimierung dieser Strategie. Zum Beispiel können Sie versuchen, die Längeparameter von Bollinger Bands zu ändern oder die Überkauf- und Überverkaufsschwellen des RSI anzupassen. Sie können auch versuchen, andere Indikatoren einzuführen, um eine Multi-Indikatoren-Kombination aufzubauen. Dies kann den Gewinnraum und die Stabilität der Strategie erhöhen.

Zusammenfassung

Diese Strategie kombiniert doppelte BB-Indikatoren und RSI-Indikatoren und erhält durch maschinelle Lernmethoden optimale Parameter, um hohe Renditen und kontrollierbare Risikoniveaus zu erzielen.


/*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)


Mehr