Momentum Breakout Bollinger Band Strategi Perdagangan


Tarikh penciptaan: 2024-02-05 10:53:46 Akhirnya diubah suai: 2024-02-05 10:53:46
Salin: 0 Bilangan klik: 699
1
fokus pada
1617
Pengikut

Momentum Breakout Bollinger Band Strategi Perdagangan

Gambaran keseluruhan

Strategi ini menggabungkan indikator Bollinger Bands dan Volume Indicator untuk mengenal pasti peluang yang kuat untuk menembusi Bollinger Bands dan melakukan pembelian dalam keadaan volume yang tinggi. Ia juga menggabungkan indikator Moving Average untuk menentukan arah trend dan mengurangkan risiko kedudukan mati.

Prinsip Strategi

  1. Menggunakan Indeks Burin untuk menentukan sama ada harga telah menembusi Burin.
  2. Menggunakan indikator jumlah urus niaga untuk menilai sama ada jumlah urus niaga semasa jelas lebih tinggi daripada purata jumlah urus niaga pada masa lalu.
  3. Dalam keadaan yang aktif, harga akan melepasi Brin dan bergerak ke arah yang betul.
  4. Menggunakan penunjuk purata bergerak untuk menilai trend jangka pendek dan jangka menengah, dan menghentikan kedudukan yang terhad apabila trend tidak baik.

Strategi ini mempertimbangkan tiga faktor utama: harga, momentum dan trend. Apabila harga menembusi Bollinger Bands dan memasuki kawasan membeli, banyak aliran wang menyebabkan lonjakan jumlah perdagangan, yang menunjukkan sokongan dan tenaga yang kuat, maka lebih banyak kedudukan dibuka.

Kelebihan Strategik

  1. Isyarat dagangan tepat, mengelakkan pecah palsu. Digabungkan dengan petunjuk jumlah dagangan, hanya membeli dalam keadaan yang benar-benar kuat, mengurangkan risiko kedudukan.

  2. Menggunakan purata bergerak untuk menentukan arah trend, anda boleh menghentikan kerugian tepat pada masanya dan mengurangkan kerugian dalam kedudukan kosong.

  3. Strategi kuantitatif untuk membuat keputusan yang mengintegrasikan pelbagai indikator, parameter boleh disesuaikan secara fleksibel untuk pelbagai jenis dan kitaran.

  4. Struktur kod jelas, meningkatkan keterbacaan strategi. Pengiraan penunjuk, isyarat perdagangan, logik pembukaan simpanan, dan lain-lain, memudahkan penyelenggaraan kemudian.

Risiko Strategik

  1. Blink band sebagai penunjuk julat turun naik, mungkin tidak berfungsi untuk keadaan yang melampau. Jika berlaku turun naik yang luar biasa, ia akan kehilangan isyarat beli atau menghasilkan isyarat palsu.

  2. Strategi tidak boleh mendapat keuntungan apabila jumlah dagangan tidak mencukupi. Jika jumlah dagangan keseluruhan pasaran tidak mencukupi, walaupun menghasilkan isyarat beli, ia sukar untuk mendapat keuntungan.

  3. Rata-rata bergerak juga mungkin tidak berfungsi sebagai penunjuk trend, dan tidak dapat menjamin sepenuhnya penghentian kerugian.

  4. Tetapan parameter yang tidak betul juga boleh menjejaskan hasil strategi. Contohnya, tetapan tetingkap masa perdagangan terlalu pendek, akan terlepas pembalikan pergerakan dan sebagainya.

Arah pengoptimuman strategi

  1. Anda boleh mempertimbangkan untuk menambah lebih banyak indikator teknikal untuk menilai trend, menyokong tahap rintangan, dan meningkatkan kesan hentikan kerugian, seperti bentuk K-line, indikator saluran, dan tahap sokongan utama.

  2. Meningkatkan model pembelajaran mesin untuk menilai kemungkinan penembusan sebenar dan mengurangkan kadar isyarat palsu. Model pembelajaran mendalam seperti LSTM.

  3. Mengoptimumkan strategi pengurusan wang, seperti menyesuaikan kedudukan secara dinamik, mengesan garis berhenti, dan lain-lain. Mengurangkan kesan kerugian tunggal.

  4. Uji lebih banyak varieti dan parameter kitaran masa. Sesuaikan parameter Brinband, parameter jumlah transaksi, dan lain-lain untuk mengoptimumkan strategi penyesuaian pasaran.

ringkaskan

Strategi ini mengintegrasikan indikator Brinband dan indikator jumlah perdagangan untuk mengenal pasti masa membeli dalam keadaan yang kuat. Pada masa yang sama, menggunakan indikator purata bergerak untuk menilai trend, menghentikan kerugian tepat pada masanya.

Kod sumber strategi
/*backtest
start: 2024-01-05 00:00:00
end: 2024-02-04 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © KAIST291

//@version=4
initial_capital=1000
strategy("prototype", overlay=true)
length1=input(1)
length3=input(3)
length7=input(7)
length9=input(9)
length14=input(14)
length20=input(20)
length60=input(60)
length120=input(120)
ma1= sma(close,length1)
ma3= sma(close,length3)
ma7= sma(close,length7)
ma9= sma(close,length9)
ma14=sma(close,length14)
ma20=sma(close,length20)
ma60=sma(close,length60)
ma120=sma(close,length120)
rsi=rsi(close,14)
// BUYING VOLUME AND SELLING VOLUME //
BV = iff( (high==low), 0, volume*(close-low)/(high-low))
SV = iff( (high==low), 0, volume*(high-close)/(high-low))
vol = iff(volume > 0, volume, 1)
dailyLength = input(title = "Daily MA length", type = input.integer, defval = 50, minval = 1, maxval = 100)
weeklyLength = input(title = "Weekly MA length", type = input.integer, defval = 10, minval = 1, maxval = 100)
//-----------------------------------------------------------
Davgvol = sma(volume, dailyLength)
Wavgvol = sma(volume, weeklyLength)
//-----------------------------------------------------------
length = input(20, minval=1)
src = input(close, title="Source")
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")
mult2= input(1.5, minval=0.001, maxval=50, title="exp")
mult3= input(1.0, minval=0.001, maxval=50, title="exp1")
mult4= input(2.5, minval=0.001, maxval=50, title="exp2")
basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
dev2= mult2 * stdev(src, length)
Supper= basis + dev2
Slower= basis - dev2
dev3= mult3 * stdev(src, length)
upper1= basis + dev3
lower1= basis - dev3
dev4= mult4 * stdev(src, length)
upper2=basis + dev4
lower2=basis - dev4
offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)
plot(basis, "Basis", color=#FF6D00, offset = offset)
p1 = plot(upper, "Upper", color=#2962FF, offset = offset)
p2 = plot(lower, "Lower", color=#2962FF, offset = offset)
fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95))
//----------------------------------------------------
exit=(close-strategy.position_avg_price / strategy.position_avg_price*100)
bull=( BV>SV and BV>Davgvol)
bull2=(BV>SV and BV>Davgvol)
bux =(close>Supper and close>Slower and volume<Davgvol)
bear=(SV>BV and SV>Davgvol)
con=(BV>Wavgvol and rsi>80)
imInATrade = strategy.position_size != 0
highestPriceAfterEntry = valuewhen(imInATrade, high, 0)
// STRATEGY LONG //
if (bull and close>upper1 and close>Supper and high>upper and rsi<80)
    strategy.entry("Long",strategy.long)

if (strategy.position_avg_price*1.02<close)
    strategy.close("Long")
else if (low<ma9 and strategy.position_avg_price<close)
    strategy.close("Long")
else if (ma20>close and strategy.position_avg_price<close )
    strategy.close("Long")
else if (rsi>80 and strategy.position_avg_price<close)
    strategy.close("Long")
else if (strategy.openprofit < strategy.position_avg_price*0.9-close)
    strategy.close("Long")
else if (high<upper and strategy.position_avg_price<close)
    strategy.close("Long")
//////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////
strategy.entry("Short",strategy.short,when=low<ma20 and low<lower1 and close<Slower and crossunder(ma60,ma120))

if (close<strategy.position_avg_price*0.98)
    strategy.close("Short")

else if (rsi<20)
    strategy.close("Short")