Stratégie BB+RSI+Aroon configurable


Date de création: 2023-09-21 15:05:38 Dernière modification: 2023-09-21 15:05:38
Copier: 0 Nombre de clics: 739
1
Suivre
1617
Abonnés

Aperçu

La stratégie combine les bandes de Bryn (BB), l’indice de relative faiblesse (RSI) et l’indicateur Aroon pour tirer parti des avantages de chaque indicateur et fournir des signaux d’entrée et de sortie efficaces pour les transactions.

Principe de stratégie

  1. Un signal de multiples têtes est affiché lorsque le prix franchit la bande de Brin.

  2. Un signal de confirmation à plusieurs têtes est affiché lorsque le RSI traverse la ligne de survente.

  3. Aroon affiche un signal de confirmation à plusieurs têtes lorsqu’il est porté.

  4. Lorsque ces trois conditions sont réunies, faites plus.

  5. Un signal de tête vide s’affiche lorsque le prix franchit la barre de Brin.

  6. Un signal de confirmation aérien est affiché lorsque le RSI est en dessous de la ligne de survente.

  7. Le signal de confirmation de la tête vide est affiché lorsque Aroon est en train de se mettre en place.

  8. Lorsque les trois conditions ci-dessus sont réunies, le poste est vacant.

Avantages stratégiques

  • Paramètres configurables, optimisés pour une combinaison optimale
  • Confirmation de plusieurs indicateurs pour améliorer l’exactitude du signal
  • Adapté à de multiples environnements de marché
  • Une logique de transaction simple et facile à mettre en œuvre

Risque stratégique

  • Les paramètres sont mal optimisés et peuvent générer trop de signaux d’erreur
  • Le retard dans la multiplication des indicateurs risque d’entraver la reprise rapide
  • Les opérations inversées augmentent la fréquence et le coût des transactions

Direction d’optimisation

  • Rétro-analyse multi-marché multi-temps pour trouver les meilleurs paramètres
  • Évaluer l’efficacité de chaque indicateur et supprimer si nécessaire
  • Essayez d’optimiser les paramètres basés sur l’apprentissage automatique
  • Optimiser le code de la stratégie pour réduire le nombre de calculs
  • Tester différents paramètres de temps de détention

Résumer

La stratégie combine les avantages de plusieurs indicateurs pour former un signal d’entrée plus puissant. L’efficacité de la stratégie peut être portée à un niveau supérieur par l’optimisation des paramètres, la suppression des indicateurs redondants et l’optimisation du code.

Code source de la stratégie
/*backtest
start: 2023-09-13 00:00:00
end: 2023-09-20 00:00:00
period: 5m
basePeriod: 1m
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/
// Developed by Marco Jarquin as part of Arkansas 22 Project for Binary Options
// CBRA for binary options (Configurable Bollinger Bands, RSI and Aroon)

//@version=4
// ====================================================================================

//strategy("A22.CBRA.Strat", overlay=true, initial_capital=10000, currency="USD", calc_on_every_tick=true, default_qty_type=strategy.cash, default_qty_value=4000, commission_type=strategy.commission.cash_per_order, commission_value=0)

// Aroonish Parameters
// ====================================================================================

Aroonish_length = input(4, minval=1, title="Aroonish Lenght")
Aroonish_ConfVal = input(50, minval=0, maxval=100, step=25, title="Aroonish Confirmation Value")
Aroonish_upper = 100 * (-highestbars(high, Aroonish_length+1) + Aroonish_length)/Aroonish_length
Aroonish_lower = 100 * (-lowestbars(low, Aroonish_length+1) + Aroonish_length)/Aroonish_length

// Aroonish confirmations
// ====================================================================================
Aroonish_ConfLong = (Aroonish_lower >= Aroonish_ConfVal) and (Aroonish_upper < Aroonish_lower)
Aroonish_ConfShrt = (Aroonish_upper >= Aroonish_ConfVal) and (Aroonish_upper > Aroonish_lower)

plotshape(crossover(Aroonish_lower, Aroonish_upper), color = color.red, style = shape.triangledown, location = location.abovebar, size = size.auto, title = "Ar-B")
plotshape(crossover(Aroonish_upper, Aroonish_lower), color = color.green, style = shape.triangleup, location = location.belowbar, size = size.auto, transp = 0, title = "Ar-S")

// RSI Parameters
// ====================================================================================
RSI_length = input(4, title="RSI Lenght")
RSI_overSold = input(20, title="RSI Oversold Limit")
RSI_overBought = input(80, title="RSI Overbought Limit" )

RSI = rsi(close, RSI_length)

plotshape(crossover(RSI, RSI_overSold), color = color.orange, style = shape.square, location = location.belowbar, size = size.auto, title = "RSI-B")
plotshape(crossunder(RSI, RSI_overBought), color = color.orange, style = shape.square, location = location.abovebar, size = size.auto, transp = 0, title = "RSI-S")

// Bollinger Parameters
// ====================================================================================
BB_length = input(20, minval=1, title="Bollinger Lenght")
BB_mult = input(2.5, minval=0.1, maxval=50, step=0.1, title="Bollinger Std Dev")
// BB_bars = input(3, minval=1, maxval=5, title="Check bars after crossing")

BB_basis = sma(close, BB_length)
BB_dev = BB_mult * stdev(close, BB_length)

BB_upper = BB_basis + BB_dev
BB_lower = BB_basis - BB_dev

p1 = plot(BB_upper, color=color.blue)
p2 = plot(BB_lower, color=color.blue)

// Bars to have the operation open
// ====================================================================================
nBars = input(3, minval=1, maxval=30, title="Bars to keep the operation open")

// Strategy condition short or long
// ====================================================================================
ConditionShrt = ((crossunder(close, BB_upper) or crossunder(close[1], BB_upper[1])) and Aroonish_ConfShrt) and (crossunder(RSI, RSI_overBought) or crossunder(RSI[1], RSI_overBought[1]))
ConditionLong = ((crossover(close, BB_lower) or crossover(close[1], BB_lower[1])) and Aroonish_ConfLong) and (crossover(RSI, RSI_overSold) or crossover(RSI[1], RSI_overSold[1]))

plotshape(crossover(close, BB_lower), color = color.blue, style = shape.circle, location = location.belowbar, size = size.auto, title = "BB-B")
plotshape(crossunder(close, BB_upper), color = color.blue, style = shape.circle, location = location.abovebar, size = size.auto, transp = 0, title = "BB-S")


// Make input options that configure backtest date range
// ====================================================================================
iMo = input(title="Start Month", type=input.integer, defval=1, minval=1, maxval=12)
iDy = input(title="Start Date", type=input.integer, defval=1, minval=1, maxval=31)
iYr = input(title="Start Year", type=input.integer, defval=(2020), minval=1800, maxval=2100)

eMo = input(title="End Month", type=input.integer, defval=1, minval=1, maxval=12)
eDy = input(title="End Date", type=input.integer, defval=1, minval=1, maxval=31)
eYr = input(title="End Year", type=input.integer, defval=(2021), minval=1800, maxval=2100)

// Look if the close time of the current bar falls inside the date range
// ====================================================================================
inDateRange = true


// Evaluates conditions to enter short or long
// ====================================================================================
if (inDateRange and ConditionLong)
    strategy.entry("A22.L", strategy.long)

if (inDateRange and ConditionLong[nBars])
    strategy.close("A22.L", comment="A22.L Exit")
    
if (inDateRange and ConditionShrt)
    strategy.entry("A22.S", strategy.short)

if (inDateRange and ConditionShrt[nBars])
    strategy.close("A22.S", comment="A22.S Exit")

if (not inDateRange)
    strategy.close_all()