Konfigurierbare BB+RSI+Aroon-Strategie


Erstellungsdatum: 2023-09-21 15:05:38 zuletzt geändert: 2023-09-21 15:05:38
Kopie: 0 Klicks: 739
1
konzentrieren Sie sich auf
1617
Anhänger

Überblick

Die Strategie kombiniert die Bollinger Bands (BB), den relativ starken RSI (RSI) und den Aroon-Indikator, um die Vorteile der einzelnen Indikatoren zu nutzen und effiziente Einstiegs- und Ausstiegssignale für den Handel zu liefern.

Strategieprinzip

  1. Wenn der Preis die Bollinger Bands unterbricht, wird ein Mehrkopfsignal angezeigt.

  2. Wenn der RSI die Überkauflinie durchbricht, wird ein mehrköpfiges Bestätigungssignal angezeigt.

  3. Wenn Aroon auf und ab getragen wird, wird ein mehrköpfiges Bestätigungssignal angezeigt.

  4. Wenn diese drei Voraussetzungen erfüllt sind, dann mehr.

  5. Wenn der Preis die Brin-Band überschreitet, wird ein Hohessignal angezeigt.

  6. Wenn der RSI unterhalb der Überverkaufsgrenze liegt, wird ein Bestätigungssignal angezeigt.

  7. Die Bestätigungssignale werden angezeigt, wenn Aroon unterwegs ist.

  8. Wenn diese drei Voraussetzungen erfüllt sind, wird frei gehalten.

Strategische Vorteile

  • Konfigurierbare Parameter, optimiert für die optimale Kombination
  • Mehrfache Kennzahlen bestätigen, Signalgenauigkeit verbessern
  • Für verschiedene Marktumgebungen geeignet
  • Einfache Transaktionslogik und einfache Umsetzung

Strategisches Risiko

  • Parameter wurden nicht richtig optimiert und könnten zu viele falsche Signale erzeugen
  • Mehrfache Indikatoren rückläufig, könnte schnelle Umkehr verpasst werden
  • Umkehroperationen erhöhen die Häufigkeit und Kosten von Transaktionen

Optimierungsrichtung

  • Multi-Markt-Multi-Zeitrahmen-Retrospektive zur Suche nach den optimalen Parametern
  • Bewertung der Wirksamkeit jedes Kennwerts und Löschung, falls erforderlich
  • Versuchen Sie eine Parameteroptimierung basierend auf Machine Learning
  • Optimierung der Strategie-Code und Verringerung der Rechenleistung
  • Verschiedene Haltezeitparameter testen

Zusammenfassen

Die Strategie kombiniert die Vorteile mehrerer Indikatoren zu einem starken Einstiegssignal. Durch Parameteroptimierung, Entfernung von überflüssigen Indikatoren und Optimierungscode kann die Effektivität der Strategie auf ein höheres Niveau gebracht werden. Insgesamt bietet die Strategie eine effektive, maßgeschneiderte Lösung für den Handel.

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