
Die Strategie basiert auf der Trendverfolgung und dem Durchbruch der Recursive Band Indicator, die von Alex Grover entwickelt wurde. Die Strategie nutzt die Recursive Band Indicator, um die Preisentwicklung und die kritischen Unterstützungswiderstände zu bestimmen, kombiniert mit der Filterung von False Breakouts durch Momentumbedingungen, um einen niedrigen, aber qualitativ hochwertigen Einstieg zu erzielen.
Der Rücklaufband besteht aus dem oberen Band, dem unteren Band und der mittleren Linie. Der Indikator wird wie folgt berechnet:
Obergrenze = maximaler Wert ((Obergrenze der vorherigen K-Linie, Schlusskurs + n*Schwankungen)
Unterband = Mindestwert ((Unterband der vorherigen K-Linie, Schlusskurs - n)*Schwankungen)
Die mittlere Linie = (Oberseite + Unterseite) / 2
n ist ein Skalierungsfaktor, bei dem die Schwankungen auf ATR, Standarddifferenz, Mittelwertkanal und spezielle RFV-Methoden ausgewählt werden können. Die Längeparameter steuern die Sensitivität des Indikators. Je größer der Wert ist, desto weniger leicht kann der Indikator ausgelöst werden.
Die Strategie erkennt zuerst, ob die Unterbandrichtung nach oben und die Oberbandrichtung nach unten geht, um falsche Durchbrüche zu beseitigen.
Wenn der Preis unterhalb der unteren Bandbreite fällt, machen Sie mehr; wenn der Preis über der oberen Bandbreite fällt, machen Sie weniger.
Die Strategie beinhaltet außerdem eine Stop-Loss-Logik.
Diese Strategie hat folgende Vorteile:
Die Strategie birgt auch einige Risiken:
Diese Risiken können durch Optimierung von Parametern, Stop-Loss-Einstellungen und Erhöhung der Gleitpunkte kontrolliert werden.
Die Strategie kann auch in folgenden Richtungen optimiert werden:
Insgesamt ist diese Strategie eine sehr praktische und effiziente Trendverfolgungsstrategie. Sie kombiniert Recursive Frameworks, um die Rechenressourcen zu sparen, und nutzt Trendunterstützung, um die Richtung der großen Trends zu bestimmen, und erhöht die Filterung von False Breakouts durch die dynamischen Bedingungen, um die Qualität des Handelssignals zu gewährleisten. Bei Parameteranpassung und Risikokontrolle können bessere Ergebnisse erzielt werden.
/*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=5
// Original indicator by alexgrover
strategy('Extended Recursive Bands Strategy', overlay=true, commission_type=strategy.commission.percent,commission_value=0.06,default_qty_type =strategy.percent_of_equity,default_qty_value = 100,initial_capital =1000)
length = input.int(260, step=10, title='Length')
src = input(close, title='Source')
method = input.string('Classic', options=['Classic', 'Atr', 'Stdev', 'Ahlr', 'Rfv'], title='Method')
bandDirectionCheck = input.bool(true, title='Bands Hold Direction')
lookback = input(3)
//----
atr = ta.atr(length)
stdev = ta.stdev(src, length)
ahlr = ta.sma(high - low, length)
rfv = 0.
rfv := ta.rising(src, length) or ta.falling(src, length) ? math.abs(ta.change(src)) : rfv[1]
//-----
f(a, b, c) =>
method == a ? b : c
v(x) =>
f('Atr', atr, f('Stdev', stdev, f('Ahlr', ahlr, f('Rfv', rfv, x))))
//----
sc = 2 / (length + 1)
a = 0.
a := math.max(nz(a[1], src), src) - sc * v(math.abs(src - nz(a[1], src)))
b = 0.
b := math.min(nz(b[1], src), src) + sc * v(math.abs(src - nz(b[1], src)))
c = (a+b)/2
// Colors
beColor = #675F76
buColor = #a472ff
// Plots
pA = plot(a, color=color.new(beColor, 0), linewidth=2, title='Upper Band')
pB = plot(b, color=color.new(buColor, 0), linewidth=2, title='Lower Band')
pC = plot(c, color=color.rgb(120,123,134,0), linewidth=2, title='Middle Band')
fill(pC, pA, color=color.new(beColor,90))
fill(pC, pB, color=color.new(buColor,90))
// Band keeping direction
// By Adulari
longc = 0
shortc = 0
for i = 0 to lookback-1
if b[i] > b[i+1]
longc:=longc+1
if a[i] < a[i+1]
shortc:=shortc+1
bhdLong = if bandDirectionCheck
longc==lookback
else
true
bhdShort = if bandDirectionCheck
shortc==lookback
else
true
// Strategy
if b>=low and bhdLong
strategy.entry(id='Long',direction=strategy.long)
if high>=a and bhdShort
strategy.entry(id='Short',direction=strategy.short)
// TP at middle line
//if low<=c and strategy.position_size<0 and strategy.position_avg_price>close
//strategy.exit(id="Short",limit=close)
//if high>=c and strategy.position_size>0 and strategy.position_avg_price<close
//strategy.exit(id="Long",limit=close)