Strategi pembalikan tren berbasis Bollinger Bands


Tanggal Pembuatan: 2023-11-01 11:29:34 Akhirnya memodifikasi: 2023-11-01 11:29:34
menyalin: 0 Jumlah klik: 702
1
fokus pada
1617
Pengikut

Strategi pembalikan tren berbasis Bollinger Bands

Ringkasan

Strategi ini didasarkan pada indikator Bollinger Bands dan Moving Averages, yang menentukan apakah harga mendekati Bollinger Bands dan melakukan posisi long atau short ketika harga mendekati Bollinger Bands dan mendapatkan keuntungan. Jika harga menembus Bollinger Bands dan naik ke Bollinger Bands, maka Anda akan melihat ke bawah. Jika harga turun ke Bollinger Bands dan turun ke bawah, maka Anda akan melihat ke bawah.

Prinsip

Strategi ini didasarkan pada dua sinyal masuk:

  1. Sinyal multihead: ketika harga close out menyentuh rel bawah, dan harga close out lebih tinggi dari garis rata-rata EMA, entitas garis K sebelumnya adalah garis negatif, entitas garis K saat ini adalah garis positif.

  2. Sinyal kosong: Bila harga tutup menyentuh lintasan atas, dan harga tutup berada di bawah garis rata-rata EMA, entitas garis K sebelumnya adalah garis positif, entitas garis K saat ini adalah garis negatif, maka kosonglah.

Metode Stop Loss: Stop loss tetap. Stop loss adalah faktor risiko-reward yang beberapa kali lipat dari harga masuk ke jarak lintasan lawan.

Cara penutupan: Tujuan untuk mendapatkan keuntungan dari lawan. Yaitu melakukan penutupan lebih banyak untuk downrail, melakukan penutupan kosong untuk uprail.

Keunggulan

  1. Keuntungan dari kombinasi antara strategi trend dan reversal adalah kinerja yang lebih baik dalam situasi tren yang bergejolak.

  2. Menggunakan indikator BRI untuk menilai area overbought dan oversold, dan untuk menentukan peluang reversal.

  3. Stop loss tetap diatur secara masuk akal untuk membantu pengendalian risiko.

  4. “Mobil Stop” adalah cara untuk memaksimalkan keuntungan.

Risiko

  1. Strategi penembusan mudah untuk di-arbitrage, jadi waspadalah terhadap penembusan palsu.

  2. Stop loss dapat sering dipicu ketika situasi terlalu kacau.

  3. Stop loss tetap tidak dapat disesuaikan dengan fluktuasi pasar dan mungkin terlalu longgar atau terlalu radikal.

  4. Jika parameter Brinet tidak disetel pada waktu yang tepat, efeknya mungkin kurang memuaskan.

Optimalkan Pikiran

  1. Anda dapat mempertimbangkan untuk memfilter sinyal masuk dengan kombinasi indikator RSI, misalnya RSI lebih tinggi dari 50 dan RSI lebih rendah dari 50 dan RSI lebih rendah dari 50 untuk menghindari sinyal yang salah.

  2. Menambahkan fungsi untuk menyesuaikan jarak stop loss secara otomatis, membuat stop loss lebih fleksibel. Misalnya, pengaturan jarak stop loss secara dinamis berdasarkan indikator ATR.

  3. Mengoptimalkan parameter Brin, mencari kombinasi parameter terbaik.

  4. Anda dapat menguji parameter EMA yang berbeda untuk mengoptimalkan efek pagar di garis rata.

Meringkaskan

Strategi ini secara komprehensif mempertimbangkan tren dan reversal, menggunakan Brin band untuk menentukan overbuy oversell titik masuk, dengan bergerak stop stop untuk memaksimalkan keuntungan. Dalam situasi goyangan tren, kinerja yang lebih baik. Namun, perlu berhati-hati untuk mencegah terjadinya kebocoran, sambil menyesuaikan parameter untuk mengoptimalkan efektivitas strategi. Secara keseluruhan merupakan strategi yang lebih praktis dan efisien.

Kode Sumber Strategi
/*backtest
start: 2023-10-24 00:00:00
end: 2023-10-31 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

// Welcome to yet another script. This script was a lot easier since I was stuck for so long on the Donchian Channels one and learned so much from that one that I could use in this one
// This code should be a lot cleaner compared to the Donchian Channels, but we'll leave that up to the pro's
// This strategy has two entry signals, long = when price hits lower band, while above EMA, previous candle was bearish and current candle is bullish
// Short = when price hits upper band, while below EMA, previous candle was bullish and current candle is bearish
// Take profits are the opposite side's band(lower band for long signals, upper band for short signals). This means our take profit price will change per bar
// Our stop loss doesn't change, it's the difference between entry price and the take profit target divided by the input risk reward
// At the time of writing this, I could probably calculate that much easier by simply multiplying the opposite band by the input risk reward ratio
// Since I want to get this script out and working on the next one, I won't clean that up, I'm sorry
// strategy(shorttitle="BB Trending Reverse Strategy", title="Bollinger Bands Trending Reverse Strategy", overlay=true, default_qty_type = strategy.cash, default_qty_value = 150, initial_capital = 1000, currency = currency.USD, commission_type = "percent", commission_value = 0.036)

// The built-in Bollinger Band indicator inputs and variables, added some inputs of my own and organised the code
length              = input(20, minval=1)
src                 = input(close, title="Source")
mult                = input(2.0, minval=0.001, maxval=50, title="StdDev")
emaInput            = input(title = "EMA Input", type = input.integer, defval = 200, minval = 10, maxval = 400, step = 1)
riskreward          = input(title = "Risk/Reward Ratio", type = input.float, defval = 1.50, minval = 0.01, maxval = 100, step = 0.01)
offset              = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)
basis               = sma(src, length)
dev                 = mult * stdev(src, length)
upper               = basis + dev
lower               = basis - dev
ema                 = ema(close, emaInput)

// These are our conditions as explained above
entryLong           = low[1] <= lower[1] and low <= lower and low > ema
entryShort          = high[1] >= upper[1] and high >= upper and high < ema
reversecandleLong   = close > open and close[1] < open[1]
reversecandleShort  = close < open and close[1] > open[1]
var stopLong        = 0.0
var stopShort       = 0.0

// These are our entry signals, notice how the stop condition is within the if statement while the strategy.exit is outside of the if statement, this way the take profit targets trails up or down depending on what the price does
if reversecandleLong and entryLong and strategy.position_size == 0
    stopLong := (((close / upper - 1) * riskreward + 1) * close)
    strategy.entry("Long Entry", strategy.long, comment = "Long Entry")
    
strategy.exit("Exit Long", "Long Entry", limit = upper, stop = stopLong, comment = "Exit Long")

if reversecandleShort and entryShort and strategy.position_size == 0
    stopShort := (((close / lower - 1) / riskreward + 1) * close)
    strategy.entry("Short Entry", strategy.short, comment = "Short Entry")

strategy.exit("Exit Short", "Short Entry", limit = lower, stop = stopShort, comment = "Exit Short")


// The built-in Bollinger Band plots
plot(basis, "Basis", color=#872323, offset = offset)
p1 = plot(upper, "Upper", color=color.teal, offset = offset)
p2 = plot(lower, "Lower", color=color.teal, offset = offset)
fill(p1, p2, title = "Background", color=#198787, transp=95)
plot(ema, color=color.red)

// These plots are to check the stoplosses, they can  make a mess of your chart so only use these if you want to make sure these work
// plot(stopLong)
// plot(stopShort)