Strategi Penembusan Purata Bergerak Berganda

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

img

Ringkasan

Strategi penembusan purata bergerak berganda adalah trend yang biasa mengikuti strategi perdagangan kuantitatif. Ia menghasilkan isyarat perdagangan dengan mengira purata bergerak mudah dari tempoh yang berbeza dan memeriksa sama ada harga menembusi mereka untuk menentukan kedudukan. Strategi ini menggunakan purata bergerak 20 hari dan 60 hari sebagai isyarat perdagangan.

Logika Strategi

Logik teras strategi PEM berganda adalah untukmenggunakan purata bergerak dari tempoh yang berbeza untuk menangkap trend harga dan menjana isyarat perdagangan apabila harga memecahkan purata bergerak.

Secara khusus, strategi ini menggunakan purata bergerak mudah 20 hari dan 60 hari. Kedua-dua purata bergerak ini boleh dilihat sebagai alat untuk menangkap trend jangka pendek dan jangka menengah dan jangka panjang masing-masing. Apabila harga jangka pendek menembusi harga jangka menengah dan panjang, ia menandakan bahawa pasaran berada dalam trend menaik dan dengan itu harus pergi panjang. Apabila harga jangka pendek jatuh di bawah harga jangka menengah dan panjang, ia menandakan bahawa pasaran berada dalam trend menurun dan dengan itu kedudukan harus dikurangkan.

Kod ini menggunakanta.crossoverdanta.crossunderuntuk menentukan sama ada harga telah memecahkan atau jatuh di bawah purata bergerak. isyarat perdagangan untuk pergi panjang atau mengurangkan kedudukan dikeluarkan dengan sewajarnya apabila pecah berlaku.

Kelebihan

Strategi pecah purata bergerak berganda mempunyai kelebihan berikut:

  1. Konsepnya mudah dan mudah difahami dan dilaksanakan.
  2. Ia boleh dengan berkesan mengesan trend pasaran dan mengelakkan gangguan bunyi.
  3. Beberapa parameter strategi dan mudah untuk mengoptimumkan.
  4. Fleksibel dalam memilih tempoh purata bergerak untuk menyesuaikan sensitiviti pasaran.

Risiko

Terdapat juga beberapa risiko dengan strategi:

  1. Cenderung untuk whipsaws apabila pasaran berkisar.
  2. Tidak berkesan dalam menangkap perubahan pasaran yang cepat. Penunjuk lain boleh ditambah sebagai penapis.
  3. Purata bergerak secara semula jadi ketinggalan, tidak dapat memberi isyarat awal perubahan harga.

Kawasan Peningkatan

Strategi ini boleh ditingkatkan dari dimensi berikut:

  1. Mengoptimumkan tempoh purata bergerak untuk mencari set parameter terbaik.
  2. Tambah penunjuk lain untuk menapis isyarat palsu, contohnya MACD, KD dll.
  3. Tambah logik stop loss.
  4. Menggabungkan analisis pelbagai jangka masa untuk ketahanan.

Ringkasan

Strategi penembusan purata bergerak berganda adalah strategi trend berikut yang mudah dan praktikal. Ia dapat menangkap dengan berkesan trend jangka menengah dan panjang sambil mengelakkan bunyi pasaran jangka pendek. Juga, logik yang mudah difahami dan parameter terhad menjadikannya sangat sesuai untuk perdagangan kuantitatif. Sudah tentu terdapat ruang untuk penambahbaikan, seperti penyesuaian parameter, penapisan isyarat dan stop loss untuk menjadikannya 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 lanjut