
Idea teras strategi ini adalah berdasarkan strategi RSI, dengan tambahan beberapa peraturan pengurusan perdagangan utama, termasuk berhenti, berhenti, berhenti, dan berhenti. Ini membolehkan strategi untuk mendapatkan keuntungan yang lebih tinggi dalam keadaan trend semasa pengukuran semula, sambil meminimumkan kerugian dalam keadaan goyah.
Strategi ini mulakan dengan mengira indikator RSI, melakukan plus apabila RSI berada di bawah garis overbought dan melakukan short apabila RSI berada di atas garis oversold.
Setelah beberapa isyarat dicetuskan, rekodkan harga tertinggi pada masa itu sebagai titik rujukan untuk menjejaki hentian. Jika harga lebih rendah daripada titik hentian menjejaki tolak daripada amplitudo hentian, hentikan kedudukan rata.
Selepas isyarat penyingkiran, rekodkan harga terendah pada masa itu sebagai titik rujukan untuk menjejaki hentian. Jika harga lebih tinggi daripada titik hentian yang dijejaki ditambah dengan amplitudo hentian, hentikan kedudukan rata.
Pada masa yang sama, tetapkan jarak berhenti dan berhenti. Jika harga mencapai jarak berhenti, hentikan penyingkiran; jika mencapai jarak berhenti, hentikan penyingkiran.
Selain itu, jika harga menyentuh barisan penangguhan penangguhan penangguhan penangguhan penangguhan penangguhan penangguhan penangguhan penangguhan penangguhan penangguhan penangguhan penangguhan penangguhan penangguhan penangguhan penangguhan
Dengan menjejaki harga teratas apabila trend naik, dan harga terendah apabila trend turun, digabungkan dengan jarak berhenti berhenti yang tetap, anda boleh mendapatkan keuntungan yang lebih tinggi dalam keadaan trend. Pada masa yang sama, menetapkan penjejakan stop loss dengan leverage dapat mengelakkan peningkatan kerugian.
Kelebihan terbesar strategi ini adalah bahawa ia memperkenalkan beberapa peraturan pengurusan perdagangan, yang dapat mengawal risiko dengan lebih baik sambil menggunakan kelebihan strategi RSI.
Secara khusus, kelebihan strategi ini ialah:
Dalam keadaan trend, stop loss yang dijejaki boleh terus dijejaki trend keuntungan, sehingga mendapat keuntungan yang lebih tinggi.
Jarak hentian yang tetap dapat mengunci sebahagian keuntungan dan mengelakkan semua keuntungan dikurung apabila trend berbalik.
Leverage Tracking Stop Loss boleh mengelakkan kerugian daripada berkembang dan mengawal risiko.
Gabungan pelbagai kaedah hentikan kerugian boleh memainkan kelebihan masing-masing dalam keadaan pasaran yang berbeza, meningkatkan kestabilan strategi secara keseluruhan.
Parameter strategi boleh disesuaikan secara fleksibel untuk menyesuaikan diri dengan pelbagai jenis perdagangan dan keadaan pasaran.
Logik strategi jelas dan mudah difahami, mudah untuk disahkan, dioptimumkan dan digunakan.
Risiko utama dari strategi ini adalah:
Strategi RSI sendiri mempunyai risiko perdagangan yang salah, di mana mungkin berlaku keadaan di mana stop loss dicetuskan. Ia boleh dioptimumkan dengan menyesuaikan parameter RSI.
Guncangan berhampiran titik henti mungkin sering mencetuskan hentian. Jarak hentian boleh diperluaskan dengan sewajarnya untuk mengelakkannya.
Jarak berhenti tidak dapat sepenuhnya mengunci keuntungan dalam keadaan trend. Ia boleh digabungkan dengan petunjuk lain untuk menentukan kapan trend berakhir.
Jarak hentian tetap mungkin terlalu kecil untuk mengelakkan kerugian sepenuhnya. Anda boleh mempertimbangkan untuk menggunakan hentian bergoyang atau hentian dinamik.
Leverage yang terlalu tinggi boleh menyebabkan Leverage Tracking Stop Loss terlalu dekat dengan harga pembukaan kedudukan. Tetapan Leverage harus dikurangkan dengan sewajarnya.
Julat masa pengulangan tidak dapat mewakili sepenuhnya keadaan pasaran masa depan. Anda harus melakukan kawalan risiko yang baik dan mengesahkan keberkesanan tempoh masa yang berbeza.
Risiko di atas boleh dikurangkan dengan cara menyesuaikan parameter, mengoptimumkan mekanisme hentikan kerugian, kawalan risiko dan sebagainya. Tetapi tidak ada strategi yang dapat mengelakkan risiko pasaran sepenuhnya, perlu melakukan kawalan risiko.
Strategi ini boleh dioptimumkan dengan cara berikut:
Mengoptimumkan parameter RSI, mengurangkan kemungkinan perdagangan yang salah. Anda boleh menguji kombinasi parameter terbaik untuk pasaran yang berbeza.
Cubalah dengan penunjuk lain untuk menentukan masa masuk, seperti KD, MACD, dan lain-lain, dengan gabungan RSI membentuk penapis berganda.
Mengoptimumkan parameter stop loss secara dinamik menggunakan kaedah pembelajaran mesin dan lain-lain.
Cubalah dengan cara yang lebih rumit, seperti penutupan bergoyang, penutupan purata, dan penutupan dinamik.
Optimumkan tetapan tahap leverage, kesan pelbagai leverage terhadap pendapatan dan kawalan risiko.
Parameter yang disesuaikan secara automatik mengikut perubahan keadaan pasaran, seperti α-Dual Thrust.
Ia dikombinasikan dengan faktor-faktor lain untuk menilai trend yang berterusan, seperti tenaga jumlah transaksi dan sebagainya.
Menggunakan teknologi seperti pembelajaran mendalam untuk membangunkan cara yang lebih stabil dan dapat difahami untuk menghentikan kerosakan.
Uji data dari pelbagai jenis dan tempoh untuk menilai keberkesanan strategi.
Strategi ini menambah pelbagai cara untuk menghentikan kerugian berdasarkan strategi RSI, untuk memainkan peranan ganda dalam keuntungan trend dan kawalan risiko. Ruang untuk mengoptimumkan strategi masih luas, dan boleh diambil dari banyak cara untuk meningkatkan kelebihan strategi dan mengurangkan risiko.
/*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)