Strategi Crossover Purata Bergerak

Penulis:ChaoZhang, Tarikh: 2023-11-07 15:48:41
Tag:

img

Ringkasan

Strategi crossover purata bergerak adalah strategi analisis teknikal yang sangat klasik. Ia mengira purata bergerak dari tempoh yang berbeza dan memerhatikan persilangan mereka untuk menentukan trend pasaran, untuk mencapai matlamat membeli rendah dan menjual tinggi. Strategi ini sesuai untuk perdagangan jangka menengah dan panjang, dan dapat menapis bunyi pasaran dengan berkesan dan mengenal pasti trend.

Prinsip

Strategi ini terutamanya mengira purata bergerak mudah 10 hari (SMA) dan purata bergerak segitiga 10 hari (TRIMA). Apabila SMA melintasi di atas TRIMA, isyarat beli dihasilkan, yang menunjukkan trend pasaran telah berubah dari penurunan ke kenaikan, dan kita boleh membeli. Apabila SMA melintasi di bawah TRIMA, isyarat jual dihasilkan, yang menunjukkan trend pasaran telah berubah dari kenaikan ke penurunan, dan kita boleh menjual.

Secara khusus, strategi pertama memasukkan harga penutupan, dan menentukan panjang kitaran untuk mengira SMA dan TRIMA. Formula pengiraan untuk SMA adalah:

SMA = (P1 + P2 +... + Pn) / n

Di mana Pn adalah harga penutupan untuk n hari yang lalu.

Rumus pengiraan untuk TRIMA ialah:

TRIMA = (SMA1 + SMA2 + SMA3) / 3

Di mana SMA1, SMA2, SMA3 adalah SMA harga penutupan untuk n hari yang lalu masing-masing.

Jadi TRIMA sebenarnya adalah SMA yang dikira di atas SMA, yang mempunyai kesan pelunturan yang lebih baik. Apabila SMA jangka pendek melintasi di atas TRIMA jangka panjang, ia menunjukkan kejayaan purata bergerak jangka pendek, dan kita boleh membeli. Sebaliknya, apabila SMA melintasi di bawah TRIMA, ia menunjukkan kerosakan di bawah purata bergerak jangka pendek, dan kita boleh menjual.

Kelebihan

Kelebihan terbesar strategi ini ialah ia menggunakan keupayaan menilai trend purata bergerak untuk mengenal pasti trend pasaran dengan berkesan dan menapis bunyi pasaran jangka pendek, untuk membeli rendah dan menjual tinggi. Berbanding dengan purata bergerak tunggal, gabungan SMA dan TRIMA dapat meningkatkan kebolehpercayaan terobosan dan mengurangkan kemungkinan terobosan palsu. Di samping itu, purata bergerak itu sendiri mempunyai kelancaran yang baik, yang juga dapat memainkan peranan stop loss untuk mengurangkan kebarangkalian kedudukan stop loss tunggal. Secara umum, strategi ini sangat sesuai untuk perdagangan jangka menengah dan panjang.

Risiko

Risiko utama strategi ini adalah bahawa purata bergerak sendiri tertinggal dari perubahan harga, yang mungkin terlepas peringkat awal trend, mengakibatkan kemasukan lewat. Di samping itu, apabila pasaran tidak mempunyai trend yang jelas, strategi ini akan menghasilkan lebih banyak terobosan palsu. Akhirnya, strategi purata bergerak lebih bergantung pada pengoptimuman parameter. Jika parameter tidak ditetapkan dengan betul, ia juga akan sangat mempengaruhi strategi.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Mengoptimumkan parameter kitaran purata bergerak untuk mencari kombinasi terbaik secara saintifik.

  2. Tambah penapisan penunjuk seperti jumlah dagangan untuk mengelakkan isyarat yang salah apabila jumlah dagangan rendah.

  3. Menggabungkan penunjuk trend seperti MACD untuk menilai trend tempatan dan mengelakkan perdagangan yang kerap di pasaran konsolidasi.

  4. Mengguna pakai purata bergerak adaptif untuk menyesuaikan parameter kitaran secara dinamik apabila pasaran memasuki peringkat tertentu.

  5. Semak dengan pelbagai bingkai masa, seperti mempertimbangkan kemasukan hanya apabila kedua-dua baris harian dan 4 jam menembusi.

Ringkasan

Strategi crossover purata bergerak adalah strategi analisis teknikal yang mudah dan praktikal yang sangat sesuai untuk perdagangan kedudukan jangka menengah dan panjang. Ia dapat mengenal pasti arah trend dengan berkesan. Tetapi ia juga mempunyai ketinggalan tertentu, dan perlu disaring dan dioptimumkan dengan penunjuk penilaian trend untuk mengurangkan kebarangkalian isyarat palsu. Jika parameter dioptimumkan dengan betul, ia boleh melindungi modal dan merebut peluang trend yang lebih besar. Ia pasti bernilai penyelidikan dan penerapan sebagai idea strategi.


/*backtest
start: 2022-10-31 00:00:00
end: 2023-11-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//TMA strategy I came across, uses sma to display entry/exit points for both margin and non margin trading. The buy/sell signals as well as syntax are hidden behind comments if you scroll down.
//Change the commented fields for margin or spot trading!
//@version=3
strategy("MP Rollercoaster Strat", overlay=true)

bgcolor ( color=black, transp=0, title='Blackground', editable=true)

x = input(close, "Red")
n = input(10, "periods")
trima = sma(sma(x,n), n)

kisa=input(5, "Green")
sma = sma(close, kisa)

bull = (sma>trima)
fill(plot(sma, color = green), plot(trima, color=red), bull ? green : red)

//Conditions
buy_signal = crossover(sma,trima)
sell_signal = crossunder(sma,trima)

plotshape(sell_signal, style=shape.triangleup, color = red, text="Short")
plotshape(buy_signal, style=shape.triangledown, color = green, text="Long")
//plotshape(sell_signal, style=shape.triangleup, color = red, text="Sell")
//plotshape(buy_signal, style=shape.triangledown, color = green, text="Buy")

alertcondition(sell_signal, title = 'Short', message = 'e= s= c=position b=long t=market l= | delay=30 | e= s= b=short l= t=market q=0.01')
alertcondition(buy_signal, title = 'Long', message =  'e= s= c=position b=short t=market l= | delay=30 | e= s= b=long l= t=market q=0.01')

//alertcondition(sell_signal, title = 'Sell', message = 'e= s= c=order b=buy | delay=3 | e= b=sell q=99% p=0.70% u=currency')
//alertcondition(buy_signal, title = 'Buy', message =  'e= s= c=order b=sell | delay=30 | e= b=buy q=80 p=0.1% u=currency')

testStartYear = input(2018, "From Year") 
testStartMonth = input(4, "From Month")
testStartDay = input(1, "From Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2019, "To Year")
testStopMonth = input(1, "To Month")
testStopDay = input(1, "To Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

testPeriod() => true

if testPeriod()
    if buy_signal
        strategy.entry("Long", true)
    

    if sell_signal
        strategy.close("Long")

Lebih lanjut