Strategi Crossover Rata-rata Bergerak Ganda

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

img

Gambaran umum

Ini adalah strategi perdagangan kuantitatif sederhana berdasarkan indikator rata-rata bergerak. Ini menggunakan salib emas dan salib kematian rata-rata bergerak cepat dan lambat untuk menentukan sinyal masuk dan keluar. Ketika MA cepat melintasi di atas MA lambat dari bawah, sinyal beli dihasilkan. Ketika MA cepat melintasi di bawah MA lambat dari atas, sinyal jual dihasilkan.

Logika Strategi

Strategi ini terutama memanfaatkan kemampuan pelacakan tren rata-rata bergerak. MA cepat memiliki parameter yang lebih kecil dan dapat dengan cepat merespons perubahan harga, sementara MA lambat memiliki parameter yang lebih besar dan mewakili tren jangka panjang. MA cepat melintasi di atas MA lambat menandakan pembalikan dalam pergerakan jangka pendek dan awal tren naik. MA cepat melintasi di bawah MA lambat menandakan pembalikan ke tren turun. Dengan menangkap sinyal ini, kita dapat berdagang bersama momentum.

Secara khusus, strategi ini mendefinisikan rata-rata bergerak ganda 5 hari (cepat) dan 34 hari (lambat). Ini menghitung dua MA ini setiap hari dan memeriksa apakah MA cepat melintasi di atas atau di bawah MA lambat. Jika sebuah salib emas terjadi, itu pergi panjang. Jika sebuah salib kematian terjadi, itu keluar posisi.

Analisis Keuntungan

Ini adalah strategi yang sederhana dan mudah dimengerti, cocok untuk pemula perdagangan kuantitatif.

Strategi MA ganda dapat menyaring kebisingan pasar secara efektif dan menangkap tren utama.

Ini juga memiliki mekanisme stop loss built-in. Ketika harga mulai membalikkan arah dan MAs death cross terjadi, itu akan keluar posisi tepat waktu untuk mengendalikan risiko.

Analisis Risiko

Strategi dual MA memiliki risiko seperti kegagalan stop loss atau kegagalan penyesuaian kurva.

  1. MAs memiliki efek keterlambatan dan dapat menghasilkan sinyal hanya setelah tren telah berbalik.

  2. Di pasar yang berbeda, dapat ada banyak sinyal palsu, menyebabkan perdagangan yang tidak perlu, peningkatan biaya dan slippage.

  3. Hal ini hanya mengandalkan indikator teknis tanpa menggabungkan analisis fundamental.

  4. Ini tidak mempertimbangkan ukuran posisi dan manajemen risiko.

Arahan Optimasi

Untuk memanfaatkan lebih baik kekuatan dan mengurangi risiko, optimasi dapat dilakukan dengan cara berikut:

  1. Tambahkan indikator tren seperti MACD dan indikator volatilitas seperti KDJ untuk menetapkan aturan masuk yang lebih ketat dan menyaring sinyal palsu.

  2. Masukkan mekanisme stop loss yang tepat, seperti keluar setelah harga turun persentase tertentu setelah golden cross, atau setelah harga turun kisaran yang ditetapkan dari tertinggi / terendah baru.

  3. Mengoptimalkan kombinasi hari MA cepat dan lambat untuk beradaptasi dengan perubahan harga di berbagai kerangka waktu.

  4. Referensi indeks pasar luas untuk menentukan sistem pasar secara keseluruhan dan menghindari overtrading di berbagai pasar.

  5. Masukkan perubahan volume perdagangan untuk memverifikasi keandalan sinyal tren.

Kesimpulan

Strategi crossover rata-rata bergerak ganda adalah strategi perdagangan kuantitatif yang sangat khas. Ini memiliki pro seperti kesederhanaan, intuitif dan kemudahan implementasi. Dengan pengujian berkelanjutan dan penyesuaian parameter, ini dapat menghasilkan hasil yang layak. Namun, masalah seperti identifikasi sinyal tertinggal dan sinyal palsu ada. Filter tambahan dan mekanisme manajemen 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 banyak