Stratégie de trading quantitative RSI avec indicateur Double BB


Date de création: 2024-01-29 10:33:43 Dernière modification: 2024-01-29 10:33:43
Copier: 0 Nombre de clics: 785
1
Suivre
1617
Abonnés

Stratégie de trading quantitative RSI avec indicateur Double BB

Aperçu

Cette stratégie est une stratégie de trading quantitatif basée sur les indices Bollinger Bands et RSI. La stratégie utilise une méthode d’apprentissage automatique, optimisée par le langage Python sur des données historiques de près d’un an pour trouver la combinaison optimale de paramètres.

Principe de stratégie

Les signaux de négociation de cette stratégie proviennent d’un jugement combiné des deux bandes de Bollinger et du RSI. Les bandes de Bollinger sont des canaux de fluctuation calculés en fonction de la bande de décalage standard du prix.

Plus précisément, un signal d’achat est généré lorsque le cours de clôture est en dessous du décalage standard de 1.0 et que le RSI est supérieur à 42. Un signal de vente est généré lorsque le cours de clôture est en dessous du décalage standard de 1.0 et que le RSI est supérieur à 70.

Analyse des avantages

Le plus grand avantage de cette stratégie réside dans la précision des paramètres. Grâce à une méthode d’apprentissage automatique, chaque paramètre est soumis à un retour complet pour obtenir le meilleur rapport Sharpe. Cela garantit à la fois la rentabilité de la stratégie et le contrôle des risques.

Analyse des risques

Le risque de cette stratégie provient principalement de la mise en place d’un point d’arrêt. Si le point d’arrêt est trop grand, il est impossible de contrôler efficacement les pertes. De plus, le risque augmente si le point d’arrêt est mal calculé avec d’autres coûts de transaction tels que les frais de traitement et les points de glissement de la transaction.

Direction d’optimisation

Il y a de la place pour une optimisation supplémentaire de la stratégie. Par exemple, vous pouvez essayer de modifier les paramètres de longueur des bandes de Bollinger ou d’ajuster les seuils de sur-achat et de survente du RSI. En outre, vous pouvez essayer d’introduire d’autres indicateurs et de construire une combinaison de plusieurs indicateurs. Cela peut améliorer la marge de profit et la stabilité de la stratégie.

Résumer

Cette stratégie, combinant un double BB et un RSI, obtient les meilleurs paramètres grâce à une méthode d’apprentissage automatique, permettant un rendement élevé et un niveau de risque contrôlable. Elle présente des avantages en termes de jugement de la combinaison des indicateurs et d’optimisation des paramètres.

Code source de la stratégie
/*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)