
Strategi ini didasarkan pada Alexgrover pengembangan dari indikator-indikator pita berulangkali. Strategi ini menggunakan indikator-indikator pita berulangkali untuk menentukan tren harga dan titik-titik resistensi pendukung yang penting, yang digabungkan dengan kondisi momentum untuk memfilter terobosan palsu, untuk memungkinkan masuk yang rendah tetapi berkualitas tinggi.
Indikator pita berurutan terdiri dari pita atas, pita bawah dan garis tengah. Cara menghitung indikator adalah:
Banding atas = nilai maksimum (banding atas dari garis K sebelumnya, harga penutupan + n*Volatilitas)
Banding bawah = nilai minimum ((banding bawah dari garis K sebelumnya, harga penutupan - n*Volatilitas)
Garis tengah = (garis atas + garis bawah) / 2
Di mana n adalah faktor skala, tingkat fluktuasi dapat memilih ATR, standar deviasi, saluran rata-rata dan metode RFV khusus. Sensitivitas parameter panjang mengontrol indikator, semakin besar nilai, semakin tidak mudah indikator untuk memicu.
Strategi pertama adalah mendeteksi apakah arah bawah terus naik dan arah atas terus turun untuk menyingkirkan false breakout.
Ketika harga di bawah batas bawah, lakukan lebih banyak; ketika harga di atas batas atas, lakukan lebih sedikit.
Selain itu, strategi ini juga menyertakan logika stop loss.
Strategi ini memiliki keuntungan sebagai berikut:
Strategi ini juga memiliki beberapa risiko:
Risiko ini dapat dikontrol dengan mengoptimalkan parameter, menetapkan stop loss, dan meningkatkan slippage.
Strategi ini juga dapat dioptimalkan dari beberapa arah:
Strategi ini secara keseluruhan merupakan strategi pelacakan tren yang sangat praktis dan efisien. Ini menggabungkan kerangka acak untuk menghemat sumber daya komputasi, menggunakan tren untuk mendukung resistensi dalam menentukan arah tren besar, dan meningkatkan kondisi momentum untuk memfilter terobosan palsu, sehingga memastikan kualitas sinyal perdagangan.
/*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)