
Strategi multi EMA crossover trend tracking dengan menggunakan EMA crossover dari beberapa set parameter yang berbeda dalam kombinasi, melakukan lebih banyak ketika bercabang emas pada EMA periode yang lebih pendek, dan melakukan kosong ketika bercabang mati, untuk mencapai perdagangan yang mengikuti tren. Strategi ini menggunakan 7 set rata-rata EMA sekaligus, termasuk 12, 26, 50, 100, 200, 89, dan 144 siklus, untuk menilai arah tren dengan membandingkan persimpangan EMA ini.
Logika inti dari strategi ini didasarkan pada prinsip persilangan EMA rata-rata. Dalam EMA rata-rata, EMA dengan periode yang lebih pendek lebih sensitif terhadap perubahan harga, yang dapat mencerminkan tren harga dalam periode terakhir; sedangkan EMA dengan periode yang lebih panjang kurang sensitif terhadap perubahan harga, yang dapat mencerminkan tren jangka panjang. Ketika EMA dengan periode pendek melewati EMA dengan periode panjang dari bawah, yang disebut “fork emas” terbentuk, yang berarti bahwa tren jangka pendek berbalik bullish, dan dapat diatur untuk melakukan lebih banyak pesanan. Sebaliknya, ketika EMA dengan periode pendek melewati EMA dengan periode panjang dari atas ke bawah, yang membentuk “fork mati” yang berarti bahwa tren jangka pendek berbalik bearish, dan dapat mengatur pesanan kosong.
Strategi ini menggunakan 7 kelompok EMA rata-rata, termasuk 12&26, 12&50, 12&100, 12&200, 12&89 dan 12&144. Strategi ini akan membandingkan secara bersamaan 7 kelompok EMA yang bersilang. Misalnya, ketika EMA tanggal 12 melewati EMA tanggal 26 untuk membentuk garpu emas, maka akan dibuka untuk melakukan perdagangan; ketika terjadi garpu mati, maka akan dipadatkan untuk melakukan perdagangan. Strategi ini juga menggunakan logika yang sama untuk 6 kelompok EMA rata-rata lainnya.
Keuntungan terbesar dari strategi ini adalah dapat menangkap tren pada beberapa skala waktu secara bersamaan. Dengan menggunakan kombinasi dari beberapa garis rata-rata EMA, strategi ini dapat menangkap tren jangka pendek, tetapi juga dapat melacak tren jangka panjang, dan memungkinkan pelacakan tren pada beberapa sumbu waktu. Selain itu, strategi ini dapat mengoptimalkan kinerja dengan menyesuaikan parameter dari EMA yang berbeda.
Risiko utama dari strategi ini adalah bahwa sinyal silang dapat terjadi terlalu sering ketika menggunakan kombinasi EMA rata-rata ganda. Misalnya, jumlah silang antara EMA tanggal 12 dan 26 lebih sering daripada antara EMA tanggal 12 dan EMA 200 hari.
Untuk mengurangi risiko di atas, Anda dapat mengoptimalkan parameter siklus EMA dengan tepat sehingga frekuensi silangnya berada dalam kisaran yang tepat; Anda juga dapat membatasi jumlah posisi yang dibuka dalam satu hari atau mengatur stop loss untuk mengendalikan risiko.
Ruang optimasi untuk strategi ini terutama berfokus pada penyesuaian parameter EMA rata-rata. Kombinasi parameter yang lebih banyak dapat dicoba untuk periode yang berbeda. Selain itu, Anda juga dapat mencoba jenis lain dari moving average seperti SMA. Selain itu, strategi dapat menambahkan kondisi tambahan untuk memfilter sinyal, seperti indikator volume transaksi, indikator volatilitas, dan lain-lain, sehingga meningkatkan kualitas sinyal.
Strategi pelacakan tren lintas lintas lintas EMA adalah strategi pelacakan tren yang umum dilakukan dengan membandingkan beberapa EMA untuk menentukan arah tren dan melakukan pelacakan tren pada skala waktu yang berbeda. Keuntungan dari strategi ini adalah kemampuan untuk menyesuaikan parameter secara fleksibel untuk menangkap tren pada tingkat yang berbeda. Kelemahannya adalah bahwa sinyal dapat terlalu sering terjadi dan meningkatkan biaya perdagangan.
/*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")