Strategi Crossover Purata Pergerakan Berganda


Tarikh penciptaan: 2023-11-22 16:10:21 Akhirnya diubah suai: 2023-11-22 16:10:21
Salin: 0 Bilangan klik: 609
1
fokus pada
1621
Pengikut

Strategi Crossover Purata Pergerakan Berganda

Gambaran keseluruhan

Ini adalah strategi perdagangan kuantitatif yang mudah berdasarkan indikator garis rata. Ia menggunakan garpu emas garpu emas untuk menentukan masa pembelian dan penjualan. Ia menghasilkan isyarat beli apabila garpu cepat menembusi garpu lambat dari arah bawah; ia menghasilkan isyarat jual apabila garpu cepat menembusi garpu lambat dari arah atas.

Prinsip Strategi

Strategi ini adalah berdasarkan pada trend trend yang sama. Parameter garis cepat kecil, dapat bertindak balas dengan cepat terhadap perubahan harga; Parameter garis perlahan besar, mewakili trend jangka panjang.

Khususnya, strategi ini mentakrifkan dua garis rata-rata pada hari ke-5 (gambaran cepat) dan ke-34 (gambaran perlahan). Nilai kedua-dua garis rata-rata ini dikira setiap hari, dan bandingkan sama ada garis cepat menembusi garis perlahan dari arah bawah.

Analisis kelebihan

Strategi ini mudah difahami dan mudah dilaksanakan. Ia lebih sesuai untuk pemula dalam perdagangan kuantitatif berbanding dengan strategi lain yang lebih rumit.

Strategi dua garis rata-rata dapat menyaring bunyi pasaran dengan berkesan dan menangkap trend utama. Dengan menyesuaikan parameter harian garis rata-rata perlahan-lahan, ia dapat menyesuaikan diri dengan perubahan keadaan pasaran dalam kitaran yang berbeza.

Strategi ini juga mempunyai mekanisme terhad untuk menghentikan kerugian. Apabila harga mula berbalik, ia akan menghentikan kerugian tepat pada masanya untuk mengawal risiko.

Analisis risiko

Strategi dua garis sejajar mungkin mempunyai risiko seperti tidak dapat menghentikan kerugian, kegagalan menyesuaikan kurva. Secara khusus, masalah utama adalah:

  1. Garis purata mempunyai keterlambatan, mungkin berlaku apabila isyarat dikeluarkan hanya selepas pengaturcaraan sepenuhnya. Pada masa ini keuntungan telah berubah menjadi kerugian.

  2. Dalam keadaan yang bergolak, beberapa isyarat palsu mungkin muncul. Ini akan menyebabkan terlalu banyak transaksi yang tidak perlu, meningkatkan kos transaksi dan kehilangan slippage.

  3. Strategi ini bergantung sepenuhnya kepada indikator teknikal dan tidak digabungkan dengan analisis asas. Ia mungkin kurang berkesan dalam situasi yang didorong oleh berita besar.

  4. Tidak mempertimbangkan pengurusan lokasi dan kawalan risiko. Satu kejadian yang tidak dijangka boleh menyebabkan strategi terganggu.

Arah pengoptimuman

Untuk memanfaatkan lebih baik kelebihan strategi ini dan mengurangkan risiko, ia boleh dioptimumkan dalam beberapa aspek berikut:

  1. Gabungan penunjuk trend dan penunjuk turun naik, menetapkan syarat kemasukan yang lebih ketat, menapis isyarat palsu. Sebagai contoh, penunjuk MACD atau KDJ.

  2. Menambah mekanisme hentian yang sesuai. Jika turun sebilangan besar selepas garpu emas, hentikan. Atau turun sebilangan besar selepas membentuk titik tinggi baru.

  3. Mengoptimumkan kombinasi parameter harian rata-rata laju, menyesuaikan diri dengan perubahan harga kitaran yang berbeza. Anda boleh mengoptimumkan kombinasi parameter untuk mencari parameter terbaik.

  4. Anda boleh menilai pergerakan pasaran secara keseluruhan berdasarkan indeks pasaran besar, dan mengelakkan perdagangan frekuensi tinggi dalam keadaan yang bergolak.

  5. Menggabungkan perubahan jumlah dagangan untuk mengesahkan kebolehpercayaan isyarat trend. Sebagai contoh, kenaikan mestilah mempunyai syarat untuk memecahkan berat badan.

ringkaskan

Strategi dua garis sejajar adalah strategi perdagangan kuantitatif yang sangat tipikal. Ia mempunyai ciri-ciri yang mudah, intuitif, dan mudah dilaksanakan, sangat sesuai untuk pemula perdagangan kuantitatif untuk belajar dan menguasai. Dengan terus menguji dan mengoptimumkan parameter, hasil yang lebih baik dapat diperoleh. Tetapi strategi ini juga mempunyai beberapa masalah, seperti pengenalan isyarat yang terlewat, mudah menghasilkan isyarat palsu, dan sebagainya.

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