Strategi ini menggunakan teori purata bergerak untuk membina sistem perdagangan grid dengan menilai trend pasaran melalui pelbagai set purata bergerak JMA dengan parameter yang berbeza.
Gunakan gabungan purata bergerak JMA 1-20 tempoh untuk menentukan trend pasaran. Apabila MA tempoh pendek di atas MA tempoh panjang, ia dinilai sebagai trend menaik, dan sebaliknya sebagai trend menurun.
Buka perdagangan grid pada titik pembalikan trend, apabila MA pendek melintasi di bawah atau di atas MA panjang.
Pilihan untuk menapis berdasarkan warna candlestick - hanya membeli pada lilin merah dan menjual pada lilin hijau, jika tidak mengabaikan warna dan perdagangan pada pembalikan trend sahaja.
Keluar adalah sama ada menjejaki stop loss atau keluar berdasarkan masa apabila tempoh strategi berakhir.
Menggunakan sistem MA untuk menentukan trend dapat secara berkesan mengenal pasti pembalikan trend jangka panjang.
Dagangan grid boleh menangkap keuntungan dari pasaran yang terhad dengan julat tanpa trend yang jelas, dengan stop loss untuk mengawal risiko.
Parameter JMA yang boleh disesuaikan, boleh dioptimumkan untuk tempoh yang berbeza, fleksibiliti yang tinggi.
Penapis lilin mengelakkan tertipu oleh pembocoran palsu.
Pasaran gergaji cambuk tinggi tanpa trend yang jelas mempunyai risiko stop loss yang lebih tinggi.
Kesalahan penilaian dari sistem MA boleh membawa kepada isyarat perdagangan yang salah.
Candle filter risiko kehilangan beberapa peluang perdagangan.
Jika jarak grid terlalu luas, keuntungan yang tidak mencukupi; terlalu sempit boleh mengakibatkan terlalu banyak kedudukan dan kos yang tinggi.
Uji lebih banyak kombinasi parameter untuk mencari kombinasi JMA MA yang optimum untuk produk yang berbeza.
Menggabungkan penapis lain seperti pita BOLL, KD dll untuk meningkatkan kualiti isyarat.
Mengoptimumkan konfigurasi grid seperti jarak grid, lot kemasukan dll.
Pertimbangkan lebih banyak kaedah stop loss seperti berasaskan jurang, penangguhan trailing dll.
Strategi ini menilai pembalikan menggunakan teori JMA dan membuka perdagangan grid pada titik perubahan untuk menangkap keuntungan dari perubahan trend jangka panjang. Prestasi boleh ditingkatkan lagi melalui pengoptimuman parameter. Secara keseluruhan, ia sesuai untuk pegangan jangka menengah dan panjang untuk secara beransur-ansur mengesan dan mendapat keuntungan dari pergerakan trend.
/*backtest start: 2022-12-27 00:00:00 end: 2024-01-02 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2019 //@version=3 strategy(title = "Noro's Fishnet Strategy", shorttitle = "Fishnet str", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot") usecf = input(false, defval = false, title = "Use Color-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") //JMA jmax(src, len) => beta = 0.45*(len-1)/(0.45*(len-1)+2) alpha = pow(beta, 3) L0=0.0, L1=0.0, L2=0.0, L3=0.0, L4=0.0 L0 := (1-alpha)*src + alpha*nz(L0[1]) L1 := (src - L0[0])*(1-beta) + beta*nz(L1[1]) L2 := L0[0] + L1[0] L3 := (L2[0] - nz(L4[1]))*((1-alpha)*(1-alpha)) + (alpha*alpha)*nz(L3[1]) L4 := nz(L4[1]) + L3[0] L4 ma01 = jmax(close, 10) ma02 = jmax(close, 20) ma03 = jmax(close, 30) ma04 = jmax(close, 40) ma05 = jmax(close, 50) ma06 = jmax(close, 60) ma07 = jmax(close, 70) ma08 = jmax(close, 80) ma09 = jmax(close, 90) ma10 = jmax(close, 100) ma11 = jmax(close, 110) ma12 = jmax(close, 120) ma13 = jmax(close, 130) ma14 = jmax(close, 140) ma15 = jmax(close, 150) ma16 = jmax(close, 160) ma17 = jmax(close, 170) ma18 = jmax(close, 180) ma19 = jmax(close, 190) ma20 = jmax(close, 200) trend = 0 trend := ma01 > ma20 ? 1 : ma01 < ma20 ? -1 : trend[1] col = trend == 1 ? #00FF7F : #DC143C plot(ma01, transp = 0, color = col) plot(ma02, transp = 0, color = col) plot(ma03, transp = 0, color = col) plot(ma04, transp = 0, color = col) plot(ma05, transp = 0, color = col) plot(ma06, transp = 0, color = col) plot(ma07, transp = 0, color = col) plot(ma08, transp = 0, color = col) plot(ma09, transp = 0, color = col) plot(ma10, transp = 0, color = col) plot(ma11, transp = 0, color = col) plot(ma12, transp = 0, color = col) plot(ma13, transp = 0, color = col) plot(ma14, transp = 0, color = col) plot(ma15, transp = 0, color = col) plot(ma16, transp = 0, color = col) plot(ma17, transp = 0, color = col) plot(ma18, transp = 0, color = col) plot(ma19, transp = 0, color = col) plot(ma20, transp = 0, color = col) //Trading lot = 0.0 lot := strategy.equity / close * capital / 100 if trend == 1 and (close < open or usecf == false) strategy.entry("Long", strategy.long, needlong ? lot : na) if trend == -1 and (close > open or usecf == false) strategy.entry("Short", strategy.short, needshort ? lot : na)