Strategi Mengikuti Trend Persilangan Berbilang EMA


Tarikh penciptaan: 2024-01-04 16:22:07 Akhirnya diubah suai: 2024-01-04 16:22:07
Salin: 6 Bilangan klik: 588
1
fokus pada
1617
Pengikut

Strategi Mengikuti Trend Persilangan Berbilang EMA

Gambaran keseluruhan

Strategi mengikuti trend dengan menggunakan EMA yang mempunyai banyak set parameter yang berbeza, melakukan lebih banyak apabila membentuk garpu emas pada EMA jangka masa yang lebih pendek, membuat kosong apabila membentuk garpu mati, dan mencapai perdagangan yang mengikuti trend. Strategi ini menggunakan 7 kumpulan EMA yang sama, termasuk 12, 26, 50, 100, 200, 89, dan 144 kitaran, untuk menilai arah trend dengan membandingkan persimpangan EMA ini.

Prinsip Strategi

Logik teras strategi ini adalah berdasarkan prinsip persilangan EMA rata-rata. Dalam EMA rata-rata, EMA yang lebih pendek lebih sensitif terhadap perubahan harga dan boleh mencerminkan trend harga baru-baru ini; dan EMA yang lebih lama kurang sensitif terhadap perubahan harga dan boleh mencerminkan trend jangka panjang. Apabila EMA jangka pendek menembusi EMA jangka panjang dari bawah, apa yang dipanggil “cangkang emas” terbentuk, yang menunjukkan bahawa trend jangka pendek bertukar menjadi bullish, dan boleh ditetapkan untuk membuat lebih banyak pesanan. Sebaliknya, apabila EMA jangka pendek menembusi EMA jangka panjang dari atas ke bawah, dan membentuk “cangkang mati”, yang menunjukkan bahawa trend jangka pendek bertukar menjadi bearish, dan boleh ditetapkan pesanan kosong.

Strategi ini menggunakan 7 kumpulan garis purata EMA, termasuk 12&26, 12&50, 12&100, 12&200, 12&89 dan 12&144. Strategi ini akan membandingkan persimpangan 7 kumpulan EMA pada masa yang sama. Sebagai contoh, apabila EMA ke-12 melalui EMA ke-26 membentuk garpu emas, ia akan membuka perdagangan; apabila garpu mati berlaku, ia akan meratakan perdagangan. Strategi ini juga menggunakan logik yang sama untuk 6 kumpulan EMA lain.

Analisis kelebihan

Kelebihan utama strategi ini ialah ia boleh menangkap trend pada pelbagai skala masa pada masa yang sama. Dengan menggunakan gabungan beberapa garis rata-rata EMA, strategi ini dapat menangkap trend jangka pendek dan juga trend jangka panjang, dan dapat melakukan pemantauan trend pada pelbagai garis masa. Selain itu, strategi ini dapat mengoptimumkan prestasi dengan menyesuaikan parameter EMA yang berbeza.

Analisis risiko

Risiko utama strategi ini adalah bahawa terdapat kemungkinan bahawa isyarat persilangan terlalu kerap berlaku apabila menggunakan kombinasi EMA rata-rata berganda. Sebagai contoh, jumlah persilangan antara EMA 12 hari dan 26 hari lebih kerap daripada antara EMA 12 hari dan 200 hari.

Untuk mengurangkan risiko di atas, parameter kitaran EMA boleh dioptimumkan dengan sewajarnya, supaya frekuensi persimpangan berada dalam julat yang sesuai; selain itu, anda boleh mengehadkan jumlah pembukaan dagangan sehari atau menetapkan hentian untuk mengawal risiko.

Arah pengoptimuman

Ruang pengoptimuman strategi ini terutamanya tertumpu pada penyesuaian parameter EMA rata-rata. Anda boleh mencuba lebih banyak kombinasi parameter untuk tempoh yang berbeza; Selain itu, anda juga boleh mencuba jenis moving average lain seperti SMA. Di samping itu, anda boleh menambahkan syarat tambahan untuk memfilter isyarat, seperti indikator kuantiti transaksi, indikator kadar turun naik, dan sebagainya, untuk meningkatkan kualiti isyarat.

ringkaskan

Strategi pemantauan trend silang EMA berganda adalah strategi pemantauan trend yang biasa dilakukan dengan membandingkan beberapa EMA untuk menentukan arah trend, dan melakukan pemantauan trend pada pelbagai skala masa. Kelebihan strategi ini adalah kemampuan untuk menyesuaikan parameter secara fleksibel untuk menangkap trend pada tahap yang berbeza. Kelemahannya adalah bahawa isyarat mungkin terlalu kerap, meningkatkan kos perdagangan.

Kod sumber strategi
/*backtest
start: 2023-12-27 00:00:00
end: 2024-01-03 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("EMA Trades", overlay=true, pyramiding=4)

src = input(close, title="Source")

shortestLine = input(12, minval=1, title="Shortest Line")
shorterLine = input(26, minval=1, title="Shorter Line")
shortLine = input(50, minval=1, title="Short Line")
middleLine = input(100, minval=1, title="Middle Line")
longLine = input(200, minval=1, title="Long Line")
longerLine = input(89, minval=1, title="Longer Line")
longestLine = input(144, minval=1, title="Longest Line")

shortestLineOutput = ema(src, shortestLine)
shorterLineOutput = ema(src, shorterLine)
shortLineOutput = ema(src, shortLine)
middleLineOutput = ema(src, middleLine)
longLineOutput = ema(src, longLine)
longerLineOutput = ema(src, longerLine)
longestLineOutput = ema(src, longestLine)

//plot(shortestLineOutput, title="Shortest EMA", color=#ffffff)
//plot(shorterLineOutput, title="Shorter EMA", color=#e54fe6)
//plot(shortLineOutput, title="Short EMA", color=#4e6bc3)
//plot(middleLineOutput, title="Middle EMA", color=#1dd6d8)
//plot(longLineOutput, title="Long EMA", color=#d0de10)
//plot(longerLineOutput, title="Longer EMA", color=#ef6a1a)
//plot(longestLineOutput, title="Longest EMA", color=#ff0e0e)

longEnrtyCondition_1 = crossover(shortestLineOutput[1], shorterLineOutput[1]) and shortestLineOutput > shorterLineOutput
longEntryCondition_2 = crossover(shortestLineOutput[1], shortLineOutput[1]) and shortestLineOutput > shortLineOutput
longEnrtyCondition_3 = crossover(shortestLineOutput[1], middleLineOutput[1]) and shortestLineOutput > middleLineOutput
longEntryCondition_4 = crossover(shortestLineOutput[1], longLineOutput[1]) and shortestLineOutput > longLineOutput

shortEnrtyCondition_1 = crossunder(shortestLineOutput[1], shorterLineOutput[1]) and shortestLineOutput < shorterLineOutput
shortEntryCondition_2 = crossunder(shortestLineOutput[1], shortLineOutput[1]) and shortestLineOutput < shortLineOutput
shortEnrtyCondition_3 = crossunder(shortestLineOutput[1], middleLineOutput[1]) and shortestLineOutput < middleLineOutput
shortEntryCondition_4 = crossunder(shortestLineOutput[1], longLineOutput[1]) and shortestLineOutput < longLineOutput

if (longEnrtyCondition_1)
    strategy.entry("Buy1", strategy.long)
    strategy.exit("Sell1")

if (longEntryCondition_2)
    strategy.entry("Buy2", strategy.long)
    strategy.exit("Sell2")

if (longEnrtyCondition_3)
    strategy.entry("Buy3", strategy.long)
    strategy.exit("Sell3")

if (longEntryCondition_4)
    strategy.entry("Buy4", strategy.long)
    strategy.exit("Sell4")

if (shortEnrtyCondition_1)
    strategy.entry("Sell1", strategy.short)
    strategy.exit("Buy1")

if (shortEntryCondition_2)
    strategy.entry("Sell2", strategy.short)
    strategy.exit("Buy2")

if (shortEnrtyCondition_3)
    strategy.entry("Sell3", strategy.short)
    strategy.exit("Buy3")

if (shortEntryCondition_4)
    strategy.entry("Sell4", strategy.short)
    strategy.exit("Buy4")