Strategi silang purata bergerak berganda

Penulis:ChaoZhang, Tarikh: 2023-11-22 16:10:21
Tag:

img

Ringkasan

Ini adalah strategi perdagangan kuantitatif yang mudah berdasarkan penunjuk purata bergerak. Ia menggunakan salib emas dan salib kematian purata bergerak pantas dan perlahan untuk menentukan isyarat masuk dan keluar. Apabila MA pantas melintasi di atas MA perlahan dari bawah, isyarat beli dihasilkan. Apabila MA pantas melintasi di bawah MA perlahan dari atas, isyarat jual dihasilkan.

Logika Strategi

Strategi ini terutamanya memanfaatkan keupayaan pengesanan trend purata bergerak. MA pantas mempunyai parameter yang lebih kecil dan dapat bertindak balas dengan cepat terhadap perubahan harga, sementara MA perlahan mempunyai parameter yang lebih besar dan mewakili trend jangka panjang. MA cepat melintasi di atas MA perlahan menandakan pembalikan pergerakan jangka pendek dan permulaan trend menaik. MA cepat melintasi di bawah MA perlahan menandakan pembalikan ke arah trend menurun. Dengan menangkap isyarat ini, kita boleh berdagang bersama momentum.

Secara khusus, strategi ini menentukan purata bergerak berganda 5 hari (cepat) dan 34 hari (lambat). Ia mengira kedua-dua MA ini setiap hari dan memeriksa sama ada MA cepat melintasi di atas atau di bawah MA perlahan. Jika salib emas berlaku, ia pergi lama. Jika salib kematian berlaku, ia keluar kedudukan.

Analisis Kelebihan

Ini adalah strategi yang mudah dan mudah difahami, sesuai untuk pemula perdagangan kuant.

Strategi MA berganda dapat menapis bunyi bising pasaran dengan berkesan dan menangkap trend utama. Dengan menyesuaikan parameter hari MA, ia dapat menyesuaikan diri dengan turun naik harga dalam jangka masa yang berbeza.

Ia juga mempunyai mekanisme stop loss terbina dalam. Apabila harga mula membalikkan arah dan persilangan kematian MA berlaku, ia akan keluar dari kedudukan tepat pada masanya untuk mengawal risiko.

Analisis Risiko

Strategi MA berganda mempunyai risiko seperti kegagalan kehilangan berhenti atau kegagalan pemasangan lengkung.

  1. MAs mempunyai kesan kelewatan dan mungkin menghasilkan isyarat hanya selepas trend telah berbalik.

  2. Dalam pasaran yang berbeza, terdapat banyak isyarat palsu, menyebabkan perdagangan yang tidak perlu, peningkatan kos dan seluncur.

  3. Ia hanya bergantung kepada penunjuk teknikal tanpa menggabungkan analisis asas. Ia mungkin berprestasi buruk semasa peristiwa yang mendorong pergerakan pasaran.

  4. Ia tidak mengambil kira saiz kedudukan dan pengurusan risiko. Satu peristiwa black swan boleh menyebabkan strategi meletup.

Arahan pengoptimuman

Untuk meningkatkan kekuatan dan mengurangkan risiko, pengoptimuman boleh dilakukan dengan cara berikut:

  1. Tambah penunjuk trend seperti MACD dan penunjuk turun naik seperti KDJ untuk menetapkan peraturan kemasukan yang lebih ketat dan menapis isyarat palsu.

  2. Menggabungkan mekanisme stop loss yang sesuai, seperti keluar selepas harga jatuh peratusan tertentu selepas salib emas, atau selepas harga jatuh julat yang ditetapkan dari paras tertinggi / rendah baru.

  3. Mengoptimumkan kombinasi hari MA yang cepat dan perlahan untuk menyesuaikan diri dengan perubahan harga dalam jangka masa yang berbeza. pengoptimuman parameter dapat mencari parameter terbaik.

  4. Rujukan indeks pasaran yang luas untuk menentukan rejim pasaran secara keseluruhan dan mengelakkan perdagangan berlebihan di pasaran yang berbeza.

  5. Menggabungkan perubahan jumlah dagangan untuk mengesahkan kebolehpercayaan isyarat trend.

Kesimpulan

Strategi crossover purata bergerak berganda adalah strategi perdagangan kuantitatif yang sangat tipikal. Ia mempunyai kelebihan seperti kesederhanaan, intuitif dan kemudahan pelaksanaan. Dengan ujian berterusan dan penyesuaian parameter, ia boleh menghasilkan hasil yang baik. Walau bagaimanapun, isu-isu seperti pengenalan isyarat ketinggalan dan isyarat palsu wujud. Penapis tambahan dan mekanisme pengurusan risiko perlu dimasukkan untuk menjadikannya strategi menghasilkan keuntungan yang stabil.


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

//@version=2
////////////////////////////////////////////////////////////
// This strategy is a modification to the "Bill Williams, Awesome Oscillator
// (AO) Backtest" strategy (Copyright by HPotter v1.0 29/12/2016)
//
// This version of the strategy by Midnight Mouse. 10/4/2018
//
// DESCRIPTION
//
// This indicator plots the oscillator as a column where periods fit for buying
// are marked as green, and periods fit for selling as orange/brown. If the
// current value of AO (Awesome Oscillator) is > the previous, the period is
// deemed fit for buying and the indicator is marked green. If the AO values is
// not over the previous, the period is deemed fit for selling and the indicator 
// is marked orange/brown.
//
// You can change long to short in the Input Settings
//
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////

strategy("Awesome Oscillator.MMouse_Lager_BCE")

// === SETTINGS ===

// Strategy start date
FromMonth   = input(defval = 1,    title = "From Month", minval = 1)
FromDay     = input(defval = 1,    title = "From Day",   minval = 1)
FromYear    = input(defval = 2017, title = "From Year",  minval = 2014)

// Strategy settings
nLengthSlow = input(34, minval=1,  title="Length Slow")
nLengthFast = input(5,  minval=1,  title="Length Fast")
allowShorts = input(false,         title="Include Short Trades")
reverse     = input(false,         title="Trade reverse")


// === BODY ===

// Use Heikin-Ashi candles for the buy/sell signal
ha_t        = heikinashi(syminfo.tickerid)
ha_high     = security(ha_t, timeframe.period, high)
ha_low      = security(ha_t, timeframe.period, low)
length      = input( 14 )
price       = open
vrsi        = rsi(price, length)

// Calc (H+L)/2 for each length
xSMA1_hl2   = sma((ha_high + ha_low)/2, nLengthFast)
xSMA2_hl2   = sma((ha_high + ha_low)/2, nLengthSlow)

// Get SMA difference (Fast - Slow)
xSMA1_SMA2  = xSMA1_hl2 - xSMA2_hl2

// Derive the color of the column
cClr = xSMA1_SMA2 > xSMA1_SMA2[1] ? #93c47d : #ad5e1d

// Determine the position to take (Long vs. Short)
pos = iff(xSMA1_SMA2 > xSMA1_SMA2[1],  1, iff(xSMA1_SMA2 < xSMA1_SMA2[1], -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1, iff(reverse and pos == -1, 1, pos))

// Only apply strategy from the start date
if (time >= timestamp(FromYear, FromMonth, FromDay, 00, 00))
    if (possig == 1)
        // Market is currently fit for a Long position
        strategy.entry("Long", strategy.long)

    if (possig == -1)
        // Market is currently fit for a Short position
        if(allowShorts)
            // Shorts are allowed. Record a Short position
            strategy.entry("Short", strategy.short)	   	    
        else
            // Shorts are not allowed. Closec the Long position.
            strategy.close("Long")

// Define the candle colors
//barcolor(possig == -1 ? red : 
//         possig ==  1 ? green : 
//         blue )

// Plot the oscillator
plot(xSMA1_SMA2, style=columns, linewidth=1, color=cClr)

Lebih lanjut