Strategi penembusan sekunder penunjuk RSI pantas


Tarikh penciptaan: 2023-11-07 16:56:39 Akhirnya diubah suai: 2023-11-07 16:56:39
Salin: 0 Bilangan klik: 737
1
fokus pada
1617
Pengikut

Strategi penembusan sekunder penunjuk RSI pantas

Gambaran keseluruhan

Strategi ini membolehkan harga untuk melakukan beberapa penembusan dengan menetapkan parameter RSI berulang kali, yang membolehkan anda mendapatkan isyarat masuk dan keluar yang lebih tepat.

Prinsip Strategi

Strategi ini menetapkan dua set parameter RSI, iaitu RSI kitaran 7, yang terhad kepada RSI indikator 25, dan RSI kitaran 14, yang terhad kepada RSI indikator 25. Apabila harga menembusi batasan mana-mana set RSI, melakukan operasi plus atau minus.

Strategi pertama mengira nilai kedua-dua set penunjuk RSI, dan kemudian menilai sama ada harga melanggar batas atas atau bawah RSI. Jika melanggar batas atas, ia menghasilkan isyarat melakukan lebih banyak, dan jika melanggar batas bawah, ia menghasilkan isyarat melakukan lebih sedikit.

Jika sudah memegang kedudukan, maka akan terus menilai sama ada RSI semasa berada dalam lingkungan normal. Jika RSI normal, dan entiti itu menembusi separuh daripada garis purata, maka akan timbul isyarat keluar.

Strategi ini juga menggunakan sistem Martingale. Setiap kerugian akan menggandakan jumlah dagangan seterusnya.

Analisis kelebihan

  • Menggunakan dua set penunjuk RSI, anda boleh lebih tepat menilai isyarat penembusan dan mengelakkan penembusan palsu.

  • Pada masa yang sama, periksa penembusan entiti untuk mengelakkan perdagangan yang salah dalam gegaran.

  • Dengan menggunakan Martingale, anda boleh menghentikan kerugian dengan cepat selepas kerugian.

  • RSI boleh disesuaikan untuk mengoptimumkan peluang masuk.

  • Anda boleh hadkan tempoh transaksi untuk mengelakkan kesan peristiwa besar.

Analisis risiko

  • Penunjuk RSI Ganda tidak dapat mengelakkan sepenuhnya fenomena pecah palsu.

  • Martinjel akan menambah kedudukan apabila rugi, mudah untuk melepaskannya.

  • Kesan kos transaksi tidak diambil kira.

  • Terdapat lebih banyak parameter yang boleh dioptimumkan, memerlukan banyak ujian untuk mencari kombinasi parameter terbaik.

Anda boleh menetapkan hentian untuk mengehadkan kerugian; mengoptimumkan set parameter RSI; menambah pertimbangan kos; kelonggaran yang sesuai untuk penetapan terobosan.

Arah pengoptimuman strategi

  • Memasuki mekanisme penangguhan kerugian, anda boleh menghadkan kerugian maksimum.

  • Mengoptimumkan kombinasi parameter RSI untuk mencari parameter terbaik untuk mengurangkan pelanggaran palsu.

  • Mengambil kira kesan kos urus niaga dan mengelakkan terlalu banyak urus niaga.

  • Ia juga akan memberi peluang kepada pelabur untuk membuat keputusan yang lebih mudah dan lebih banyak peluang perdagangan.

  • Tambah lebih banyak penapis untuk mengelakkan penangkapan.

ringkaskan

Strategi ini menggunakan dua indikator RSI untuk menentukan harga pecah, ditambah dengan penetapan pecah entiti, untuk mengelakkan terikat di pasaran yang bergolak. Pada masa yang sama, penggunaan Martingale untuk menghentikan kerugian dengan cepat. Strategi ini dapat mendapatkan isyarat perdagangan yang lebih tepat melalui pengoptimuman parameter dan penapisan lebih banyak indikator.

Kod sumber strategi
/*backtest
start: 2023-10-30 00:00:00
end: 2023-11-06 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's Fast RSI Strategy v2.0", shorttitle = "Fast RSI str 2.0", overlay = true)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usemar = input(false, defval = false, title = "Use Martingale")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
usersi1 = input(true, defval = true, title = "Use RSI #1")
rsiperiod1 = input(7, defval = 7, minval = 2, maxval = 50, title = "#1 RSI Period")
rsilimit1 = input(25, defval = 25, minval = 1, maxval = 100, title = "#1 RSI limit")
usersi2 = input(true, defval = true, title = "Use RSI #2")
rsiperiod2 = input(14, defval = 14, minval = 2, maxval = 50, title = "#2 RSI Period")
rsilimit2 = input(25, defval = 25, minval = 1, maxval = 100, title = "#2 RSI limit")
showarr = input(false, defval = false, title = "Show Arrows")
fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//RSI #1
uprsi1 = rma(max(change(close), 0), rsiperiod1)
dnrsi1 = rma(-min(change(close), 0), rsiperiod1)
rsi1 = dnrsi1 == 0 ? 100 : uprsi1 == 0 ? 0 : 100 - (100 / (1 + uprsi1 / dnrsi1))
uplimit1 = 100 - rsilimit1
dnlimit1 = rsilimit1

//RSI #2
uprsi2 = rma(max(change(close), 0), rsiperiod2)
dnrsi2 = rma(-min(change(close), 0), rsiperiod2)
rsi2 = dnrsi2 == 0 ? 100 : uprsi2 == 0 ? 0 : 100 - (100 / (1 + uprsi2 / dnrsi2))
uplimit2 = 100 - rsilimit2
dnlimit2 = rsilimit2

//Body
body = abs(close - open)
abody = sma(body, 10)

//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up1 = bar == -1 and (strategy.position_size == 0 or close < strategy.position_avg_price) and rsi1 < dnlimit1 and body > abody / 5 and usersi1
dn1 = bar == 1 and (strategy.position_size == 0 or close > strategy.position_avg_price) and rsi1 > uplimit1 and body > abody / 5 and usersi1
up2 = bar == -1 and (strategy.position_size == 0 or close < strategy.position_avg_price) and rsi2 < dnlimit2 and body > abody / 5 and usersi2
dn2 = bar == 1 and (strategy.position_size == 0 or close > strategy.position_avg_price) and rsi2 > uplimit2 and body > abody / 5 and usersi2
norma = rsi1 > dnlimit1 and rsi1 < uplimit1 and rsi2 > dnlimit2 and rsi2 < uplimit2
exit = (((strategy.position_size > 0 and bar == 1 and norma) or (strategy.position_size < 0 and bar == -1 and norma)) and body > abody / 2)

//Arrows
col = exit ? black : up1 or dn1 ? blue : up2 or dn2 ? red : na
needup = up1 or up2
needdn = dn1 or dn2
needexitup = exit and strategy.position_size < 0
needexitdn = exit and strategy.position_size > 0
plotarrow(showarr and needup ? 1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(showarr and needdn ? -1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(showarr and needexitup ? 1 : na, colorup = black, colordown = black, transp = 0)
plotarrow(showarr and needexitdn ? -1 : na, colorup = black, colordown = black, transp = 0)

//Trading
profit = exit ? ((strategy.position_size > 0 and close > strategy.position_avg_price) or (strategy.position_size < 0 and close < strategy.position_avg_price)) ? 1 : -1 : profit[1]
mult = usemar ? exit ? profit == -1 ? mult[1] * 2 : 1 : mult[1] : 1
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 * mult : lot[1]

if up1 or up2
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)

if dn1 or dn2
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot)
    
if  exit
    strategy.close_all()