Strategi Perpindahan Purata Pergerakan Harga


Tarikh penciptaan: 2023-11-27 16:52:19 Akhirnya diubah suai: 2023-11-27 16:52:19
Salin: 1 Bilangan klik: 677
1
fokus pada
1617
Pengikut

Strategi Perpindahan Purata Pergerakan Harga

Gambaran keseluruhan

Strategi ini pada dasarnya adalah strategi persilangan garis rata. Dengan mengira purata bergerak harga, dan menetapkan purata bergerak jangka pendek yang tertentu, apabila purata bergerak jangka pendek melintasi rata-rata bergerak jangka panjang dari bawah, ia akan melakukan lebih banyak; apabila purata bergerak jangka pendek melintasi rata-rata bergerak jangka panjang dari atas, ia akan kosong.

Prinsip Strategi

Idea teras strategi persilangan garis purata harga adalah: purata bergerak harga dapat mencerminkan tren perubahan harga dengan berkesan. Strategi ini menghasilkan isyarat perdagangan dengan menetapkan purata bergerak dua kitaran yang berbeza, dan logik perdagangan tertentu, untuk menilai perubahan trend pasaran.

Strategi ini mengira satu garis rata-rata jangka panjang dan satu garis rata-rata jangka pendek. Garis panjang digunakan untuk menentukan trend besar, garis pendek digunakan untuk menangkap pergerakan jangka pendek dalam proses trend besar. Isyarat perdagangan strategi ini terutama berasal dari persilangan garis pendek dengan garis panjang: melintasi garis panjang pada garis pendek sebagai sinyal ganda, melintasi garis panjang di bawah garis pendek sebagai sinyal kosong.

Khususnya, strategi ini menggunakan 7 jenis purata bergerak, termasuk SMA, EMA, VWMA, dan lain-lain, pengguna boleh memilih jenis purata bergerak. Panjang purata bergerak juga boleh disetel secara fleksibel.

Analisis kelebihan

Kelebihan utama strategi penyambungan purata harga adalah:

  1. Strategi logiknya jelas dan mudah difahami dan dilaksanakan, sesuai untuk pelajar pemula.

  2. Prinsip-prinsip strategi yang kukuh, berdasarkan undang-undang perdagangan seragam yang disahkan sepenuhnya, telah diuji oleh praktik pasaran.

  3. Parameter strategi boleh disesuaikan secara fleksibel, pengguna boleh memilih parameter yang sesuai mengikut penilaian dan keutamaan mereka terhadap pasaran.

  4. Strategi ini mempunyai mekanisme kawalan risiko yang dapat mengurangkan tempoh pemegangan kerugian dan mencegah penempatan terbalik yang tidak perlu.

  5. Strategi ini mengandungi pelbagai jenis rata-rata bergerak, dan pengguna boleh memilih jenis rata-rata bergerak yang paling sesuai dengan jenis dagangan mereka.

  6. Strategi ini menyokong logik perdagangan pada masa perdagangan tertentu untuk mengelakkan turun naik yang luar biasa di pasaran cuti utama.

Analisis risiko

Walaupun ada banyak kelebihan strategi crossover harga rata-rata, terdapat juga risiko tertentu dalam perdagangan sebenar, terutamanya dalam dua aspek berikut:

  1. Oleh kerana kebanyakan purata bergerak mempunyai keterlambatan, isyarat silang mungkin muncul pada akhir tempoh selepas harga berbalik dan mudah disumbat.

  2. Jika parameter tidak ditetapkan dengan betul, isyarat silang mungkin terlalu kerap, menjadikan perdagangan terlalu aktif dan menghasilkan lebih banyak kos perdagangan.

Risiko-risiko tersebut boleh dikawal dan ditangani dengan:

  1. Mengendalikan risiko kerugian tunggal dengan menetapkan markah stop loss yang sederhana.

  2. Menambah syarat penapisan, mengurangkan frekuensi perdagangan, dan mencegah perdagangan berlebihan. Contohnya, menetapkan saluran harga atau syarat keluasan harga.

  3. Mengoptimumkan parameter purata bergerak, memilih kombinasi parameter yang paling sesuai dengan jenis perdagangan dan kitaran anda. Uji kestabilan strategi dalam keadaan pasaran yang berbeza.

Arah pengoptimuman

Terdapat ruang untuk pengoptimuman lebih lanjut terhadap strategi harga rata-rata, terutamanya dari segi berikut:

  1. Menambah mekanisme perlindungan dalam keadaan yang terlalu melampau. Sebagai contoh, menangguhkan dagangan semasa turun naik harga yang kuat, untuk mengelakkan keadaan luar biasa di pasaran.

  2. Menambah lebih banyak syarat penapisan dan gabungan isyarat perdagangan, meningkatkan kualiti dan kestabilan isyarat. Sebagai contoh, persilangan yang mempunyai kecenderungan yang kuat dalam gabungan dengan petunjuk teknikal lain.

  3. Sistem parameter yang digunakan secara dinamik. Secara automatik menyesuaikan panjang purata bergerak dan parameter penting seperti suis perdagangan, berdasarkan keadaan pasaran dan ciri-ciri varieti, dan bukannya menggunakan nilai tetap.

  4. Gunakan isyarat persilangan rata-rata ini dalam strategi lanjutan seperti penarikan pelbagai jenis komposit. Gabungan dengan maklumat lain, untuk pengoptimuman strategi mendalam.

Cadangan-cadangan di atas boleh menjadikan strategi ini lebih luas, lebih berkesan dalam perdagangan, dan lebih baik dalam menggabungkan risiko dan pulangan.

ringkaskan

Artikel ini melakukan penguraian dan pembacaan kod terperinci mengenai strategi silang sejajar sederhana Noro’s CrossMA. Kami menganalisis pemikiran strategi, struktur prinsip, kelebihan utama dan arah peningkatan yang mungkin. Strategi secara keseluruhan logiknya jelas, mudah digunakan, parameternya disesuaikan secara fleksibel, dan dapat disesuaikan dengan pelbagai persekitaran perdagangan. Kami juga menganalisis masalah dan risiko yang terdapat dalam strategi, memberikan cadangan penanganan yang disasarkan.

Kod sumber strategi
/*backtest
start: 2022-11-20 00:00:00
end: 2023-11-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2019

//@version=4
strategy(title = "Noro's CrossMA", shorttitle = "CrossMA", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 0, commission_value = 0.1)

needlong = input(true, "long")
needshort = input(true, "short")
lotsize = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
type = input(defval = "SMA", options = ["SMA", "EMA", "VWMA", "DEMA", "TEMA", "KAMA", "PCMA"], title = "MA type")
src = input(close, defval = close, title = "MA Source")
len = input(30, defval = 30, minval = 1, title = "MA length")
off = input(00, defval = 00, minval = 0, title = "MA offset")
anti = input(true, defval = true, title = "Anti-saw filter")
showma = input(true, defval = true, title = "Show MA")
showbg = input(false, defval = false, title = "Show background")
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")

//DEMA
dema = 2 * ema(src, len) - ema(ema(close, len), len)

//TEMA
xPrice = close
xEMA1 = ema(src, len)
xEMA2 = ema(xEMA1, len)
xEMA3 = ema(xEMA2, len)
tema = 3 * xEMA1 - 3 * xEMA2 + xEMA3

//KAMA
xvnoise = abs(src - src[1])
nfastend = 0.20
nslowend = 0.05
nsignal = abs(src - src[len])
nnoise = sum(xvnoise, len)
nefratio = iff(nnoise != 0, nsignal / nnoise, 0)
nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2)
kama = 0.0
kama := nz(kama[1]) + nsmooth * (src - nz(kama[1]))

//PriceChannel
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

sma_1 = sma(src, len)
ema_1 = ema(src, len)
vwma_1 = vwma(src, len)
ma2 = type == "SMA" ? sma_1 : type == "EMA" ? ema_1 : type == "VWMA" ? vwma_1 : type == "DEMA" ? dema : type == "TEMA" ? tema : type == "KAMA" ? kama : type == "PCMA" ? center : 0
ma = ma2[off]

macol = showma ? color.blue : na
plot(ma, color = macol, linewidth = 3, transp = 0)

//Background
trend = 0
trend := anti == false and close > ma ? 1 : anti == false and close < ma ? -1 : low > ma ? 1 : high < ma ? -1 : trend[1]
bgcol = showbg ? trend == 1 ? color.lime : trend == -1 ? color.red : na : na
bgcolor(bgcol, transp = 70)

//Trading
size = strategy.position_size
truetime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)
lot = 0.0
lot := size != size[1] ? strategy.equity / close * lotsize / 100 : lot[1]
if trend == 1 and trend[1] == -1
    strategy.entry("Long", strategy.long, lot, when = needlong and truetime)
if trend == -1 and trend[1] == 1
    strategy.entry("Short", strategy.short, lot, when = needshort and truetime)
if size > 0 and needshort == false and trend == -1
    strategy.close_all()
if size < 0 and needlong == false and trend == 1
    strategy.close_all()
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    strategy.cancel("Long")
    strategy.cancel("Short")