Strategi Perdagangan Rentas SMA

Penulis:ChaoZhang, Tarikh: 2023-12-25 16:03:48
Tag:

img

Ringkasan

Strategi ini direka berdasarkan prinsip salib emas dan salib mati Purata Bergerak Sederhana (SMA). Strategi ini menggunakan dua SMA, iaitu SMA pantas dan SMA perlahan. Apabila SMA pantas melintasi di atas SMA perlahan dari bawah, isyarat beli dihasilkan. Apabila SMA pantas melintasi di bawah SMA perlahan dari atas, isyarat jual dihasilkan.

Logika Strategi

Strategi ini terutamanya bergantung pada dua garis penunjuk SMA. SMA pantas mempunyai tempoh yang lebih pendek dan dapat menangkap perubahan harga dengan lebih cepat. SMA perlahan mempunyai tempoh yang lebih lama dan boleh menapis beberapa bunyi bising. Apabila SMA pantas melintasi di atas SMA perlahan dari bawah, ia menunjukkan bahawa kelajuan kenaikan jangka pendek lebih cepat dan menghasilkan isyarat beli. Apabila SMA pantas melintasi di bawah SMA perlahan dari atas, ia menunjukkan bahawa kelajuan penurunan jangka pendek lebih cepat dan menghasilkan isyarat jual.

Dengan menetapkan parameter tempoh SMA yang berbeza, parameter strategi boleh diselaraskan ke tahap tertentu untuk menyesuaikan diri dengan persekitaran pasaran yang berbeza. Pada masa yang sama, strategi juga membolehkan menetapkan julat masa backtesting untuk menguji parameter strategi pada data sejarah.

Analisis Kelebihan

  • Menggunakan penunjuk SMA yang terkenal dengan logik yang mudah
  • Parameter tempoh SMA yang boleh disesuaikan dengan daya sesuaikan yang kuat
  • Backtesting julat masa boleh ditetapkan untuk pengoptimuman parameter
  • Menggunakan silang untuk menjana isyarat mempunyai kesan penapisan tertentu dan boleh mengurangkan perdagangan yang salah

Analisis Risiko

  • SMA itu sendiri mempunyai kesan kelewatan dan mungkin terlepas peluang jangka pendek
  • Tidak dapat menentukan momentum trend, keberkesanan penjanaan isyarat mungkin tidak stabil
  • Tetapan parameter tempoh SMA yang tidak betul akan meningkatkan isyarat palsu

Untuk menangani risiko di atas, langkah-langkah berikut boleh diambil:

  • Memendekkan kitaran SMA dengan betul untuk meningkatkan kepekaan
  • Menggabungkan penunjuk lain untuk menentukan momentum trend
  • Cari kombinasi parameter optimum menggunakan alat pengoptimuman parameter

Arahan pengoptimuman

  • Tambah strategi stop loss untuk mengawal kerugian tunggal
  • Tambah mekanisme pengurusan kedudukan
  • Gabungkan dengan penunjuk teknikal lain
  • Tambah algoritma pembelajaran mesin untuk mencapai pengoptimuman parameter dinamik

Ringkasan

Ini adalah strategi trend berikut yang tipikal. Dengan menggunakan prinsip crossover purata bergerak berganda yang mudah, ia boleh memperoleh hasil penjejakan yang baik apabila parameter ditetapkan dengan betul. Walau bagaimanapun, SMA itu sendiri mempunyai kesan kelewatan tertentu dan tidak dapat menentukan momentum trend. Oleh itu, dalam aplikasi sebenar, alat tambahan lain perlu diperkenalkan untuk membentuk kombinasi penunjuk, dan dilengkapi dengan pengoptimuman parameter automatik dan cara kawalan risiko, untuk menjadikan strategi itu menguntungkan secara berterusan.


/*backtest
start: 2023-12-17 00:00:00
end: 2023-12-18 19:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//strategy(title="MA Cross Entry & Exit w/Date Range", overlay=true, initial_capital=10000, currency='USD')

strategy(title="SMA Cross Entry & Exit Strategy", overlay=true)

// Credit goes to this developer for the "Date Range Code"
// https://www.tradingview.com/script/62hUcP6O-How-To-Set-Backtest-Date-Range/


// === GENERAL INPUTS ===
// short ma
maFastSource   = input(defval = open, title = "Fast MA Source")
maFastLength   = input(defval = 36, title = "Fast MA Period", minval = 1)
// long ma
maSlowSource   = input(defval = open , title = "Slow MA Source")
maSlowLength   = input(defval = 46, title = "Slow MA Period", minval = 1)

// === SERIES SETUP ===
// a couple of ma's..
maFast = sma(maFastSource, maFastLength)
maSlow = sma(maSlowSource, maSlowLength)


// === PLOTTING ===
fast = plot(maFast, title = "Fast MA", color = red, linewidth = 2, style = line, transp = 30)
slow = plot(maSlow, title = "Slow MA", color = green, linewidth = 2, style = line, transp = 30)

// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 2017)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"

// === LOGIC ===
//enterLong = crossover(maFast, maSlow)
//exitLong = crossover(maSlow, maFast)
enterLong = crossover(maSlow, maFast)
exitLong = crossover(maFast, maSlow)


// Entry //
strategy.entry(id="Long Entry", long=true, when=window() and enterLong)
strategy.entry(id="Short Entry", long=false, when=window() and exitLong)

// === FILL ====

fill(fast, slow, color = maFast > maSlow ? green : red)

Lebih lanjut