Strategi ini adalah strategi momentum berdasarkan garis purata bergerak

Penulis:ChaoZhang, Tarikh: 2024-01-23 10:38:18
Tag:

img

Ringkasan

Strategi ini adalah strategi momentum berdasarkan garis purata bergerak. Ia menghasilkan isyarat perdagangan dengan mengira purata bergerak mudah dari tempoh yang berbeza dan membandingkan situasi silang mereka. Khususnya, apabila garis purata bergerak jangka pendek melintasi di atas garis purata bergerak jangka panjang, isyarat beli dihasilkan; apabila garis purata bergerak jangka pendek melintasi di bawah garis purata bergerak jangka panjang, isyarat jual dihasilkan.

Prinsip Strategi

Logik teras strategi ini adalah berdasarkan kesan momentum, iaitu kelangsungan trend harga saham. Garis purata bergerak dapat mencerminkan trend perubahan harga saham dengan berkesan. Apabila garis purata bergerak jangka pendek melintasi di atas garis purata bergerak jangka panjang, ia bermakna harga saham mula memasuki trend menaik; sebaliknya, apabila garis purata bergerak jangka pendek melintasi di bawah garis purata bergerak jangka panjang, ia bermakna harga saham mula memasuki trend menurun. Strategi ini menghasilkan isyarat perdagangan berdasarkan prinsip ini.

Secara khusus, purata bergerak mudah 13 hari dan purata bergerak mudah 34 hari ditakrifkan dalam strategi. Selepas mengira kedua-dua purata bergerak ini berdasarkan harga penutupan harian, hubungan magnitud mereka dibandingkan. Jika garis 13 hari melintasi di atas garis 34 hari, isyarat beli dihasilkan, yang menunjukkan bahawa harga saham memasuki trend menaik dan kedudukan panjang harus ditubuhkan; jika garis 13 hari melintasi di bawah garis 34 hari, isyarat jual dihasilkan, yang menunjukkan bahawa harga saham memasuki trend menurun dan kedudukan harus ditutup.

Analisis Kelebihan

Kelebihan terbesar strategi ini adalah bahawa ia mudah dan mudah difahami dan dilaksanakan. Garis purata bergerak adalah salah satu penunjuk teknikal yang paling asas dan biasa digunakan. Prinsipnya mudah dan mudah difahami dan digunakan. Pada masa yang sama, isyarat persilangan garis purata bergerak juga telah terbukti berkesan melalui amalan jangka panjang.

Di samping itu, tetapan parameter strategi ini fleksibel dan boleh diselaraskan mengikut pelbagai jenis dan keadaan pasaran. Sebagai contoh, parameter kitaran garis purata bergerak boleh diubah untuk menyesuaikan kepekaan strategi. Ini memberikan ruang untuk pengoptimuman dan penyesuaian strategi.

Analisis Risiko

Risiko terbesar strategi ini adalah bahawa mungkin terdapat lebih banyak isyarat palsu dan terperangkap dalam pasaran yang terikat julat. Apabila harga turun naik dengan tajam, garis purata bergerak boleh menghasilkan persilangan yang kerap, yang mengakibatkan isyarat palsu. Pada ketika ini, anda perlu menyesuaikan parameter kitaran garis purata bergerak untuk menapis beberapa bunyi bising.

Di samping itu, apabila terdapat pembalikan pasaran yang lebih besar, titik stop loss strategi boleh dilanggar, mengakibatkan kerugian yang lebih besar.

Arahan pengoptimuman

Aspek berikut strategi ini boleh dioptimumkan:

  1. Mengoptimumkan parameter kitaran garis purata bergerak untuk mencari kombinasi parameter yang optimum untuk pelbagai jenis dan keadaan pasaran.

  2. Tambah penapisan penunjuk teknikal lain seperti MACD dan KD untuk mengelakkan penjanaan isyarat palsu di pasaran yang terikat julat.

  3. Mengoptimumkan dan menyesuaikan secara dinamik strategi stop loss untuk mengelakkan titik stop loss terlalu dekat sambil memastikan stop loss, dengan kebarangkalian yang lebih tinggi untuk ditembusi.

  4. Meningkatkan mekanisme pengurusan kedudukan seperti pelaburan tetap dan nisbah kedudukan untuk mengawal risiko transaksi tunggal.

Kesimpulan

Strategi ini adalah strategi crossover purata bergerak yang sangat klasik. Ia menjana isyarat beli dan jual dengan mengira dan membandingkan hubungan antara purata bergerak jangka pendek dan jangka panjang. Kelebihan strategi ini adalah parameter yang mudah, fleksibel, dan sesuai untuk pemula belajar; kelemahan adalah bahawa isyarat mungkin tidak cukup stabil dan mudah terjebak dalam pasaran terhad. Dengan pengoptimuman yang betul, ia masih boleh menjadi strategi kuantitatif yang sangat praktikal.


/*backtest
start: 2023-01-16 00:00:00
end: 2024-01-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
// TODO: update strategy name
strategy("{STRATEGY NAME}", overlay=true)

// === TA LOGIC ===

//
//
// TODO: PUT YOUR TA LOGIC HERE
LONG_SIGNAL_BOOLEAN = crossover(sma(close, 13), sma(close, 34))
SHORT_SIGNAL_BOOLEAN = crossunder(sma(close, 12), sma(close, 21))

// === INPUT BACKTEST DATE RANGE ===
enableShorts = input(false, title="Enable short entries?")

FromMonth = input(defval = 5, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 18, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 2017)
ToMonth   = input(defval = 9, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 2018, title = "To Year", minval = 2017)

start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true // create function "within window of time"

// === STRATEGY BUY / SELL ENTRIES ===

// TODO: update the placeholder LONG_SIGNAL_BOOLEAN and SHORT_SIGNAL_BOOLEAN to signal
// long and short entries
buy() => window() and LONG_SIGNAL_BOOLEAN
sell() => window() and SHORT_SIGNAL_BOOLEAN

if buy()
    strategy.entry("Long", strategy.long, comment="Long")

if sell()
    if (enableShorts)
        strategy.entry("Short", strategy.short, comment="Short")
    else
        strategy.close("Long")

// === BACKTESTING: EXIT strategy ===
sl_inp = input(10, title='Stop Loss %', type=float)/100
tp_inp = input(30, title='Take Profit %', type=float)/100

stop_level = strategy.position_avg_price * (1 - sl_inp)
take_level = strategy.position_avg_price * (1 + tp_inp)

strategy.exit("Stop Loss/Profit", "Long", stop=stop_level, limit=take_level)

Lebih lanjut