Strategi ini menggunakan indikator Distance Close Bars (DCB) untuk menentukan tren harga dan indikator RSI cepat sebagai filter, menerapkan trailing stop loss untuk tren setelah perdagangan.
Hitung lastg dan lastr yang mewakili garis hijau terakhir yang ditutup dan garis merah terakhir yang ditutup.
Hitung dist sebagai perbedaan antara lastg dan lastr.
Perhitungkan adist sebagai SMA 30 periode dist.
Menghasilkan sinyal perdagangan ketika dist lebih besar dari 2 kali dari adist.
Gunakan indikator RSI cepat untuk menyaring sinyal, menghindari kebocoran palsu.
Masukkan perdagangan dengan persentase tetap dari ekuitas jika sinyal tidak memiliki posisi.
Martingale untuk skala dalam setelah kerugian.
Penutupan posisi ketika stop loss atau take profit dipicu.
Indikator DCB secara efektif menangkap tren jangka menengah dan panjang.
Filter RSI cepat menghindari kerugian dari kebocoran palsu.
Trailing stop mengunci keuntungan dan mengontrol risiko.
Martingale meningkatkan posisi setelah kerugian untuk keuntungan yang lebih tinggi.
Pengaturan parameter yang wajar sesuai dengan lingkungan pasar yang berbeda.
DCB mungkin menghasilkan sinyal yang salah, membutuhkan filter lain.
Martingale dapat memperkuat kerugian, membutuhkan manajemen risiko yang ketat.
Pengaturan stop loss yang tidak benar dapat menyebabkan kerugian yang berlebihan.
Ukuran posisi harus terbatas untuk mencegah leverage yang berlebihan.
Pengaturan kontrak yang tidak tepat dapat menyebabkan kerugian besar di pasar ekstrim.
Optimalkan parameter DCB untuk kombinasi terbaik.
Cobalah indikator lain untuk mengganti filter RSI cepat.
Optimalkan stop loss dan ambil keuntungan untuk tingkat kemenangan yang lebih tinggi.
Mengoptimalkan parameter Martingale untuk mengurangi risiko.
Uji pada produk yang berbeda untuk alokasi aset terbaik.
Gunakan pembelajaran mesin untuk mengoptimalkan parameter secara dinamis.
Ini adalah strategi tren yang matang secara keseluruhan. DCB menentukan arah tren dan cepat RSI menyaring sinyal untuk menghindari entri yang salah. Stop loss dan take profit secara efektif mengendalikan kerugian perdagangan tunggal. Tapi masih ada risiko, parameter perlu dioptimalkan lebih lanjut untuk mengurangi risiko dan meningkatkan stabilitas. Logika jelas dan mudah dipahami, cocok untuk pedagang tren jangka menengah dan panjang.
/*backtest start: 2023-11-07 00:00:00 end: 2023-11-14 00:00:00 period: 3m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=2 strategy(title = "Noro's Distance Strategy v1.0", shorttitle = "Distance str 1.0", overlay = true, 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, %") usersi = input(true, defval = true, title = "Use RSI-Filter") periodrsi = input(7, defval = 7, minval = 2, maxval = 50, title = "RSI Period") limitrsi = input(30, defval = 30, minval = 1, maxval = 50, title = "RSI Limit") 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") //Fast RSI fastup = rma(max(change(close), 0), periodrsi) fastdown = rma(-min(change(close), 0), periodrsi) fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown)) //Distance bar = close > open ? 1 : close < open ? -1 : 0 lastg = bar == 1 ? close : lastg[1] lastr = bar == -1 ? close : lastr[1] dist = lastg - lastr adist = sma(dist, 30) plot(lastg, linewidth = 3, color = lime) plot(lastr, linewidth = 3, color = red) up = bar == -1 and dist > adist * 2 dn = bar == 1 and dist > adist * 2 //RSI Filter rsidn = fastrsi < limitrsi or usersi == false rsiup = fastrsi > 100 - limitrsi or usersi == false //Signals up1 = up and rsidn dn1 = dn and rsiup exit = ((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) //Arrows plotarrow(up1 ? 1 : na, colorup = blue, colordown = blue) plotarrow(dn1 ? -1 : na, colorup = blue, colordown = blue) //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] signalup = up1 if signalup 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))) signaldn = dn1 if signaldn 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()