Strategi Saluran Gelombang dan Stop Loss


Tanggal Pembuatan: 2023-11-23 15:49:12 Akhirnya memodifikasi: 2023-11-23 15:49:12
menyalin: 1 Jumlah klik: 772
1
fokus pada
1617
Pengikut

Strategi Saluran Gelombang dan Stop Loss

Ringkasan

Strategi Bollinger Bands adalah strategi klasik yang menggunakan Bollinger Bands untuk melacak tren dan overbought dan oversold sinyal. Versi ini menambahkan mekanisme stop loss untuk mengendalikan risiko berdasarkan strategi asli.

Strategi menilai overbought dan oversold di pasar dengan membandingkan rantai Brin dengan rantai atas dan bawah, dan melacak tren dengan mengikuti rantai Brin. Daerah di antara rantai Brin dan rantai bawah mencerminkan kisaran pergerakan pasar saat ini.

Prinsip

Bollinger Bands adalah indikator teknis yang mencerminkan volatilitas dan kelembaban pasar. Ketika harga baru saja menyentuh Bollinger Bands di dekat downtrend, menunjukkan bahwa pasar berada dalam keadaan oversold, pada saat itu celah yang muncul secara berturut-turut memiliki kemungkinan lebih besar untuk diisi, berdasarkan karakteristik regresi harus mempertimbangkan untuk membangun posisi multi.

Strategi ini menggabungkan sinyal overbought dan oversold dari Bollinger Bands untuk menciptakan posisi trend-following dan menambah mekanisme stop loss untuk mengendalikan risiko.

Ketika harga naik melewati Bollinger Bands dan turun, berarti pasar masuk ke zona wajar dari zona oversold, dan pada saat itu posisi overhead dapat dibuat. Ketika harga turun melewati Bollinger Bands dan turun, berarti pasar masuk ke zona overbought, dan pada saat itu posisi overhead dapat dibuat.

Setelah membangun posisi, atur stop loss dengan persentase tetap untuk mengendalikan risiko. Apabila kerugian melebihi batas stop loss yang ditetapkan, stop loss akan keluar dari posisi saat ini, untuk menghindari kerugian yang terlalu besar.

Keunggulan

  1. Strategi ini digabungkan dengan indikator Bollinger Bands untuk menilai area overbought dan oversold, dengan menilai crossover harga dengan track up dan down untuk mencapai low buy high sell.

  2. Menggunakan volatilitas Brin Band untuk trend tracking trading

  3. Menambahkan mekanisme stop loss yang efektif untuk mengendalikan kerugian maksimum dalam satu transaksi

  4. Kombinasi dari trend tracking dan stop loss, dapat menghasilkan keuntungan yang stabil

Risiko dan optimasi

  1. Penetapan parameter Brinband dapat mempengaruhi kualitas sinyal trading. Panjang lintasan tengah n dan perkalian standar k perlu diatur secara wajar sesuai dengan pasar yang berbeda, jika tidak akan mempengaruhi akurasi sinyal trading.

  2. Stop loss yang terlalu besar atau terlalu kecil akan mempengaruhi stabilitas keuntungan. Stop loss yang terlalu besar akan meningkatkan risiko kerugian tunggal. Stop loss yang terlalu kecil akan meningkatkan kemungkinan stop loss yang dipicu.

  3. Anda dapat mempertimbangkan untuk memfilter sinyal dengan indikator lain untuk meningkatkan akurasi sinyal perdagangan.

  4. Anda dapat menguji pengaturan waktu yang berbeda untuk memegang posisi, seperti perdagangan yang lebih frekuensi tinggi dalam kombinasi dengan skala jam atau periode Brin yang lebih pendek, untuk meningkatkan efisiensi penggunaan dana.

Meringkaskan

Strategi ini menggabungkan Brin band untuk menentukan area overbought dan oversold untuk membangun posisi, meningkatkan stop loss untuk mengendalikan risiko, dan merupakan strategi tipe trend yang umum. Dengan pengaturan parameter yang dioptimalkan, kombinasi sinyal perdagangan yang lebih akurat dan pengaturan tingkat stop loss, dapat menghasilkan keuntungan yang stabil.

Kode Sumber Strategi
/*backtest
start: 2023-11-15 00:00:00
end: 2023-11-22 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="Bollinger Bands Strategy", overlay=false, shorttitle="BBS", pyramiding=0, currency=currency.USD, commission_type=strategy.commission.percent, commission_value=0.03, initial_capital=1000)
source = input(close, "Source")
length = input.int(20, minval=1)
mult = input.float(2.0, minval=0.001, maxval=50, step=0.001)
stopLossFactor = input.float(1, "Stop Loss Percent", maxval = 100, minval = 0, step=0.1)

basis = ta.sma(source, length)
dev = mult * ta.stdev(source, length)
upper = basis + dev
lower = basis - dev

var float lastTradePrice = na
var float stopLossLow = na
var float stopLossHigh = na
var bool currentIsLong = na

var bool nextExpectedIsLong = true

var bool existedLong = false
var bool existedShort = false

buyEntry = ta.crossover(source, lower)
sellEntry = ta.crossunder(source, upper)

if (buyEntry and nextExpectedIsLong == true)
	strategy.entry("BBandLE", strategy.long, comment="BBandLE")
	nextExpectedIsLong := false
	if(nz(strategy.position_size[1], 0) < 0) // new position detected
	    lastTradePrice := close
	    stopLossLow := lastTradePrice * (1 - (stopLossFactor / 100))
	    stopLossHigh := lastTradePrice * (1 + (stopLossFactor / 100))
else
    strategy.cancel("BBandLE")

if (sellEntry and nextExpectedIsLong == false)
	strategy.entry("BBandSE", strategy.short, comment="BBandSE")
	nextExpectedIsLong := true
	if(nz(strategy.position_size[1], 0) > 0) // new position detected
        lastTradePrice := close
        stopLossLow := lastTradePrice * (1 - (stopLossFactor / 100))
        stopLossHigh := lastTradePrice * (1 + (stopLossFactor / 100))
else
    strategy.cancel("BBandSE")

strategy.close("BBandLE", close < stopLossLow)
strategy.close("BBandSE", close > stopLossHigh)

// if(nz(strategy.position_size[1], 0) < 0 and close > stopLossHigh)
//     strategy.entry("BBandLE", strategy.long, comment="BBandLE")
// 	lastTradePrice := close
// 	stopLossLow := lastTradePrice * (1 - (stopLossFactor / 100))
// 	stopLossHigh := lastTradePrice * (1 + (stopLossFactor / 100))
// if(nz(strategy.position_size[1], 0) > 0 and close < stopLossLow)
//     strategy.exit("BBandSE", strategy.short, comment="BBandSE")
//     lastTradePrice := close
//     stopLossLow := lastTradePrice * (1 - (stopLossFactor / 100))
//     stopLossHigh := lastTradePrice * (1 + (stopLossFactor / 100))

plot(source, "close", color.blue)
plot(lower, "lower", color.red)
plot(upper, "upper", color.red)
plot(stopLossLow, "StopLossLow", color.black)
plot(stopLossHigh, "StopLossHigh", color.black)
plot(lastTradePrice, "lastTradePrice", color.green)
plotchar(strategy.position_size > 0, char="-", size=size.tiny, location=location.bottom, color=color.green)
plotchar(strategy.position_size < 0, char="-", size=size.tiny, location=location.bottom, color=color.red)