
Strategi ini menghasilkan isyarat membeli dan menjual dengan mengira nilai purata PB dan turun ke bawah Brin, menilai hubungan antara PB dan turun ke bawah Brin, menghasilkan isyarat beli apabila PB melangkau ke atas melalui Brin atau turun ke bawah, menghasilkan isyarat beli apabila PB melangkau ke bawah melalui Brin atau turun ke atas.
Indikator utama strategi ini adalah indikator PB rata-rata. Indikator PB rata-rata menggabungkan kestabilan sistem garis rata dan kepekaan indikator PB, yang menggunakan perbezaan antara dua garis rata-rata berkala yang berbeza untuk menyatakan trend perubahan harga, untuk menilai keadaan kosong.
Strategi ini juga menggunakan Bollinger Bands untuk menentukan harga saham yang terlalu tinggi. Bollinger Bands terdiri daripada tiga garis lurus. Garis lurus adalah purata bergerak n hari; dan Garis lurus dihitung melalui Garis lurus dan kadar pergerakan sejarah.
Keseluruhannya, strategi ini menggunakan indikator PB rata-rata untuk menentukan trend harga saham naik turun, dan ditambah dengan indikator Brin untuk menentukan keadaan overbought dan oversold, mencari titik jual beli dalam hubungan indikator yang menggabungkan kedua-duanya, merupakan strategi perdagangan indikator nilai yang tipikal.
Strategi ini mempunyai kelebihan utama:
Risiko utama strategi ini ialah:
Untuk risiko di atas, risiko boleh dielakkan dengan cara menetapkan parameter optimum, menghentikan kerugian yang ketat, mempertimbangkan faktor alam sekitar, pemantauan buatan dan sebagainya.
Strategi ini boleh dioptimumkan untuk:
Kesan operasi keseluruhan strategi ini adalah baik, dengan indikator PB rata-rata sebagai pusat, ditambah dengan Brin untuk menentukan titik jual beli, operasi mudah, kepekaan tinggi, prestasi pengujian semula yang baik. Dengan cara terus mengoptimumkan parameter, menambah bantuan indikator lain, dan langkah-langkah menghentikan kerugian yang ketat, dapat meningkatkan keuntungan dan kestabilan strategi, layak untuk diuji dan digunakan.
/*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())