Strategi perdagangan grid berdasarkan sistem purata bergerak


Tarikh penciptaan: 2024-01-03 17:18:22 Akhirnya diubah suai: 2024-01-03 17:18:22
Salin: 0 Bilangan klik: 1029
1
fokus pada
1621
Pengikut

Strategi perdagangan grid berdasarkan sistem purata bergerak

Gambaran keseluruhan

Strategi ini menggunakan teori garis rata untuk membina sistem perdagangan grid, menilai trend pasaran melalui kombinasi garis rata JMA dari pelbagai parameter yang berbeza, dan membuka perdagangan grid pada titik perubahan trend, bertujuan untuk mendapatkan keuntungan dari perubahan trend garis panjang di pasaran.

Prinsip Strategi

  1. Menggunakan 1-20 tempoh purata JMA membentuk gabungan purata, menilai trend pasaran. Apabila purata jangka pendek lebih tinggi daripada purata jangka panjang, ia dianggap sebagai trend naik, sebaliknya, trend menurun.

  2. Pada titik peralihan trend, iaitu garis purata pendek dari atas melalui garis purata panjang ke bawah atau dari bawah melalui garis purata panjang, buka perdagangan grid. Membangunkan tiket kosong secara beransur-ansur dalam trend menaik; membina banyak tiket secara beransur-ansur dalam trend menurun.

  3. Anda boleh memilih sama ada untuk menapis warna entiti K, jika diaktifkan, hanya membeli di K merah dan menjual di K hijau, atau tidak mempertimbangkan warna K dan hanya berdagang apabila trend berbalik.

  4. Hentikan kerugian adalah untuk mengesan hentikan kerugian atau berakhirnya kerugian. Hentikan kerugian pada akhir kitaran operasi strategi, semua kedudukan ditutup.

Analisis kelebihan

  1. Menggunakan sistem garis rata untuk menilai trend, anda boleh menentukan titik perubahan pergerakan garis panjang di pasaran dengan berkesan.

  2. Perdagangan grid boleh mengambil keuntungan pasaran goyah apabila tidak ada trend yang jelas. Di samping itu, ia boleh mengkonfigurasi stop loss untuk mengawal risiko.

  3. JMA mempunyai parameter garisan purata yang boleh disesuaikan, boleh dioptimumkan untuk kitaran yang berbeza, dan fleksibiliti yang tinggi.

  4. Anda boleh memilih sama ada untuk menapis dengan warna entiti K-Line atau tidak, untuk mengelakkan kesesatan palsu.

Analisis risiko

  1. Dalam pasaran yang bergolak dan tidak mempunyai trend yang jelas, terdapat risiko besar untuk menghentikan kerugian.

  2. Kesalahan penghakiman sistem rata-rata mungkin membawa kepada kesilapan isyarat perdagangan.

  3. Jika anda mengaktifkan penapis K-Line, anda mungkin akan terlepas peluang perdagangan.

  4. Sekiranya jarak grid terlalu besar, anda tidak akan mendapat keuntungan yang mencukupi; jika terlalu kecil, anda akan mempunyai terlalu banyak kedudukan dan tekanan kos.

Arah pengoptimuman

  1. Parameter untuk lebih banyak kombinasi boleh diuji untuk mencari kombinasi rata-rata JMA yang lebih sesuai untuk pelbagai jenis.

  2. Filter boleh digabungkan dengan penunjuk lain, seperti saluran BOLL, KD, dan lain-lain, untuk meningkatkan kualiti isyarat.

  3. Parameter yang dapat mengoptimumkan konfigurasi perdagangan grid, seperti jarak grid, jumlah gudang yang dibina, dan sebagainya.

  4. Lebih banyak jenis hentian boleh dipertimbangkan, seperti hentian melompat, hentian mengesan dan sebagainya.

ringkaskan

Strategi ini menggunakan teori garis rata JMA untuk menilai perubahan trend, dan membuka perdagangan grid pada titik perubahan. Anda boleh mendapatkan keuntungan daripada menukar pergerakan garis panjang di pasaran. Anda boleh mendapatkan prestasi strategi yang lebih baik dengan mengoptimumkan parameter.

Kod sumber strategi
/*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)