Peraturan Dagangan Kaos Strategi Hentikan Kerugian

Penulis:ChaoZhang, Tarikh: 2023-11-07 16:44:31
Tag:

img

Ringkasan

Idea utama strategi ini adalah untuk menambah beberapa peraturan pengurusan perdagangan utama berdasarkan strategi RSI, termasuk stop loss, mengambil keuntungan, trailing stop loss, dan leverage tracking stop loss. Ini membolehkan strategi untuk mencapai pulangan yang lebih tinggi semasa pasaran trend dan meminimumkan kerugian semasa pasaran berkisar dalam backtest.

Logika Strategi

Strategi ini mula-mula mengira penunjuk RSI. Ia pergi panjang apabila RSI berada di bawah tahap oversold dan pergi pendek apabila RSI berada di atas tahap overbought.

Selepas isyarat panjang dicetuskan, harga tertinggi pada masa itu direkodkan sebagai titik rujukan stop loss.

Selepas isyarat pendek dicetuskan, harga terendah pada masa itu direkodkan sebagai titik rujukan stop loss.

Pada masa yang sama, jarak mengambil keuntungan tetap dan jarak stop loss ditetapkan. Jika harga mencapai jarak mengambil keuntungan, ambil keuntungan untuk menutup kedudukan. Jika ia mencapai jarak stop loss, tutup kedudukan dengan stop loss.

Di samping itu, garis stop loss penjejakan leverage ditetapkan berdasarkan leverage. Jika harga mencapai garis stop loss penjejakan leverage, kedudukan ditutup dengan stop loss.

Dengan mengikuti harga tertinggi semasa trend menaik dan harga terendah semasa trend menurun, digabungkan dengan jarak mengambil keuntungan tetap dan jarak berhenti kerugian, pulangan yang lebih tinggi dapat dicapai di pasaran trend.

Analisis Kelebihan

Kelebihan terbesar strategi ini adalah pengenalan pelbagai peraturan pengurusan perdagangan yang lebih mengawal risiko sambil memanfaatkan kekuatan strategi RSI.

Khususnya, kelebihan adalah:

  1. Penghentian kerugian boleh terus mengikuti trend untuk memperoleh keuntungan yang lebih tinggi semasa pasaran trend.

  2. Fixed take profit dan stop loss mengunci beberapa keuntungan dan mengelakkan keuntungan penuh dimusnahkan apabila trend berbalik.

  3. Penjejakan stop loss yang menggunakan leverage membantu mengelakkan peningkatan kerugian dan mengawal risiko.

  4. Gabungan pelbagai kaedah stop loss boleh menggunakan kekuatan mereka dalam persekitaran pasaran yang berbeza, meningkatkan kestabilan keseluruhan strategi.

  5. Penyesuaian parameter strategi yang fleksibel sesuai dengan instrumen perdagangan dan persekitaran pasaran yang berbeza.

  6. Logik yang mudah difahami memudahkan pengesahan, pengoptimuman dan penerapan.

Analisis Risiko

Risiko utama strategi ini berasal dari:

  1. Strategi RSI itu sendiri mempunyai beberapa risiko whipsaw, yang boleh mencetuskan stop loss. Parameter RSI boleh dioptimumkan.

  2. Osilasi di sekitar titik stop loss sering boleh mencetuskan stop loss. Julat stop loss boleh diperluaskan.

  3. Jarak mengambil keuntungan tidak dapat mengunci sepenuhnya keuntungan semasa pasaran trend. Penunjuk lain boleh membantu menentukan akhir trend.

  4. Jarak stop loss tetap mungkin terlalu kecil untuk mengelakkan kerugian sepenuhnya.

  5. Leverage yang berlebihan membawa kepada stop loss yang terlalu dekat dengan harga kemasukan.

  6. Tempoh uji balik mungkin tidak sepenuhnya mewakili keadaan pasaran masa depan.

Risiko di atas boleh dikurangkan melalui penyesuaian parameter, mengoptimumkan mekanisme stop loss, kawalan risiko dan lain-lain.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan lagi dalam aspek berikut:

  1. Mengoptimumkan parameter RSI untuk mengurangkan perdagangan whipsaw, dan menguji parameter optimum untuk pasaran yang berbeza.

  2. Cuba penunjuk lain seperti KD, MACD digabungkan dengan RSI untuk menapis entri.

  3. Gunakan pembelajaran mesin untuk mengoptimumkan parameter stop loss dan mengambil keuntungan secara dinamik.

  4. Uji mekanisme stop loss yang lebih kompleks seperti stop loss berayun, stop loss purata, stop loss dinamik dll.

  5. Mengoptimumkan penetapan leverage dan mengkaji kesan terhadap keuntungan dan kawalan risiko.

  6. Auto menyesuaikan parameter berdasarkan perubahan rejim pasaran, seperti α-Dual Thrust.

  7. Menggabungkan faktor lain untuk menentukan kesinambungan trend, contohnya tenaga volum.

  8. Gunakan model pembelajaran mendalam untuk membangunkan cara berhenti kerugian yang lebih kukuh dan boleh ditafsirkan.

  9. Uji data dari instrumen dan tempoh masa yang berbeza untuk menilai ketahanan strategi.

Kesimpulan

Strategi ini melengkapkan strategi RSI dengan pelbagai kaedah stop loss, memberikan permainan penuh kepada kesan dua stop loss dalam memperoleh keuntungan dari trend dan mengawal risiko. Masih ada ruang yang besar untuk pengoptimuman. Idea-idea dapat diperluaskan kepada lebih banyak strategi dan instrumen perdagangan. Strategi stop loss bernilai penyelidikan mendalam dan boleh menjadi bahagian yang sangat penting dalam sistem perdagangan mekanikal selepas pengoptimuman dan pengesahan berterusan.


/*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)

Lebih lanjut