Strategi ini menggunakan penunjuk Jarak Dekat Bar (DCB) untuk menentukan trend harga dan penunjuk RSI pantas sebagai penapis, melaksanakan stop loss untuk trend selepas perdagangan.
Mengira lastg dan lastr yang mewakili bar hijau terakhir ditutup dan bar merah terakhir ditutup.
Mengira dist sebagai perbezaan antara lastg dan lastr.
Hitung adist sebagai SMA 30 tempoh dist.
Menghasilkan isyarat perdagangan apabila dist lebih besar daripada 2 kali adist.
Gunakan penunjuk RSI pantas untuk menapis isyarat, mengelakkan pecah palsu.
Memasuki perdagangan pada peratusan tetap ekuiti jika isyarat hadir tanpa kedudukan.
Martingale untuk skala dalam selepas kerugian.
Posisi ditutup apabila stop loss atau mengambil keuntungan dicetuskan.
Indikator DCB secara berkesan menangkap trend jangka menengah dan panjang.
Penapis RSI pantas mengelakkan kerugian daripada pelarian palsu.
Penghentian penghantaran mengunci keuntungan dan mengawal risiko.
Martingale meningkatkan kedudukan selepas kerugian untuk keuntungan yang lebih tinggi.
Tetapan parameter yang munasabah sesuai dengan persekitaran pasaran yang berbeza.
DCB mungkin menghasilkan isyarat yang salah, memerlukan penapis lain.
Martingale boleh meningkatkan kerugian, memerlukan pengurusan risiko yang ketat.
Tetapan stop loss yang tidak betul boleh menyebabkan kerugian yang berlebihan.
Ukuran kedudukan harus terhad untuk mengelakkan leverage yang berlebihan.
Tetapan kontrak yang tidak betul boleh membawa kepada kerugian besar di pasaran yang melampau.
Mengoptimumkan parameter DCB untuk kombinasi terbaik.
Cuba penunjuk lain untuk menggantikan penapis RSI pantas.
Mengoptimumkan stop loss dan mengambil keuntungan untuk kadar kemenangan yang lebih tinggi.
Mengoptimumkan parameter Martingale untuk mengurangkan risiko.
Ujian pada produk yang berbeza untuk peruntukan aset yang terbaik.
Gunakan pembelajaran mesin untuk mengoptimumkan parameter secara dinamik.
Ini adalah keseluruhan trend yang matang mengikuti strategi. DCB menentukan arah trend dan cepat RSI menyaring isyarat untuk mengelakkan entri yang salah. Stop loss dan mengambil keuntungan berkesan mengawal kerugian perdagangan tunggal. Tetapi masih ada risiko, parameter memerlukan pengoptimuman lanjut untuk mengurangkan risiko dan meningkatkan kestabilan. Logiknya jelas dan mudah difahami, sesuai untuk peniaga trend 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()