
Strategi ini dirancang untuk platform perdagangan langsung BitMEX, dengan analisis indikator RSI cepat, menggabungkan sinyal pemfilteran beberapa indikator teknis, untuk mencapai efisiensi tinggi dalam melacak tren perdagangan. Strategi ini juga menyiapkan manajemen dana, mekanisme stop loss, yang dapat mengontrol risiko perdagangan secara efektif.
Hitung RSI cepat, parameternya disetel ke garis 7 hari, garis overbought 25, garis oversold 75. Ketika RSI melewati garis overbought, sinyal overbought; Ketika RSI di bawah melewati garis oversold, sinyal oversold.
Pengaturan penyaringan untuk entitas K-line. Membutuhkan disk terbuka untuk entitas yang tidak kurang dari 20% dari panjang entitas rata-rata kemarin.
Pengaturan K-line color filter. Meminta 4 K terakhir untuk sinis kosong, 4 K terakhir untuk kuncinya lebih banyak.
Setting Stop Loss Logic. Jika harga bergerak ke arah yang tidak menguntungkan, maka stop loss akan terjadi.
Siapkan mekanisme anti-bouncing. Bila harga bergerak ke arah yang menguntungkan dan mencapai garis stop loss, sinyal akan dikirimkan lagi untuk melakukan penarikan.
Pengelolaan dana. Menggunakan persentase dana tetap untuk membangun posisi, setiap kerugian adalah posisi ganda.
Pengaturan parameter RSI cepat masuk akal, dapat menangkap tren dengan cepat. Kombinasi dengan entitas garis K dan penilaian warna, dapat memfilter penembusan palsu secara efektif.
Dengan filter multi-lapisan, Anda dapat mengurangi jumlah transaksi dan meningkatkan tingkat kemenangan.
Strategi built-in Stop Loss Mechanism, yang dapat secara efektif mengendalikan kerugian tunggal.
Menggunakan posisi yang dinamis untuk melakukan penyesuaian posisi, untuk mencapai pengelolaan dana yang moderat dan radikal.
Ada juga fitur yang bisa disesuaikan untuk menghindari dampak dari peristiwa besar.
Kecepatan terlalu cepat dapat melewatkan peluang perdagangan. Parameter dapat dilonggarkan dengan tepat, meningkatkan fleksibilitas.
Tidak dapat secara efektif menilai akhir dari tren. Dapat dipertimbangkan dalam kombinasi dengan indikator lain untuk menilai potensi pembalikan.
Ada beberapa cara yang bisa digunakan untuk mengunci posisi.
Parameter dapat disesuaikan sesuai dengan pasar yang berbeda untuk mencapai kombinasi yang lebih baik.
Strategi ini secara keseluruhan relatif stabil, dengan RSI cepat menentukan arah tren, kemudian digabungkan dengan sinyal filter indikator teknis ganda, dapat memperoleh hasil yang lebih baik dalam tren. Strategi ini juga memiliki ruang optimasi tertentu, dengan menyesuaikan kombinasi parameter, dapat beradaptasi dengan lingkungan pasar yang berbeda, memiliki 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()