Strategi perdagangan reversi rata-rata berdasarkan Bollinger Bands dan Golden Ratio

Penulis:ChaoZhang, Tanggal: 2023-11-16 16:52:55
Tag:

img

Gambaran umum

Strategi ini menggunakan garis rasio emas dari Bollinger Bands dikombinasikan dengan formasi rata-rata bergerak untuk melakukan reversi rata-rata.

Logika Strategi

  1. Menghitung Bollinger Bands band tengah, band atas dan band bawah rasio emas
  • Band tengah: vwma dari n periode
  • Garis atas: Garis tengah + k * n periode standar deviasi
  • Rasio emas band bawah: Band tengah - 0.618 * n periode standar deviasi
  1. Formasi hakim
  • MA 50 hari di atas MA 200 hari, menunjukkan tren naik
  • Harga menyentuh atau di bawah band bawah rasio emas, sebagai sinyal beli
  1. Keluar
  • Ketika harga menembus band atas BB, harga dianggap telah bergerak dari band bawah, posisi dekat
  1. Stop loss
  • Tentukan persentase stop loss tetap, misalnya 5%

Keuntungan

  1. Menggunakan vwma alih-alih sma untuk garis tengah BB lebih mencerminkan pergerakan harga

  2. Rasio emas adalah dukungan / resistensi penting, memberikan dasar untuk pembalikan

  3. MA dalam tren naik memastikan tren keseluruhan naik

  4. Stop loss tetap mengendalikan kerugian untuk setiap perdagangan

Risiko

  1. Rasio emas garis tidak dijamin dukungan, harga mungkin menerobos

  2. Stop loss tetap mungkin sewenang-wenang, harus mempertimbangkan penyesuaian berdasarkan volatilitas

  3. MA uptrend mungkin palsu breakout, harus memeriksa lebih banyak indikator

  4. Tidak yakin panjang pembalikan, perlu keuntungan yang wajar mengambil keluar

Peningkatan

  1. Uji kombinasi yang berbeda dari parameter seperti periode BB, SD multiplier, persentase stop loss tetap dll.

  2. Tambahkan lebih banyak indikator untuk menentukan tren pasar dan kemungkinan pembalikan, misalnya MACD, KD dll.

  3. Pertimbangkan pemberhentian dinamis, seperti ATR atau pemberhentian trailing

  4. Mengoptimalkan pengambilan keuntungan seperti bergerak profit stop, mengambil keuntungan parsial dll

Ringkasan

Perdagangan strategi ini berarti pembalikan menggunakan garis rasio emas BB, dengan logika yang jelas, parameter sederhana, dan pengurangan yang dapat dikontrol. tetapi juga memiliki risiko, membutuhkan pengujian dan pengoptimalan lebih lanjut, menambahkan lebih banyak indikator teknis untuk tren dan berhenti/keluar yang lebih baik sebelum digunakan secara aktual. secara keseluruhan memberikan ide untuk menggunakan rasio emas dalam perdagangan kuantitatif, layak dieksplorasi lebih lanjut.


/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 23:59:59
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/
// © mohanee

//@version=4

strategy(title="Bollinger Band with Fib Golden Ratio (0.618)",  shorttitle="Bollinger Band with Fib Golden Ratio" , overlay=true, pyramiding=1,     default_qty_type=strategy.percent_of_equity,  default_qty_value=20, initial_capital=10000, currency=currency.USD)  

length = input(50,title="BB Length" , minval=1)
src1 = input(hlc3, title="Source")
//mult1 = input(1.33, minval=0.001, maxval=50)
mult = input(1.5,title="multplier", minval=0.001, maxval=50)

stopLoss=input(5,title="Stop Loss",minval=1)

basis = vwma(src1, length)
dev = mult * stdev(src1, length)

//dev3 = mult3 * stdev(src, length)

upper_618= basis + (0.618*dev)
lower_618= basis - (0.618*dev)

//lower_618_dev3= basis - (0.618*dev3)



plot_upper618= plot(upper_618, color=color.purple, linewidth=2, title="0.618")
plot(basis, color=color.purple,style=plot.style_circles,  linewidth=2)

plot_lower618= plot(lower_618, color=color.purple, linewidth=2, title="0.618 entry")
//plot_lower618_dev3= plot(lower_618_dev3, color=color.red, linewidth=1, title="0.618 stop")

//plot_lower618= plot(lower_618, color=color.purple, linewidth=1, title="0.618 entry")

ema200=ema(close,200)
ema50=ema(close,50)

plot (ema200, title="ema200", color=color.orange, linewidth=2)
plot (ema50, title="ema50", color=color.blue , linewidth=2)


longCondition= ema50 > ema200

strategy.entry(id="BB_Fib618", long=true, when = longCondition and ( close < lower_618  or  low <= lower_618)  )

strategy.close(id="BB_Fib618",  comment="points="+tostring(close - strategy.position_avg_price,  "###.##") , when = strategy.position_size >= 1  and crossover(close,upper_618 )) 

//stoploss exit
stopLossVal = strategy.position_size>=1 ?  strategy.position_avg_price * ( 1 - (stopLoss/100) ) : 0.00
strategy.close(id="BB_Fib618", comment="SL="+tostring(close - strategy.position_avg_price,  "###.##"), when=abs(strategy.position_size)>=1 and close < stopLossVal ) //and close > strategy.position_avg_price )


Lebih banyak