Strategi Perdagangan Crossover SMA

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

img

Gambaran umum

Strategi ini dirancang berdasarkan prinsip salib emas dan salib mati dari Simple Moving Average (SMA). Strategi ini menggunakan dua SMA, yaitu SMA cepat dan SMA lambat. Ketika SMA cepat melintasi di atas SMA lambat dari bawah, sinyal beli dihasilkan. Ketika SMA cepat melintasi di bawah SMA lambat dari atas, sinyal jual dihasilkan.

Logika Strategi

Strategi ini terutama bergantung pada dua garis indikator SMA. SMA cepat memiliki periode yang lebih pendek dan dapat menangkap perubahan harga lebih cepat. SMA lambat memiliki periode yang lebih lama dan dapat menyaring beberapa kebisingan. Ketika SMA cepat melintasi di atas SMA lambat dari bawah, itu menunjukkan bahwa kecepatan kenaikan jangka pendek lebih cepat dan menghasilkan sinyal beli. Ketika SMA cepat melintasi di bawah SMA lambat dari atas, itu menunjukkan bahwa kecepatan penurunan jangka pendek lebih cepat dan menghasilkan sinyal jual.

Dengan menetapkan parameter periode SMA yang berbeda, parameter strategi dapat disesuaikan untuk menyesuaikan diri dengan lingkungan pasar yang berbeda. Pada saat yang sama, strategi juga memungkinkan pengaturan rentang waktu backtesting untuk menguji parameter strategi pada data historis.

Analisis Keuntungan

  • Menggunakan indikator SMA yang terkenal dengan logika sederhana
  • Parameter periode SMA yang dapat disesuaikan dengan kemampuan beradaptasi yang kuat
  • Backtesting rentang waktu dapat diatur untuk optimasi parameter
  • Menggunakan crossover untuk menghasilkan sinyal memiliki efek penyaringan tertentu dan dapat mengurangi perdagangan yang salah

Analisis Risiko

  • SMA sendiri memiliki efek keterlambatan dan mungkin kehilangan peluang jangka pendek
  • Tidak dapat menentukan momentum tren, efektivitas generasi sinyal mungkin tidak stabil
  • Pengaturan parameter periode SMA yang tidak benar akan meningkatkan sinyal palsu

Untuk mengatasi risiko di atas, langkah-langkah berikut dapat diambil:

  • Singkatkan siklus SMA dengan tepat untuk meningkatkan sensitivitas
  • Menggabungkan indikator lain untuk menentukan momentum tren
  • Temukan kombinasi parameter optimal menggunakan alat optimasi parameter

Arahan Optimasi

  • Tambahkan strategi stop loss untuk mengendalikan kerugian tunggal
  • Tambahkan mekanisme manajemen posisi
  • Gabungkan dengan indikator teknis lainnya
  • Tambahkan algoritma pembelajaran mesin untuk mencapai optimasi parameter dinamis

Ringkasan

Ini adalah strategi tren berikut yang khas. Dengan menerapkan prinsip crossover rata-rata bergerak ganda yang sederhana, dapat memperoleh hasil pelacakan yang baik ketika parameter ditetapkan dengan tepat. Namun, SMA itu sendiri memiliki efek keterlambatan tertentu dan tidak dapat menentukan momentum tren. Oleh karena itu, dalam aplikasi yang sebenarnya, alat bantu lainnya perlu diperkenalkan untuk membentuk kombinasi indikator, dan dilengkapi dengan pengoptimalan parameter otomatis dan sarana pengendalian risiko, untuk membuat strategi secara konsisten menguntungkan.


/*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 banyak