Strategi ini menggunakan Bollinger Bands, penunjuk RSI dan purata bergerak 200 tempoh untuk mengenal pasti arah trend dan memasuki perdagangan kontra-trend berhampiran Bollinger Bands apabila arah trend sesuai, untuk membuat keuntungan.
Pertama, purata bergerak 200 tempoh digunakan untuk menentukan arah trend keseluruhan. Trend menaik ditakrifkan apabila harga berada di atas purata bergerak, dan trend menurun ditakrifkan apabila harga berada di bawah. Kedua, apabila dalam trend menaik, entri panjang dilaksanakan jika penunjuk RSI menunjukkan oversold dan mendekati Bollinger Lower Band; apabila dalam trend menurun, entri pendek dilaksanakan jika RSI menunjukkan overbought dan mendekati Bollinger Upper Band. Akhirnya, penunjuk ATR digunakan untuk menetapkan tahap stop loss, dan mengambil keuntungan ditetapkan menjadi 2 kali stop loss.
Kelebihan terbesar strategi ini ialah ia menggabungkan beberapa penunjuk untuk menentukan arah trend dan masa kemasukan. Pertama, purata bergerak 200 hari dapat mengenal pasti trend utama dengan berkesan. Kedua, Band Atas / Bawah Bollinger Band menunjukkan kawasan di mana harga mungkin berbalik. Akhirnya, RSI mencadangkan kemungkinan masa pembalikan. Penggunaan beberapa penunjuk mengelakkan risiko salah menilai dari satu sahaja.
Risiko utama strategi ini berasal dari pengenalan yang tidak tepat terhadap trend utama dan isyarat pembalikan. Jika trend itu salah dinilai, ia boleh membawa kepada kerugian berturut-turut. Jika isyarat pembalikan salah, kemungkinan stop loss yang dicetuskan akan tinggi. Juga, perdagangan kontra-trend itu sendiri mempunyai risiko yang lebih tinggi yang memerlukan operasi yang berhati-hati.
Untuk mengurangkan risiko di atas, adalah dinasihatkan untuk menyesuaikan parameter purata bergerak atau menambah penunjuk lain untuk pengesahan, untuk meningkatkan ketepatan.
Terdapat ruang yang besar untuk mengoptimumkan strategi ini: pertama, menyesuaikan parameter purata bergerak untuk meningkatkan ketepatan pengenalan trend. Kedua, menyesuaikan parameter Bollinger Bands atau menambah Saluran Kalman untuk mencari zon pembalikan yang lebih baik. Ketiga, menambah penunjuk lain seperti MACD untuk pengesahan untuk mengelakkan isyarat yang salah. Keempat, mengoptimumkan tetapan nisbah stop loss untuk mengurangkan kemungkinan peristiwa stop loss sebenar.
Strategi ini menggabungkan Bollinger Bands, RSI dan Moving Averages untuk menentukan trend dan waktu, dan telah mencapai hasil yang baik. Tetapi pengoptimuman lanjut pada penyesuaian parameter dan kawalan risiko diperlukan untuk meningkatkan kestabilan keuntungan. Secara keseluruhan, dengan logika yang jelas dan pelaksanaan yang mudah, ia bernilai penyelidikan dan aplikasi lanjut.
/*backtest start: 2023-11-19 00:00:00 end: 2023-12-19 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Gab EMA + rsi + bb", overlay=true) // Custom RSI RSIlength = input(3, minval=1 , title="lookback length of RSI") RSIOverBought = input(70, title="RSI OB") RSIOverSold = input(30, title="RSI OS") RSIprice = close vrsi = rsi(RSIprice, RSIlength) //Bollinger Bands BBlength = input(20, minval=1,title="Bollinger Period Length") BBmult = input(2.0, minval=0.001, maxval=50, title="Bollinger Bands Standard Deviation") BBbasis = sma(close, BBlength) BBdev = BBmult * stdev(close, BBlength) BBupper = BBbasis + BBdev BBlower = BBbasis - BBdev source = close //EMA emaLength=input(200) //Set TP and SL values sl_short = high + (syminfo.mintick * 5 * 10) tp_short = low - (syminfo.mintick * 10 * 10) sl_long = low - (syminfo.mintick * 5 * 10) tp_long = high + (syminfo.mintick * 10 * 10) //Strategy Entry and Exit strategy.entry("sell", strategy.short, when = low < ema(low, emaLength) and vrsi < RSIOverSold and low < BBlower and barstate.isconfirmed) strategy.exit("closeshort", from_entry="sell", limit=tp_short, stop=sl_short, when=strategy.position_size != 0) strategy.entry("buy", strategy.long, when = high > ema(high, emaLength) and vrsi > RSIOverBought and high > BBupper and barstate.isconfirmed) strategy.exit("closelong", from_entry="buy", limit=tp_long, stop=sl_long, when=strategy.position_size != 0)