
Strategi ini direka untuk platform dagangan langsung BitMEX, dengan menganalisis indikator RSI cepat, menggabungkan beberapa petunjuk teknikal untuk memfilter isyarat, untuk mencapai kecekapan yang tinggi trend mengesan perdagangan. Strategi ini juga menyediakan pengurusan wang, mekanisme berhenti kerugian, yang dapat mengawal risiko perdagangan dengan berkesan.
Hitung RSI pantas, parameter ditetapkan sebagai garis 7 hari, garis beli-belah 25, garis jual-beli 75. Apabila RSI melintasi garis beli-belah, ia adalah isyarat beli-belah; apabila RSI melintasi garis jual-belah, ia adalah isyarat jual-belah.
Tetapan penapisan untuk entiti K-line. Memerlukan cakera terbuka untuk berbinar, entiti yang panjangnya tidak kurang daripada 20% daripada entiti purata semalam.
Penyaringan warna untuk K-line. Memerlukan 4 K terakhir untuk sinis kosong, 4 K terakhir untuk sinis lebih banyak.
Tetapkan logik stop loss. Apabila harga bergerak ke arah yang tidak baik, stop loss.
Setting a rebound protection mechanism. Apabila harga bergerak ke arah yang menguntungkan dan mencapai garis stop loss, isyarat akan dikeluarkan lagi untuk meletakkan kedudukan.
Menetapkan pengurusan wang. Menggunakan peratusan wang tetap untuk membina kedudukan, setiap kehilangan dua kali ganda kedudukan.
Tetapan parameter RSI pantas adalah munasabah, dan ia dapat menangkap trend dengan cepat. Kombinasi entiti K-line dan penilaian warna, dapat menyaring penembusan palsu dengan berkesan.
Melancarkan pelbagai lapisan penapisan, ia dapat mengurangkan jumlah transaksi dan meningkatkan kadar kemenangan.
Kaedah ini mempunyai mekanisme terbina dalam untuk menghentikan kerugian dan mengawal kerugian secara berkesan.
Menggunakan penyesuaian kedudukan kedudukan yang dinamik untuk mencapai pengurusan dana yang agak agresif.
Anda boleh menyesuaikan tempoh dagangan anda untuk mengelakkan kejatuhan akibat peristiwa besar.
Kelajuan yang terlalu cepat boleh kehilangan peluang perdagangan.
Tidak dapat menilai akhir trend secara berkesan. Ia boleh dipertimbangkan untuk menilai potensi pembalikan dalam kombinasi dengan petunjuk lain.
Kaedah penyesuaian kedudukan terlalu radikal dan boleh diperkenalkan dalam kaedah kunci kedudukan.
Parameter boleh disesuaikan mengikut pasaran yang berbeza, untuk mencapai kombinasi parameter yang lebih baik.
Strategi ini agak stabil secara keseluruhan, dengan menentukan arah trend dengan RSI yang cepat, dan kemudian menggabungkan isyarat penapis pelbagai petunjuk teknikal, anda boleh mendapat pulangan yang lebih baik dalam trend. Strategi ini juga mempunyai ruang pengoptimuman tertentu, dengan menyesuaikan kombinasi parameter, dapat disesuaikan dengan keadaan pasaran yang berbeza, dan mempunyai kepraktisan yang kuat.
/*backtest
start: 2023-11-05 00:00:00
end: 2023-11-12 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2018
//@version=2
strategy(title = "Robot BitMEX Fast RSI v1.0", shorttitle = "Robot BitMEX Fast RSI v1.0", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 10)
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usemar = input(true, defval = true, title = "Use Martingale")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
rsiperiod = input(7, defval = 7, minval = 2, maxval = 100, title = "RSI Period")
rsilimit = input(25, defval = 25, minval = 1, maxval = 30, title = "RSI limit")
rsibars = input(1, defval = 1, minval = 1, maxval = 20, title = "RSI Bars")
useocf = input(true, defval = true, title = "Use Open Color Filter")
useccf = input(true, defval = true, title = "Use Close Color Filter")
openbars = input(4, defval = 4, minval = 1, maxval = 20, title = "Open Color Bars")
closebars = input(1, defval = 1, minval = 1, maxval = 20, title = "Close Color Bars")
useobf = input(true, defval = true, title = "Use Open Body Filter")
usecbf = input(true, defval = true, title = "Use Close Body Filter")
openbody = input(20, defval = 20, minval = 0, maxval = 1000, title = "Open Body Minimum, %")
closebody = input(50, defval = 50, minval = 0, maxval = 1000, title = "Close Body Minimum, %")
usecnf = input(true, defval = true, title = "Use Close Norma Filter")
fromyear = input(1900, defval = 1900, 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
uprsi = rma(max(change(close), 0), rsiperiod)
dnrsi = rma(-min(change(close), 0), rsiperiod)
rsi = dnrsi == 0 ? 100 : uprsi == 0 ? 0 : 100 - (100 / (1 + uprsi / dnrsi))
uplimit = 100 - rsilimit
dnlimit = rsilimit
rsidn = rsi < dnlimit ? 1 : 0
rsiup = rsi > uplimit ? 1 : 0
rsidnok = sma(rsidn, rsibars) == 1
rsiupok = sma(rsiup, rsibars) == 1
//Body Filter
body = abs(close - open)
abody = sma(body, 10)
openbodyok = body >= abody / 100 * openbody or useobf == false
closebodyok = body >= abody / 100 * closebody or usecbf == false
//Color Filter
bar = close > open ? 1 : close < open ? -1 : 0
gbar = bar == 1 ? 1 : 0
rbar = bar == -1 ? 1 : 0
opengbarok = sma(gbar, openbars) == 1 or useocf == false
openrbarok = sma(rbar, openbars) == 1 or useocf == false
closebarok = (strategy.position_size > 0 and bar == 1) or (strategy.position_size < 0 and bar == -1) or useccf == false
//Norma Filter
norma = (rsi > dnlimit and rsi < uplimit) or usecnf == false
//Signals
up = openrbarok and rsidnok and openbodyok and (strategy.position_size == 0 or close < strategy.position_avg_price)
dn = opengbarok and rsiupok and openbodyok and (strategy.position_size == 0 or close > strategy.position_avg_price)
exit = ((strategy.position_size > 0 and closebarok and norma) or (strategy.position_size < 0 and closebarok and norma)) and closebodyok
//Indicator
plot(rsi, color = blue, linewidth = 3, title = "Double RSI")
plot(uplimit, color = black, title = "Upper Line")
plot(dnlimit, color = black, title = "Lower Line")
colbg = rsi > uplimit ? red : rsi < dnlimit ? lime : na
bgcolor(colbg, transp = 20)
//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 up
if strategy.position_size < 0
strategy.close_all()
strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if dn
if strategy.position_size > 0
strategy.close_all()
strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
strategy.close_all()