Strategi Dagangan VSTOP dan RSI

Penulis:ChaoZhang, Tarikh: 2023-10-09 15:48:46
Tag:

Ringkasan

Strategi ini menggabungkan penunjuk VSTOP dan RSI untuk pergi panjang apabila RSI terlalu banyak dibeli dan pergi pendek apabila RSI terlalu banyak dijual, sementara menggunakan VSTOP untuk menentukan arah trend dan memotong kerugian pada waktunya apabila trend berbalik.

Logika Strategi

  1. Hitung nilai penunjuk RSI dan tetapkan garis overbought dan oversold. Pergi panjang apabila RSI berada di atas garis overbought dan pergi pendek apabila RSI berada di bawah garis oversold.

  2. Mengira VSTOP, yang merupakan garis stop loss berdasarkan julat turun naik harga. Langkah pengiraan adalah seperti berikut:

    • Mengira penunjuk ATR dan menetapkan pekali ATR banyak

    • Mencatatkan harga maksimum dan harga minimum

    • Mengikut keadaan uptrend is_uptrend, mengira garis stop loss semasa: stop = is_uptrend? max - mult * ATR : min + mult * ATR

    • Kemas kini garis stop loss: vstop1 = is_uptrend? max ((vstop_prev, stop) : min ((vstop_prev, stop)

    • Apabila pembalikan trend berlaku, menetapkan semula garis stop loss masuk

  3. Apabila RSI terlalu banyak dijual, jika harga melintasi di atas VSTOP, pergi pendek; apabila RSI terlalu banyak dibeli, pergi panjang.

Analisis Kelebihan

  • Menggabungkan penunjuk trend dan penunjuk overbought / oversold membantu menangkap peluang pembalikan dalam pasaran trend.

  • Menggunakan VSTOP untuk menetapkan stop loss berkesan mengawal risiko.

  • Tetapan parameter RSI yang fleksibel boleh dioptimumkan untuk produk yang berbeza.

  • VSTOP secara sistematik menyusuri stop loss tanpa campur tangan manual.

Risiko dan Penyelesaian

  • Jika parameter ATR ditetapkan terlalu besar atau terlalu kecil, garis stop loss tidak bermakna.

  • Dalam pasaran terikat julat, RSI boleh mencetuskan isyarat perdagangan yang kerap, meningkatkan kekerapan perdagangan dan kos slippage. Parameter RSI boleh diselaraskan atau penapis tambahan ditambah untuk mengurangkan isyarat yang tidak sah.

  • Pembalikan yang gagal adalah risiko utama strategi ini. Pedagang perlu menonton arah trend jangka masa yang lebih besar untuk mengelakkan perdagangan kontra trend. Purata bergerak jangka panjang boleh digunakan untuk menentukan trend.

Arahan pengoptimuman

  • Pertimbangkan untuk menggabungkan penunjuk lain untuk menapis isyarat yang tidak sah, contohnya jumlah, Saluran Donchian dll.

  • Mengoptimumkan parameter berdasarkan hasil backtest untuk mencari kombinasi parameter yang optimum.

  • Penyelidikan bagaimana untuk menyesuaikan pekali ATR secara dinamik untuk penyesuaian dalam persekitaran pasaran yang berbeza.

  • Terokai penutupan strategi semasa tempoh berisiko tinggi.

Kesimpulan

Strategi ini mengintegrasikan penilaian trend dan tahap overbought / oversold untuk menangkap peluang pembalikan dalam pasaran yang sedang berkembang. VSTOP menyediakan pengurusan stop loss yang sistematik untuk kawalan risiko. Strategi ini boleh ditingkatkan lagi melalui pengoptimuman parameter dan menggabungkan penunjuk lain. Pedagang perlu berhati-hati terhadap pembalikan yang gagal, risiko utama.


/*backtest
start: 2022-10-02 00:00:00
end: 2023-10-08 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Vstop and RSI", overlay=true)

//RSI Section
length = input(2, "RSI Period") 
overSold = input(30, "Oversold Level") 
overBought = input(70, "Overbought Level") 
price = close 
vrsi = rsi (price, length) 

//VSTOP Section
vlength = input(2, "Vstop Length") 
mult = input(2, "Vstop Mult") 
atr_ = atr(vlength) 

max1=0.0 
min1=0.0 
is_uptrend_prev = false 
stop=0.0 
vstop_prev=0.0 
vstop1=0.0 
is_uptrend=false 
is_trend_changed=false 
max_ = 0.0 
min_ = 0.0 
vstop=0.0 

max1 := max(nz(max_[1]), close)
min1 := min(nz(min_[1]), close)


is_uptrend_prev := nz(is_uptrend[1], true)

stop := is_uptrend_prev ? max1 - mult * atr_ : min1 + mult * atr_
vstop_prev := nz(vstop[1])
vstop1 := is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop)
is_uptrend := close - vstop1 >= 0
is_trend_changed := is_uptrend != is_uptrend_prev
max_ := is_trend_changed ? close : max1
min_ := is_trend_changed ? close : min1
vstop := is_trend_changed ? is_uptrend ? max_ - mult * atr_ : min_ + mult * atr_ : vstop1
plot(vstop, color = is_uptrend ? green : red, style=cross, linewidth=2)

if vrsi > overBought
    strategy.entry("Buy", strategy.long, comment="Buy")
     
if vrsi < overSold and vstop > price
    strategy.entry("Sell", strategy.short, comment="Sell")

Lebih lanjut