Bollinger Bands Crossing Min Strategi Penunjuk PB


Tarikh penciptaan: 2024-01-17 17:10:53 Akhirnya diubah suai: 2024-01-17 17:10:53
Salin: 0 Bilangan klik: 661
1
fokus pada
1617
Pengikut

Bollinger Bands Crossing Min Strategi Penunjuk PB

Gambaran keseluruhan

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.

Prinsip Strategi

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.

Analisis kelebihan

Strategi ini mempunyai kelebihan utama:

  1. Menggunakan Indeks PB Rata-Rata untuk Mengesan Perubahan Trend Harga Saham, Sensitiviti Tinggi
  2. Tambahan dengan penunjuk Brin Belt untuk mengenal pasti kawasan overbought dan oversold, meningkatkan ketepatan penentuan tempat jual beli
  3. Operasi strategi mudah dan mudah dilaksanakan
  4. Data yang dikumpulkan menunjukkan bahawa keuntungan dari strategi ini cukup besar.

Analisis risiko

Risiko utama strategi ini ialah:

  1. Indeks PB rata-rata dan BRI bergantung kepada pengiraan data sejarah, mudah memberi isyarat yang salah apabila terdapat turun naik yang besar dalam harga saham
  2. Indikator PB dan Blink adalah sensitif terhadap parameter yang ditetapkan, dan penyetempatan yang tidak betul boleh menyebabkan terlalu banyak perdagangan yang salah
  3. Dalam tempoh pelaksanaan strategi, perubahan persekitaran makro mungkin mempunyai kesan yang lebih besar terhadap harga saham, seperti krisis ekonomi, perubahan dasar dan sebagainya, yang mungkin menyebabkan strategi gagal

Untuk risiko di atas, risiko boleh dielakkan dengan cara menetapkan parameter optimum, menghentikan kerugian yang ketat, mempertimbangkan faktor alam sekitar, pemantauan buatan dan sebagainya.

Arah pengoptimuman

Strategi ini boleh dioptimumkan untuk:

  1. Mengoptimumkan parameter PB rata-rata dan Brinband untuk mencari kombinasi parameter yang optimum
  2. Menambah penapis untuk penunjuk lain seperti MACD, KDJ dan sebagainya untuk meningkatkan kesan strategi
  3. Meningkatkan mekanisme penangguhan kerugian untuk mengawal kerugian tunggal
  4. Menggabungkan Indeks Tempoh Jadual Yang Lebih Besar Untuk Menentukan Arah Besar Dan Mengelakkan Perdagangan Berlawanan

ringkaskan

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.

Kod sumber strategi
/*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())