Strategi Bollinger Bands Crossover purata bergerak tunggal

Penulis:ChaoZhang, Tarikh: 2023-12-22 14:10:14
Tag:

img

Ringkasan

Strategi ini berdasarkan purata bergerak tunggal dan penunjuk Bollinger Bands. Ia menghasilkan isyarat beli dan jual apabila harga memecahkan jalur atas atau bawah Bollinger Bands. Juga ia menggabungkan arah purata bergerak untuk menentukan trend, hanya mengambil masa yang lama apabila MA meningkat dan pendek apabila MA jatuh.

Logika Strategi

Strategi ini terutamanya menggunakan penunjuk berikut untuk penilaian:

  1. Moving Average (SMA): Purata bergerak mudah harga CLOSE, yang mewakili trend harga.
  2. Bollinger Band Atas: Mewakili tahap rintangan, pecah menunjukkan momentum yang kuat.
  3. Band Bollinger yang lebih rendah: Mewakili tahap sokongan, perpecahan menunjukkan kemungkinan pembalikan trend.

Isyarat dagangan khusus ialah:

  1. Isyarat Beli: Apabila harga penutupan memecahkan jalur atas dan MA meningkat.
  2. Sinyal Jual: Apabila harga penutupan menembusi jalur bawah dan MA jatuh.

Dengan menggabungkan trend dan pecah, isyarat perdagangan menjadi lebih boleh dipercayai dan mengelakkan pecah palsu.

Kelebihan

  1. Peraturan yang mudah dan jelas, mudah difahami dan dilaksanakan.
  2. MA menilai kecenderungan umum untuk mengelakkan pasaran lembu pendek dan lama.
  3. Bollinger Bands band atas & bawah mencari titik pecah tempatan dengan tepat.
  4. Pengeluaran yang agak kecil, sesuai dengan pilihan risiko kebanyakan orang.

Risiko

  1. Indikator tunggal cenderung menghasilkan isyarat palsu, boleh diperbaiki dengan penyesuaian parameter.
  2. Tidak dapat mengatasi turun naik pasaran yang besar, boleh menyesuaikan stop loss dengan sewajarnya.
  3. Tidak dapat memperoleh lebih banyak keuntungan daripada tren mega, boleh mempertimbangkan saiz kedudukan yang lebih besar.

Peningkatan

  1. Mengoptimumkan tempoh MA untuk memenuhi lebih banyak produk.
  2. Tambah penapis lain seperti MACD untuk mengurangkan isyarat palsu.
  3. Sesuaikan stop loss secara dinamik untuk mengehadkan drawdown maksimum.
  4. Memperkenalkan pengurusan wang untuk menstabilkan prestasi PnL.

Kesimpulan

Secara amnya ini adalah strategi yang mudah tetapi praktikal yang sesuai untuk kebanyakan orang. Dengan beberapa penyesuaian dan pengoptimuman ia boleh menjadi lebih kukuh dan beradaptasi dengan lebih banyak situasi pasaran. Ia adalah strategi yang patut disyorkan.


/*backtest
start: 2023-12-14 00:00:00
end: 2023-12-18 19:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title="single sma cross", shorttitle="single sma cross",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,overlay=true,currency="USD")
s=input(title="s",defval=90)
p=input(title="p",type=float,defval=.9,step=.1)

sa=sma(close,s)
plot(sa,color=red,linewidth=3)
band=stdev(close,s)*p
plot(band+sa,color=lime,title="")
plot(-band+sa,color=lime,title="")

// ===Strategy Orders============================================= ========
inpTakeProfit = input(defval = 0, title = "Take Profit", minval = 0)
inpStopLoss = input(defval = 0, title = "Stop Loss", minval = 0)
inpTrailStop = input(defval = 0, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)
useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na
useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na
useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na
useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na

longCondition = crossover(close,sa+band) and rising(sa,5)
shortCondition = crossunder(close,sa-band) and falling(sa,5)
crossmid = cross(close,sa)


strategy.entry(id = "Long", long=true, when = longCondition)
strategy.close(id = "Long", when = shortCondition)
strategy.entry(id = "Short", long=false, when = shortCondition)
strategy.close(id = "Short", when = longCondition)
strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=crossmid)
strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=crossmid)

Lebih lanjut