Ide inti dari strategi ini adalah menambahkan beberapa aturan manajemen perdagangan utama berdasarkan strategi RSI, termasuk stop loss, take profit, trailing stop loss, dan leverage tracking stop loss. Hal ini memungkinkan strategi untuk mencapai pengembalian yang lebih tinggi selama pasar tren dan meminimalkan kerugian selama pasar berkisar dalam backtest.
Strategi ini pertama-tama menghitung indikator RSI. Ini pergi panjang ketika RSI berada di bawah tingkat oversold dan pergi pendek ketika RSI berada di atas tingkat overbought.
Setelah sinyal panjang dipicu, harga tertinggi pada saat itu dicatat sebagai titik referensi stop loss.
Setelah sinyal short dipicu, harga terendah pada saat itu dicatat sebagai titik referensi stop loss.
Pada saat yang sama, jarak take profit dan stop loss tetap ditetapkan. Jika harga mencapai jarak take profit, take profit untuk menutup posisi. Jika mencapai jarak stop loss, close position dengan stop loss.
Jika harga mencapai garis stop loss, posisi ditutup dengan stop loss.
Dengan mengikuti harga tertinggi selama tren naik dan harga terendah selama tren turun, dikombinasikan dengan jarak profit dan stop loss yang tetap, pengembalian yang lebih tinggi dapat dicapai di pasar tren.
Keuntungan terbesar dari strategi ini adalah pengenalan beberapa aturan manajemen perdagangan yang lebih baik mengendalikan risiko sambil memanfaatkan kekuatan strategi RSI.
Secara khusus, keuntungannya adalah:
Trailing stop loss dapat terus mengikuti tren untuk mendapatkan keuntungan yang lebih tinggi selama pasar tren.
Fixed take profit dan stop loss mengunci beberapa keuntungan dan menghindari keuntungan penuh yang dihapus ketika tren berbalik.
Pelacakan stop loss dengan leverage membantu menghindari ekspansi kerugian dan mengontrol risiko.
Kombinasi dari berbagai metode stop loss dapat menggunakan kekuatan mereka dalam lingkungan pasar yang berbeda, meningkatkan stabilitas keseluruhan strategi.
Penyesuaian yang fleksibel dari parameter strategi sesuai dengan instrumen perdagangan yang berbeda dan lingkungan pasar.
Logika yang mudah dimengerti memfasilitasi verifikasi, optimasi dan penerapan.
Risiko utama dari strategi ini berasal dari:
Strategi RSI itu sendiri memiliki beberapa risiko whipsaw, yang dapat memicu stop loss. Parameter RSI dapat dioptimalkan.
Osilasi di sekitar titik stop loss dapat sering memicu stop loss.
Jarak mengambil keuntungan tidak dapat sepenuhnya mengunci keuntungan selama pasar tren. Indikator lain dapat membantu menentukan akhir tren.
Jarak stop loss tetap mungkin terlalu kecil untuk sepenuhnya menghindari kerugian.
Leverage yang berlebihan menyebabkan stop loss terlalu dekat dengan harga masuk.
Periode backtest mungkin tidak sepenuhnya mencerminkan kondisi pasar di masa depan.
Risiko di atas dapat dikurangi melalui penyesuaian parameter, mengoptimalkan mekanisme stop loss, pengendalian risiko dll. Tetapi tidak ada strategi yang dapat sepenuhnya menghindari risiko pasar.
Strategi ini dapat dioptimalkan lebih lanjut dalam aspek berikut:
Mengoptimalkan parameter RSI untuk mengurangi perdagangan whipsaw, dan menguji parameter optimal untuk pasar yang berbeda.
Cobalah indikator lain seperti KD, MACD dikombinasikan dengan RSI untuk menyaring entri.
Gunakan pembelajaran mesin untuk secara dinamis mengoptimalkan parameter stop loss dan take profit.
Uji mekanisme stop loss yang lebih kompleks seperti stop loss osilasi, stop loss rata-rata, stop loss dinamis dll.
Mengoptimalkan pengaturan leverage dan mempelajari dampak pada pengendalian keuntungan dan risiko.
Auto menyesuaikan parameter berdasarkan perubahan rezim pasar, seperti α-Dual Thrust.
Masukkan faktor lain untuk menentukan persistensi tren, misalnya energi volume.
Menggunakan model pembelajaran mendalam untuk mengembangkan cara stop loss yang lebih kuat dan dapat diinterpretasikan.
Uji data dari instrumen dan periode waktu yang berbeda untuk mengevaluasi kekuatan strategi.
Strategi ini melengkapi strategi RSI dengan berbagai metode stop loss, memberikan permainan penuh untuk efek ganda stop loss dalam mendapatkan keuntungan dari tren dan mengendalikan risiko. Masih ada ruang besar untuk optimasi. Ide-ide dapat diperluas ke lebih banyak strategi dan instrumen perdagangan. Strategi stop loss layak penelitian mendalam dan dapat menjadi bagian yang sangat penting dari sistem perdagangan mekanis setelah optimasi dan verifikasi terus-menerus.
/*backtest start: 2022-11-06 00:00:00 end: 2023-11-06 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("Adding some essential components to a prebuilt RSI strategy", overlay=true) /////////////// Component Code Start /////////////// testStartYear = input(2011, "Backtest Start Year") testStartMonth = input(8, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0) testStopYear = input(2016, "Backtest Stop Year") testStopMonth = input(9, "Backtest Stop Month") testStopDay = input(29, "Backtest Stop Day") // testStopDay = testStartDay + 1 testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0) // A switch to control background coloring of the test period testPeriodBackground = input(title="Color Background?", type=bool, defval=true) testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na bgcolor(testPeriodBackgroundColor, transp=97) testPeriod() => true /////////////// Component Code Stop /////////////// ///////////// RSI component ///////////// length = input( 14 ) overSold = input( 30 ) overBought = input( 70 ) price = close vrsi = rsi(price, length) notna = not na(vrsi) /////////////// STRATEGY /////////////// ts = input(99999, "Trailing Stop") / 100 tp = input(99999, "Take Profit") / 100 sl = input(99999, "Stop Loss") / 100 long = notna and crossover(vrsi, overSold) short = notna and crossunder(vrsi, overBought) last_long = long ? time : nz(last_long[1]) last_short = short ? time : nz(last_short[1]) long_signal = crossover(last_long, last_short) short_signal = crossover(last_short, last_long) last_open_long_signal = long_signal ? open : nz(last_open_long_signal[1]) last_open_short_signal = short_signal ? open : nz(last_open_short_signal[1]) last_long_signal = long_signal ? time : nz(last_long_signal[1]) last_short_signal = short_signal ? time : nz(last_short_signal[1]) in_long_signal = last_long_signal > last_short_signal in_short_signal = last_short_signal > last_long_signal last_high = not in_long_signal ? na : in_long_signal and (na(last_high[1]) or high > nz(last_high[1])) ? high : nz(last_high[1]) last_low = not in_short_signal ? na : in_short_signal and (na(last_low[1]) or low < nz(last_low[1])) ? low : nz(last_low[1]) long_ts = not na(last_high) and high <= (last_high - ts) //and high >= last_open_long_signal short_ts = not na(last_low) and low >= (last_low + ts) //and low <= last_open_short_signal long_tp = high >= (last_open_long_signal + tp) short_tp = low <= (last_open_short_signal - tp) long_sl = low <= (last_open_long_signal - sl) short_sl = high >= (last_open_short_signal + sl) leverage = input(200, "Leverage") long_call = last_open_long_signal - (0.8 + 0.2 * (1/leverage)) / leverage * last_open_long_signal short_call = last_open_short_signal + (0.78 + 0.2 * (1/leverage)) / leverage * last_open_short_signal long_call_signal = low <= long_call short_call_signal = high >= short_call if testPeriod() strategy.entry("Long", strategy.long, when=long_signal) strategy.entry("Short", strategy.short, when=short_signal) // plot(long_call, color=red) // plot(short_call, color=green) strategy.close("Long", when=long_call_signal) strategy.close("Short", when=short_call_signal) strategy.close("Long", when=long_tp) strategy.close("Short", when=short_tp) strategy.close("Long", when=long_sl) strategy.close("Short", when=short_sl) strategy.close("Long", when=long_ts) strategy.close("Short", when=short_ts)