
Strategi ini menghasilkan sinyal beli dan jual dengan menghitung rasio rata-rata PB dan downtrend Brin untuk menentukan hubungan antara PB dan downtrend Brin. Ketika indikator PB naik, sinyal beli dihasilkan; ketika indikator PB turun, sinyal jual dihasilkan.
Indikator sentral dari strategi ini adalah indikator PB rata-rata. Indikator PB rata-rata menggabungkan stabilitas sistem rata-rata dan sensitivitas indikator PB, yang menggunakan perbedaan antara dua garis rata-rata berkala yang berbeda untuk mengungkapkan tren perubahan harga, sehingga menilai melihat situasi kosong.
Strategi ini juga menggunakan indikator Brin Belt untuk menilai overbought dan oversold dalam harga saham. Indikator Brin Belt terdiri dari tiga garis kurva: mid-trail, up-trail, dan down-trail. Mid-trail adalah rata-rata bergerak selama n hari; up-and-down trail dihitung melalui mid-trail dan tingkat fluktuasi historis.
Secara keseluruhan, strategi ini menggunakan indikator PB rata-rata untuk menentukan tren harga saham naik turun, dan didukung dengan indikator Brin untuk menilai overbought dan oversold, mencari titik jual dalam hubungan indikator yang menggabungkan keduanya, merupakan strategi perdagangan indikator numerik yang khas.
Strategi ini memiliki beberapa keuntungan:
Risiko utama dari strategi ini adalah:
Untuk risiko di atas, dapat dilakukan penghindaran risiko dengan cara pengaturan parameter optimasi, penghentian kerugian yang ketat, mempertimbangkan faktor lingkungan, dan pemantauan buatan.
Strategi ini dapat dioptimalkan untuk:
Strategi ini secara keseluruhan berjalan dengan baik, dengan indikator PB rata-rata sebagai inti, ditambah dengan Brin band untuk menentukan titik jual beli, operasi sederhana, sensitivitas tinggi, kinerja pengujian kembali yang baik. Dengan terus-menerus mengoptimalkan pengaturan parameter, menambahkan bantuan indikator lain, dan tindakan penutupan kerugian yang ketat, dapat meningkatkan tingkat keuntungan dan stabilitas strategi, layak untuk diuji coba dan diterapkan.
/*backtest
start: 2024-01-09 00:00:00
end: 2024-01-16 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("BandPass EOS", overlay=false, initial_capital = 1000)
src = input(close, "Source", input.source)
Period1 = input(41, "Fast Period", input.integer)
Period2 = input(54, "Slow Period", input.integer)
showBG = input(false, "Show crosses on background?", input.bool)
UseReversalStop = input(true, "Use additional triggers?", input.bool)
//Super Passband Filter
a1 = 0.0
a2 = 0.0
PB = 0.0
RMS = 0.0
if bar_index > Period1
a1 := 5 / Period1
a2 := 5 / Period2
PB := (a1 - a2) * src + (a2 * (1 - a1) - a1 * (1 - a2)) * src[1] +
(1 - a1 + 1 - a2) * nz(PB[1]) - (1 - a1) * (1 - a2) * nz(PB[2])
for i = 0 to 49 by 1
RMS := RMS + PB[i] * PB[i]
RMS
RMS := sqrt(RMS / 40)
RMS
z = 0
buy = PB > PB [5] and crossover(PB, -RMS) or PB > PB [5] and crossover (PB, RMS) or PB > PB [5] and crossover (PB, z)
sell = PB < PB [5] and crossunder(PB, RMS) or PB < PB [5] and crossunder (PB, -RMS) or PB < PB [5] and crossunder (PB, z)
signal = buy ? 1 : sell ? -1 : 0
bg = buy ? color.green : sell ? color.red : color.white
bg := showBG ? bg : na
upperFill = PB>RMS ? color.lime : na
lowerFill = PB<-RMS ? color.red : na
p1 = plot(PB,"PB",color.red)
p2 = plot(RMS,"+RMS",color.blue)
p3 = plot(-RMS,"-RMS",color.blue)
bgcolor(bg)
fill(p1,p2,upperFill)
fill(p1,p3,lowerFill)
hline(0)
//PERIOD
testStartYear = input(2018, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0)
testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0)
testPeriod() => true
lcolor = PB > PB [5] and crossover(PB, -RMS) or PB > PB [5] and crossover (PB, RMS) or PB > PB [5] and crossover (PB, z)
scolor = PB < PB [5] and crossunder(PB, RMS) or PB < PB [5] and crossunder (PB, -RMS) or PB < PB [5] and crossunder (PB, z)
c1 = (PB < PB [5] and crossunder(PB, RMS) or PB < PB [5] and crossunder (PB, -RMS) or PB < PB [5] and crossunder (PB, z))
c2 = (PB > PB [5] and crossover(PB, -RMS) or PB > PB [5] and crossover (PB, RMS) or PB > PB [5] and crossover (PB, z))
plot (c1 ? PB : na, style = plot.style_circles, color = color.red, linewidth = 3)
plot (c2 ? PB : na, style = plot.style_circles, color = color.green, linewidth = 3)
if (PB > PB [5] and crossover(PB, -RMS) or PB > PB [5] and crossover (PB, RMS) or PB > PB [5] and crossover (PB, z))
strategy.entry("long", strategy.long, when = testPeriod())
if (PB < PB [5] and crossunder(PB, RMS) or PB < PB [5] and crossunder (PB, -RMS) or PB < PB [5] and crossunder (PB, z))
strategy.entry("short", strategy.short, when = testPeriod())