Berdasarkan strategi dagangan crossover purata bergerak berganda yang mudah


Tarikh penciptaan: 2023-12-25 16:03:48 Akhirnya diubah suai: 2023-12-25 16:03:48
Salin: 0 Bilangan klik: 643
1
fokus pada
1623
Pengikut

Berdasarkan strategi dagangan crossover purata bergerak berganda yang mudah

Gambaran keseluruhan

Strategi ini direka berdasarkan asas garisan mati garisan emas rata-rata bergerak sederhana (SMA). Strategi ini menggunakan dua SMA, iaitu SMA pantas dan SMA perlahan, yang menghasilkan isyarat beli apabila SMA pantas menembusi SMA perlahan dari arah bawah; apabila SMA pantas jatuh dari arah atas ke arah bawah, menghasilkan isyarat jual.

Prinsip Strategi

Strategi ini bergantung kepada dua garis penunjuk SMA. Di antaranya, penyetempatan yang lebih pendek semasa SMA cepat, dapat menangkap perubahan harga lebih cepat; penyetempatan yang lebih lama semasa SMA perlahan, dapat menyaring sebahagian daripada kebisingan. Apabila SMA cepat melintasi SMA perlahan dari arah bawah, ini menunjukkan kenaikan harga jangka pendek lebih cepat, menghasilkan isyarat beli.

Dengan menetapkan parameter kitaran SMA yang berbeza, anda boleh menyesuaikan parameter strategi untuk menyesuaikan diri dengan keadaan pasaran yang berbeza. Pada masa yang sama, strategi ini juga membolehkan anda menetapkan rentang masa pengukuran untuk menguji parameter strategi pada data sejarah.

Analisis kelebihan

  • Menggunakan indikator SMA yang terkenal, asasnya mudah difahami
  • Parameter kitaran SMA yang boleh disesuaikan, beradaptasi
  • Julat masa pengesanan boleh ditetapkan untuk pengoptimuman parameter mudah
  • Menerbitkan isyarat dengan cara bersilang, mempunyai kesan penapisan terhadap isyarat penembusan, yang dapat mengurangkan perdagangan yang salah

Analisis risiko

  • SMA sendiri ketinggalan zaman, mungkin terlepas peluang untuk melintas garis pendek
  • Tidak dapat menentukan kekuatan trend, kesan isyarat mungkin tidak stabil
  • Parameter kitaran SMA yang tidak betul akan meningkatkan isyarat silap

Langkah-langkah berikut boleh diambil untuk menangani risiko tersebut:

  • Meningkat sensitiviti dengan memendekkan kitaran SMA
  • Keupayaan trend dikombinasikan dengan penunjuk lain
  • Mencari kombinasi parameter terbaik dengan alat pengoptimuman parameter

Arah pengoptimuman

  • Meningkatkan strategi penangguhan kerugian dan mengawal kerugian tunggal
  • Menambah mekanisme pengurusan kedudukan
  • Gabungan dengan petunjuk teknikal lain
  • Menambah algoritma pembelajaran mesin untuk mengoptimumkan parameter dinamik

ringkaskan

Strategi ini adalah strategi pengesanan trend yang tipikal. Dengan menggunakan prinsip simpulan dua persilangan linear yang sama, kesan pengesanan yang lebih baik dapat diperoleh dengan parameter yang sesuai. Tetapi SMA sendiri mempunyai keterbelakangan tertentu, tidak dapat menilai kekuatan trend. Oleh itu, dalam aplikasi praktikal, perlu diperkenalkan alat bantu lain untuk membentuk kumpulan indikator, sambil dilengkapi dengan pengoptimuman parameter automatik dan alat kawalan risiko, untuk menjadikan strategi stabil dan menguntungkan.

Kod sumber strategi
/*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)