Strategi Penembusan Rata-rata Bergerak Ganda

Penulis:ChaoZhang, Tanggal: 2024-02-04 16:06:46
Tag:

img

Gambaran umum

Strategi breakout rata-rata bergerak ganda adalah tren khas yang mengikuti strategi perdagangan kuantitatif. Ini menghasilkan sinyal perdagangan dengan menghitung rata-rata bergerak sederhana dari periode yang berbeda dan memeriksa apakah harga menerobosnya untuk menentukan posisi. Strategi ini menggunakan rata-rata bergerak 20 hari dan 60 hari sebagai sinyal perdagangan.

Logika Strategi

Logika inti dari strategi MA ganda adalah untukmenggunakan rata-rata bergerak dari periode yang berbeda untuk menangkap tren harga dan menghasilkan sinyal perdagangan ketika harga menembus rata-rata bergerak.

Secara khusus, strategi ini menggunakan rata-rata bergerak sederhana 20 hari dan 60 hari. Dua rata-rata bergerak ini dapat dilihat sebagai alat untuk menangkap tren jangka pendek dan jangka menengah dan jangka panjang masing-masing. Ketika harga jangka pendek menembus harga jangka menengah dan jangka panjang, itu menandakan bahwa pasar berada dalam tren kenaikan dan dengan demikian harus pergi panjang. Ketika harga jangka pendek turun di bawah harga jangka menengah dan jangka panjang, itu menandakan bahwa pasar berada dalam tren penurunan dan dengan demikian posisi harus dikurangi.

Kode ini menggunakanta.crossoverdanta.crossunderuntuk menentukan apakah harga telah menembus atau turun di bawah rata-rata bergerak. sinyal perdagangan untuk pergi panjang atau mengurangi posisi yang dikeluarkan sesuai ketika terjadi breakout.

Keuntungan

Strategi penyebaran rata-rata bergerak ganda memiliki keuntungan berikut:

  1. Konsepnya sederhana dan mudah dipahami dan diterapkan.
  2. Hal ini dapat secara efektif melacak tren pasar dan menghindari gangguan kebisingan.
  3. Beberapa parameter strategi dan mudah dioptimalkan.
  4. Fleksibel dalam memilih periode moving average untuk menyesuaikan sensitivitas pasar.

Risiko

Ada juga beberapa risiko dengan strategi:

  1. Cenderung untuk whipsaws ketika pasar berkisar. dapat meringankan dengan meningkatkan periode penahan.
  2. Indikator lain dapat ditambahkan sebagai filter.
  3. Moving averages inherently lagging, tidak mampu untuk sinyal awal perubahan harga.

Bidang Peningkatan

Strategi dapat ditingkatkan dari dimensi berikut:

  1. Mengoptimalkan periode rata-rata bergerak untuk menemukan set parameter terbaik.
  2. Tambahkan indikator lain untuk menyaring sinyal palsu, misalnya MACD, KD dll.
  3. Tambahkan logika stop loss.
  4. Masukkan analisis multi-frame waktu untuk ketahanan.

Ringkasan

Strategi breakout rata-rata bergerak ganda adalah strategi yang sederhana dan praktis mengikuti tren. Ini dapat secara efektif menangkap tren jangka menengah dan panjang sambil menghindari kebisingan pasar jangka pendek. Juga, logika yang mudah dipahami dan parameter terbatas membuatnya sangat cocok untuk perdagangan kuantitatif. Tentu saja ada ruang untuk perbaikan, seperti penyesuaian parameter, penyaringan sinyal dan stop loss untuk membuatnya lebih stabil dan menguntungkan.


/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Astorhsu

//@version=5
strategy("Astor SMA20/60", overlay=true)
backtest_year = input(2018, title='backtest_year') //回測開始年分
backtest_month = input.int(01, title='backtest_month', minval=1, maxval=12) //回測開始月份
backtest_day = input.int(01, title='backtest_day', minval=1, maxval=31)  //回測開始日期
start_time = timestamp(backtest_year, backtest_month, backtest_day, 00, 00)  //回測開始的時間函數

//Indicators
sma10 = ta.sma(close,10)
sma20 = ta.sma(close,20)
sma60 = ta.sma(close,60)
plot(sma20, color=color.green, title="sma(20)")
plot(sma60, color=color.red, title="sma(60)")

//進場條件
// trend1 = sma60 > sma20 //假設目前趨勢為60>20
longCondition = ta.crossover(close, ta.sma(close, 20))
if (longCondition) 
    strategy.entry("open long20", strategy.long, qty=1, comment="站上m20做多")


shortCondition = ta.crossunder(close, ta.sma(close, 20))
if (shortCondition) 
    strategy.close("open long20",comment="跌破m20平倉", qty=1)     
    
longCondition1 = ta.crossover(close, ta.sma(close, 60))
if (longCondition1) 
    strategy.entry("open long60", strategy.long, qty=1, comment="站上m60做多")


shortCondition1 = ta.crossunder(close, ta.sma(close, 60))
if (shortCondition1) 
    strategy.close("open long60",comment="跌破m60平倉", qty=1)     
    
// longCondition2 = ta.crossover(close, ta.sma(close, 10))
// if (longCondition2) 
//     strategy.entry("open long10", strategy.long, qty=1, comment="站上m10做多")


// shortCondition2 = ta.crossunder(close, ta.sma(close, 10))
// if (shortCondition2)
//     strategy.close("open long10",comment="跌破m10平倉", qty=1)   


Lebih banyak