Strategi pembalikan crossover purata bergerak berganda

Penulis:ChaoZhang, Tarikh: 2023-12-01 16:56:43
Tag:

img

Ringkasan

Strategi pembalikan silang purata bergerak berganda adalah strategi perdagangan kuantitatif biasa yang menjejaki trend. Strategi ini menggunakan isyarat silang dari garis 9 hari dan garis 14 hari dalam penunjuk purata bergerak berganda untuk membina isyarat beli dan jual. Ia membeli apabila garis 9 hari menembusi garis 14 hari dari bawah untuk membentuk salib emas, dan menjual apabila garis 9 hari menembusi garis 14 hari dari atas untuk membentuk salib kematian. Untuk menapis isyarat palsu, strategi ini juga memperkenalkan penunjuk garis 50 hari untuk menentukan sama ada harga menembusi.

Prinsip Strategi

Strategi ini terutamanya berdagang berdasarkan isyarat salib emas dan salib kematian dari penunjuk purata bergerak berganda. Dalam purata bergerak berganda, garis 9 hari mewakili trend jangka pendek, garis 14 hari mewakili trend jangka sederhana, dan persilangan mereka adalah penunjuk teknikal yang berkesan untuk menilai perubahan dalam trend pasaran. Apabila garis trend jangka pendek menembusi garis trend jangka sederhana dari bawah untuk membentuk salib emas, ia menunjukkan garis trend jangka pendek menguat, yang merupakan isyarat beli; apabila ia menembusi dari atas untuk membentuk salib kematian, ia menunjukkan garis trend jangka pendek melemah, yang merupakan isyarat jual.

Di samping itu, strategi ini juga memperkenalkan garis 50 hari untuk menapis isyarat yang mengelirukan. Ia hanya menghasilkan pembelian apabila harga berada di atas garis 50 hari; dan hanya menghasilkan jual apabila harga berada di bawah garis 50 hari. Baris 50 hari mewakili trend jangka menengah hingga panjang. Hanya apabila trend jangka menengah hingga panjang bersetuju, operasi jangka pendek dijalankan.

Logika teras adalah seperti berikut:

// Buy condition: 9-day line crosses above 14-day line and close price is above 50-day line 
buyCondition = ta.crossover(sma9, sma14) and close > sma50 

// Sell condition: 9-day line crosses below 14-day line and close price is below 50-day line
sellCondition = ta.crossunder(sma9, sma14) and close < sma50

Analisis Kelebihan

Kelebihan strategi purata bergerak berganda adalah jelas:

  1. Mudah difahami dan dilaksanakan, sesuai untuk pemula belajar.
  2. Ikut trend, jangan terperangkap dalam pasaran yang terhad.
  3. Gunakan penunjuk jangka sederhana hingga panjang untuk menapis isyarat yang mengelirukan dan mengelakkan tertipu oleh bunyi pasaran jangka pendek.
  4. Boleh mengesan pasaran trend dan keuntungan cekap untuk jangka masa yang panjang.

Analisis Risiko

Strategi purata bergerak berganda juga mempunyai beberapa risiko:

  1. Dalam keadaan pasaran yang melampau seperti kejatuhan pasaran, terdapat penurunan besar sebelum bentuk salib kematian. Strategi akan memegang kedudukan kehilangan besar sehingga salib kematian memicu berhenti.
  2. Dalam pasaran yang berbeza, salib emas dan salib kematian bergantian, berulang kali membuka dan menghentikan kedudukan. Ini menghasilkan peningkatan kos transaksi.

Untuk menangani risiko, pengoptimuman seperti di bawah boleh dibuat:

  1. Memperkenalkan penunjuk lain untuk mengurangkan kerugian dengan cepat dalam keadaan pasaran yang runtuh.
  2. Tambah lebih banyak penapis pembukaan untuk mengelakkan persilangan bergantian di pasaran yang berbeza.

Arahan pengoptimuman

Strategi purata bergerak berganda boleh dioptimumkan dalam beberapa aspek:

  1. Mengoptimumkan parameter, menyesuaikan tempoh purata bergerak, mengoptimumkan parameter penunjuk.
  2. Lebih banyak penapis isyarat pembukaan, memasukkan lebih banyak penunjuk untuk menilai keadaan pasaran dan mengelakkan isyarat palsu.
  3. Memperkenalkan mekanisme stop loss, menggunakan stop loss bergerak, penetration stop loss dan kaedah berhenti lain.
  4. Gabungkan dengan strategi perdagangan lain seperti strategi jumlah dan turun naik.
  5. Menggunakan levera yang sesuai untuk meningkatkan kecekapan operasi.

Ringkasan

Strategi purata bergerak berganda umumnya merupakan strategi menghasilkan keuntungan yang cekap. Ia boleh mendapat keuntungan dengan mengikuti trend secara berterusan. Pada masa yang sama, ia mempunyai risiko tertentu dan memerlukan penambahbaikan lanjut. Dengan mengoptimumkan parameter, kaedah berhenti dan kombinasi strategi, kesan strategi ini dapat ditingkatkan lagi.


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

//@version=5
strategy("smaCrossReverse", shorttitle="smaCrossReverse", overlay=true)

// Define the length for the SMAs
sma9Length = input(9, title="SMA 9 Length")
sma14Length = input(14, title="SMA 14 Length")
sma50Length = input(50, title="SMA 50 Length")  // Add input for SMA 50

// Calculate SMAs
sma9 = ta.sma(close, sma9Length)
sma14 = ta.sma(close, sma14Length)
sma50 = ta.sma(close, sma50Length)  // Calculate SMA 50

// Buy condition: SMA 9 crosses above SMA 14 and current price is above SMA 50
buyCondition = ta.crossover(sma9, sma14) and close > sma50

// Sell condition: SMA 9 crosses below SMA 14 and current price is below SMA 50
sellCondition = ta.crossunder(sma9, sma14) and close < sma50

// Track the time since position was opened
var float timeElapsed = na
if (buyCondition)
    timeElapsed := 0
else
    timeElapsed := na(timeElapsed[1]) ? timeElapsed[1] : timeElapsed[1] + 1

// Close the buy position after 5 minutes
if (timeElapsed >= 5)
    strategy.close("Buy")

// Track the time since position was opened
var float timeElapsedSell = na
if (sellCondition)
    timeElapsedSell := 0
else
    timeElapsedSell := na(timeElapsedSell[1]) ? timeElapsedSell[1] : timeElapsedSell[1] + 1

// Close the sell position after 5 minutes
if (timeElapsedSell >= 5)
    strategy.close("Sell")

// Plot the SMAs on the chart
plot(sma9, title="SMA 9", color=color.blue)
plot(sma14, title="SMA 14", color=color.red)
plot(sma50, title="SMA 50", color=color.green)  // Plot SMA 50 on the chart

// Strategy entry and exit conditions using if statements
if (buyCondition)
    strategy.entry("Buy", strategy.long)

if (sellCondition)
    strategy.entry("Sell", strategy.short)


Lebih lanjut