Strategi ini menggabungkan penggunaan indikator RSI untuk mengidentifikasi sinyal overbought dan oversold, Bollinger Bands untuk menentukan price breakout, dan moving average crossover untuk menilai pasar pada tahap tren yang berbeda, untuk mendapatkan keuntungan.
Strategi ini terdiri dari indikator utama berikut:
Indikator RSI: Ketika garis RSI melintasi ambang overbought atau melintasi di bawah ambang oversold, perdagangan panjang atau pendek ditempatkan sesuai.
Bollinger Bands: Ketika harga menembus Bollinger band atas, perdagangan pendek ditempatkan; ketika harga menembus Bollinger band bawah, perdagangan panjang ditempatkan.
Moving Average: Harga tertinggi dan terendah selama periode tertentu (misalnya 5 periode) dihitung. Ketika harga lebih tinggi dari titik tertinggi selama 5 periode terakhir, perdagangan panjang ditempatkan; ketika harga lebih rendah dari titik terendah selama 5 periode terakhir, perdagangan pendek ditempatkan.
MACD: Crossover dan death cross dari garis cepat, garis lambat dan garis MACD digunakan sebagai indikator penilaian tambahan.
Indikator ini bekerja sama untuk menilai pasar pada tahap tren dan konsolidasi. Bollinger Bands mengidentifikasi breakout dan pembalikan ke rata-rata. Rata-rata bergerak menentukan titik pembalikan tren selama konsolidasi. RSI ekstrim melihat kondisi pasar yang terlalu banyak dibeli / terlalu banyak dijual untuk perdagangan kontra-tren.
Keuntungan dari strategi ini adalah:
Kombinasi dari beberapa indikator meningkatkan akurasi. RSI, Bollinger Bands, moving average dan banyak lagi berinteraksi untuk menghasilkan sinyal perdagangan yang dapat diandalkan.
Berlaku pada kondisi pasar yang berbeda. Bollinger Bands untuk tren, moving average untuk konsolidasi, RSI untuk ekstrim. Fleksibilitas dijamin.
Frekuensi perdagangan yang wajar. parameter indikator diatur secara konservatif untuk menghindari over-trading.
Struktur kode yang bersih, mudah dimengerti, diedit dan dibangun.
Beberapa risiko membutuhkan perhatian:
Risiko parameter. parameter indikator yang tidak tepat dapat menghasilkan sinyal perdagangan yang salah. parameter membutuhkan pengujian dan optimasi terus menerus.
Risiko switch panjang/pendek. Perubahan posisi panjang/pendek yang sering terjadi di sekitar pembalikan tren meningkatkan biaya perdagangan. Periode kepemilikan dapat disesuaikan.
Risiko pengkodean. kelemahan logis yang tersembunyi dalam kode dapat menyebabkan perdagangan yang tidak normal. penanganan pengecualian dan logging harus ditingkatkan.
Strategi ini dapat ditingkatkan dalam aspek berikut:
Tambahkan stop loss untuk mengunci keuntungan dan mengurangi kerugian.
Masukkan volume perdagangan untuk menghindari sinyal palsu.
Memperkenalkan pembelajaran mesin untuk menemukan parameter optimal berdasarkan data historis.
Bangun antarmuka grafis untuk tampilan kinerja yang intuitif.
Melakukan backtesting untuk menemukan kombinasi parameter terbaik.
Strategi ini menggabungkan rata-rata bergerak, Bollinger Bands, RSI dan banyak lagi untuk menghasilkan sinyal perdagangan. fleksibilitas dan akurasi adalah kekuatan yang jelas, sementara pengaturan parameter dan risiko pengkodean perlu dikelola. Langkah selanjutnya adalah menambahkan stop, pembelajaran mesin untuk optimasi parameter, GUI untuk pemantauan, dan untuk meningkatkan penanganan pengecualian.
/*backtest start: 2024-01-19 00:00:00 end: 2024-02-15 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("MD strategy", overlay=true) lengthrsi = input( 14 ) overSold = input( 30 ) overBought = input( 70 ) price = close source = close lengthbb = input(20, minval=1) mult = input(2.0, minval=0.001, maxval=50) direction = input(0, title = "Strategy Direction",minval=-1, maxval=1) fastLength = input(12) slowlength = input(26) MACDLength = input(9) consecutiveBarsUp = input(3) consecutiveBarsDown = input(3) lengthch = input( minval=1, maxval=1000, defval=5) upBound = highest(high, lengthch) downBound = lowest(low, lengthch) ups = price > price[1] ? nz(ups[1]) + 1 : 0 dns = price < price[1] ? nz(dns[1]) + 1 : 0 MACD = ema(close, fastLength) - ema(close, slowlength) aMACD = ema(MACD, MACDLength) delta = MACD - aMACD strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long)) basis = sma(source, lengthbb) dev = mult * stdev(source, lengthbb) upper = basis + dev lower = basis - dev vrsi = rsi(price, lengthrsi) if (not na(vrsi)) if (crossover(vrsi, overSold)) strategy.entry("RsiLE", strategy.long, comment="RsiLE") if (crossunder(vrsi, overBought)) strategy.entry("RsiSE", strategy.short, comment="RsiSE") if (crossover(source, lower)) strategy.entry("BBandLE", strategy.long, stop=lower, oca_name="BollingerBands", comment="BBandLE") else strategy.cancel(id="BBandLE") if (crossunder(source, upper)) strategy.entry("BBandSE", strategy.short, stop=upper, oca_name="BollingerBands", comment="BBandSE") else strategy.cancel(id="BBandSE") if (not na(close[lengthch])) strategy.entry("ChBrkLE", strategy.long, stop=upBound + syminfo.mintick, comment="ChBrkLE") strategy.entry("ChBrkSE", strategy.short, stop=downBound - syminfo.mintick, comment="ChBrkSE") //plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)