Strategi ini dipanggil
Logik teras strategi ini adalah berdasarkan gabungan Bollinger Bands dan penunjuk RSI.
Pertama, Bollinger Bands mengandungi tiga garis: garisan tengah, garisan atas dan garisan bawah. Garis tengah adalah purata bergerak mudah n hari, sementara garisan atas dan garisan bawah adalah k kali penyimpangan standard di atas dan di bawah garisan tengah. Apabila harga mencapai atau menyentuh garisan atas atau bawah, ia menunjukkan stok berada dalam keadaan overbought atau oversold.
Dalam strategi ini, panjang tempoh garis tengah Bollinger Bands adalah 235 hari, dan nilai parameter k adalah 2. Ia menghasilkan isyarat beli apabila harga jatuh di bawah garis bawah Bollinger atau melintasi di atas garis tengah, dan isyarat jual apabila harga meningkat di atas garis atas Bollinger.
Kedua, penunjuk RSI mencerminkan tahap overbought / oversold saham. RSI di atas 70 menunjukkan status overbought, sementara di bawah 30 status oversold. Panjang tempoh parameter untuk RSI dalam strategi ini adalah 2.
Dalam strategi ini, Bollinger Bands dan penunjuk RSI digunakan bersama-sama: Isyarat beli dihasilkan apabila RSI memecahkan tahap oversold sementara harga menyentuh atau jatuh di bawah garis bawah Bollinger. Isyarat jual dihasilkan apabila RSI pecah dari tahap overbought sementara harga naik di atas garis atas Bollinger.
Strategi ini mempunyai kelebihan berikut:
Terdapat juga beberapa risiko yang berkaitan dengan strategi ini:
Terdapat beberapa arah untuk mengoptimumkan lagi strategi ini:
Ini adalah strategi jangka panjang yang sangat sesuai untuk saham yang sangat tidak menentu seperti FNGU. Dengan menggabungkan Bollinger Bands dan RSI, ia menjana isyarat perdagangan di sekitar tahap harga terlalu banyak beli / terlalu banyak jual, bertujuan untuk menangkap peluang pembalikan harga. Masih ada ruang yang besar untuk pengoptimuman untuk memperluaskan penerapannya dan meningkatkan prestasi.
/*backtest start: 2023-12-29 00:00:00 end: 2024-01-28 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Bollinger + RSI + EMA, Double Strategy Long-Only (by EMKM)", shorttitle="1Min Killer", overlay=true) ///////////// RSI RSIlength = input(2, title="RSI Period Length") // Adjusted RSI period length RSIoverSold = 50 RSIoverBought = 50 price = close vrsi = rsi(price, RSIlength) ///////////// Bollinger Bands BBlength = input(235, minval=1, title="Bollinger Period Length") // Adjusted Bollinger period length BBmult = 2 BBbasis = sma(price, BBlength) BBdev = BBmult * stdev(price, BBlength) BBupper = BBbasis + BBdev BBlower = BBbasis - BBdev BBtarget38 = BBbasis + 0.38 * BBdev // Line at 38% of Bollinger Band width BBtarget50 = BBbasis + 0.50 * BBdev // Line at 50% of Bollinger Band width ///////////// EMA emaLength = input(20, title="EMA Period Length") ema = ema(close, emaLength) source = close buyEntry = crossover(source, BBlower) or (close < BBlower and close > BBbasis) or (low < BBlower and close > BBbasis) // Add condition for low touching Bollinger Band sellEntry = crossunder(source, BBupper) ///////////// Plotting plot(BBbasis, color=color.aqua, title="Bollinger Bands SMA Basis Line") plot(BBupper, color=color.silver, title="Bollinger Bands Upper Line") plot(BBlower, color=color.silver, title="Bollinger Bands Lower Line") plot(BBtarget38, color=color.blue, linewidth=2, title="SMA at 38% of BB width") // Line at 38% plot(BBtarget50, color=color.green, linewidth=2, title="SMA at 50% of BB width") // Line at 50% plot(ema, color=color.orange, title="EMA") // Plot EMA ///////////// RSI + Bollinger Bands Strategy longCondition = crossover(vrsi, RSIoverSold) and buyEntry sellCondition = crossunder(vrsi, RSIoverBought) and close > BBupper close_long = close > BBbasis close_short = close < BBbasis if (not na(vrsi)) if longCondition strategy.entry("Buy", strategy.long, qty=10, stop=BBlower, comment="Buy") else strategy.cancel(id="Buy") if close_long strategy.close("Buy") if (sellCondition) strategy.entry("Sell", strategy.short, qty=10, stop=BBupper, comment="Sell") else strategy.cancel(id="Sell") if close_short strategy.close("Sell")