Trend purata bergerak berganda mengikut strategi

Penulis:ChaoZhang, Tarikh: 2024-03-22 13:56:44
Tag:

img

Ringkasan

Strategi ini menggunakan persilangan dua purata bergerak untuk menentukan perubahan dalam trend pasaran dan membuat keputusan membeli / menjual berdasarkan arah trend. Ia pergi panjang apabila MA jangka pendek melintasi di atas MA jangka panjang, dan pergi pendek apabila MA jangka pendek melintasi di bawah MA jangka panjang, bertujuan untuk mengikuti trend.

Prinsip Strategi

Inti strategi ini adalah dua purata bergerak: MA cepat (periode lalai 32) dan MA perlahan (juga tempoh lalai 32, boleh diselaraskan melalui parameter). Apabila harga penutupan melintasi di atas / di bawah saluran yang dibentuk oleh kedua-dua MA ini, ia menunjukkan pembalikan trend dan strategi menghasilkan isyarat beli / jual dengan sewajarnya:

  • Apabila MA pantas melintasi di atas MA perlahan, pergi panjang
  • Apabila MA pantas melintasi di bawah MA perlahan, pergi pendek
  • Apabila sudah memegang kedudukan panjang, jika MA pantas melintasi di bawah MA perlahan, tutup panjang dan pergi pendek
  • Apabila sudah memegang kedudukan pendek, jika MA pantas melintasi di atas MA perlahan, tutup pendek dan pergi panjang

Melalui kaedah persilangan MA ini, strategi boleh mengikuti trend, memegang kedudukan panjang dalam trend menaik dan kedudukan pendek dalam trend menurun, sehingga isyarat pembalikan muncul.

Analisis Kelebihan

  1. Mengikuti trend: Dengan menggunakan persilangan MA untuk mengenal pasti trend, strategi dapat menangkap dan mengikuti trend pasaran utama dengan berkesan.
  2. Sederhana dan mudah digunakan: Logik strategi jelas, hanya menggunakan dua MA. Tetapan parameter adalah mudah dan mudah difahami dan dikuasai.
  3. Penggunaan luas: Strategi ini boleh digunakan secara meluas untuk instrumen dan jangka masa yang berbeza, dan boleh digunakan di pelbagai pasaran.
  4. Stop-loss tepat pada masanya: Apabila trend berbalik, strategi boleh menutup kedudukan dengan segera untuk mengawal kerugian.

Analisis Risiko

  1. Prestasi yang lemah di pasaran yang berbeza: Apabila pasaran berada dalam corak sampingan, isyarat silang yang kerap akan membawa kepada perdagangan dan kerugian yang berlebihan.
  2. Tanggapan yang tidak mencukupi terhadap pergerakan yang melampau: Strategi mungkin bertindak balas terlalu perlahan terhadap situasi yang melampau (seperti lonjakan atau kejatuhan yang cepat), yang membawa kepada kerugian besar.
  3. Kesukaran dalam pengoptimuman parameter: Mengoptimumkan parameter MA memerlukan sejumlah besar data sejarah dan pengujian semula. Parameter yang dioptimumkan mempunyai panduan terhad untuk prestasi masa depan.

Untuk menangani risiko ini, boleh dipertimbangkan untuk menambah penapis yang sesuai, seperti penapis julat sebenar ATR atau purata, untuk mengurangkan perdagangan berlebihan di pasaran julat; menetapkan stop-loss yang munasabah untuk mengawal kerugian perdagangan tunggal; dan terus mengoptimumkan parameter untuk menyesuaikan diri dengan pasaran.

Arah pengoptimuman

  1. Pengesahan trend: Selepas menghasilkan isyarat perdagangan, penunjuk pengesahan trend tambahan seperti MACD atau DMI boleh dimasukkan untuk menapis isyarat lebih lanjut.
  2. Stop-loss dinamik: Gunakan penunjuk seperti ATR untuk menetapkan tahap stop-loss dinamik dan bukannya peratusan tetap atau harga berhenti, untuk kawalan risiko yang lebih baik.
  3. Pengukuran kedudukan: Sesuaikan saiz kedudukan secara dinamik berdasarkan kekuatan trend, turun naik dan penunjuk lain.
  4. Analisis pelbagai jangka masa: Pertimbangkan sistem MA pelbagai jangka masa, seperti menggabungkan MA harian dan 4 jam, untuk menapis dan mengesahkan antara satu sama lain dan meningkatkan ketepatan pengenalan trend.
  5. Parameter penyesuaian: Memperkenalkan kaedah pengoptimuman parameter penyesuaian, seperti algoritma genetik, untuk membolehkan parameter strategi menyesuaikan diri dengan keadaan pasaran yang berbeza.

Pengoptimuman di atas boleh meningkatkan keupayaan strategi untuk menangani pasaran yang kompleks, tetapi perlu berhati-hati untuk mengelakkan pengoptimuman berlebihan yang boleh membawa kepada pemasangan kurva dan prestasi masa depan yang buruk.

Ringkasan

Strategi trend berikut MA berganda menangkap trend melalui persilangan MA. Ia mudah, mudah digunakan, dan banyak digunakan. Walau bagaimanapun, ia berprestasi buruk di pasaran yang berbeza, tidak bertindak balas dengan mencukupi terhadap pergerakan yang melampau, dan menghadapi kesukaran dalam pengoptimuman parameter.

Strategi ini boleh dioptimumkan dengan memperkenalkan lebih banyak penapis penunjuk, stop-loss dinamik, saiz kedudukan, analisis pelbagai jangka masa, dan parameter adaptif.

Secara keseluruhan, strategi ini boleh berfungsi sebagai strategi trend asas, tetapi sukar berdiri sendiri dan lebih sesuai sebagai sebahagian daripada portfolio strategi.


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

//@version=5

//study(title="Demo - SSL Basic", shorttitle="Demo - SSL Basic", overlay=true)
strategy(title='Demo - SSL Basic', shorttitle='Demo - SSL Basic', overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=100, commission_value=0.15)

// Backtest Date Range
start_date_long = input(title='Backtest Long Start Date', defval=timestamp('01 Jan 2018 00:00 +0530'))
end_date_long = input(title='Backtest Long End Date', defval=timestamp('25 Jan 2030 00:00 +0530'))
backtest_range = true

// Inputs
maType = input.string(title='SSL MA Type', options=['SMA', 'EMA', 'WMA'], defval='SMA')
sslLen = input(title='SSL Length', defval=32)
showCross = input(title='Show Crossover?', defval=true)
showEntry = input(title='Show Entry?', defval=true)
showTrend = input(title='Show Trend Colors?', defval=true)

// Calc MA for SSL Channel
calc_ma(close, len, type) =>
    float result = 0
    if type == 'SMA'  // Simple
        result := ta.sma(close, len)
        result
    if type == 'EMA'  // Exponential
        result := ta.ema(close, len)
        result
    if type == 'WMA'  // Weighted
        result := ta.wma(close, len)
        result    
    result

// Add SSL Channel
maHigh = calc_ma(high, sslLen, maType)
maLow = calc_ma(low, sslLen, maType)
Hlv = int(na)
Hlv := close > maHigh ? 1 : close < maLow ? -1 : Hlv[1]
sslDown = Hlv < 0 ? maHigh : maLow
sslUp = Hlv < 0 ? maLow : maHigh
ss1 = plot(sslDown, title='Down SSL', linewidth=2, color=showTrend ? na : color.red)
ss2 = plot(sslUp, title='Up SSL', linewidth=2, color=showTrend ? na : color.lime)

// Conditions
longCondition = ta.crossover(sslUp, sslDown)
shortCondition = ta.crossover(sslDown, sslUp)

// Strategy
if shortCondition
    strategy.close('Long', comment='Long Exit', alert_message='JSON')

if longCondition
    strategy.close('Short', comment='Short Exit', alert_message='JSON')

if backtest_range and longCondition
    strategy.entry('Long', strategy.long, comment='Long Entry', alert_message='JSON')

if backtest_range and shortCondition
    strategy.entry('Short', strategy.short, comment= 'Short Entry', alert_message='JSON')


// Plots
fill(ss1, ss2, color=showTrend ? sslDown < sslUp ? color.new(color.lime, transp=75) : color.new(color.red, transp=75) : na, title='Trend Colors')


Lebih lanjut