Strategi silang purata bergerak yang dioptimumkan

Penulis:ChaoZhang, Tarikh: 2024-02-04 10:31:45
Tag:

img

Ringkasan

Strategi ini berdasarkan crossover purata bergerak biasa tetapi beberapa pengubahsuaian telah dibuat untuk menjana isyarat perdagangan yang lebih tepat.

Logika Strategi

Apabila purata bergerak pantas melintasi di atas purata bergerak perlahan dari bawah ke atas, ia dianggap sebagai isyarat beli. Apabila purata bergerak pantas melintasi ke bawah purata bergerak perlahan dari atas ke bawah, ia dianggap sebagai isyarat jual. iaitu, salib emas untuk panjang, salib kematian untuk pendek. Setelah kedudukan panjang / pendek diambil, stop loss akan ditetapkan untuk mengelakkan kerugian besar.

Kuncinya terletak pada pemilihan purata bergerak pantas dan perlahan. Strategi ini mengamalkan purata bergerak eksponen tempoh 50 & 100 sebagai garis pantas dan perlahan masing-masing. Kesan strategi boleh dioptimumkan dengan menyesuaikan parameter MA.

Analisis Kelebihan

Strategi ini mengenal pasti arah trend dengan menggabungkan purata bergerak berganda, yang dapat menapis bunyi pasaran dengan berkesan. Berbanding dengan strategi MA tunggal, ia dapat meningkatkan kebarangkalian keuntungan. Di samping itu, tetapan stop loss juga mengehadkan kerugian perdagangan individu.

Dengan memanfaatkan peraturan silang untuk menentukan titik perubahan, strategi ini dapat menangkap peluang trend dengan tepat pada masanya.

Analisis Risiko

Terdapat tiga risiko utama untuk strategi ini: risiko parameter MA yang tidak sesuai, risiko tempoh pegangan yang tidak tepat dan risiko kedudukan stop loss yang tidak munasabah.

  • Pemilihan parameter MA yang tidak betul akan membawa kepada isyarat palsu. panjang MA yang terlalu pendek atau terlalu panjang akan salah menilai pasaran, jadi penyesuaian yang betul mengikut ciri instrumen diperlukan.

  • Sama ada tempoh penahan yang terlalu lama atau terlalu pendek tidak dapat memaksimumkan keuntungan atau mengawal risiko dengan betul.

  • Penetapan kedudukan stop loss yang tidak munasabah akan membawa kepada stop loss yang terlalu luas atau terlalu sempit, jadi stop loss yang sesuai berdasarkan volatiliti instrumen harus ditentukan.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dari aspek berikut:

  • Uji lebih banyak kombinasi parameter MA untuk mencari parameter optimum

  • Menentukan kedudukan stop loss dinamik berdasarkan turun naik harga atau ATR N hari kebelakangan ini

  • Gabungkan lebih banyak penunjuk seperti MACD, KD dll untuk menentukan masa kemasukan

  • Tambah peraturan penapisan trend untuk mengelakkan pasaran terikat julat

  • Mempertimbangkan untuk menerapkan strategi kepada lebih banyak instrumen, atau meningkatkannya kepada strategi lintas instrumen

Ringkasan

Strategi crossover purata bergerak yang dioptimumkan ini mengintegrasikan kelebihan MA berganda dalam menilai arah trend dan menetapkan stop loss untuk mengawal risiko. Ia tergolong dalam strategi trend berikut yang mudah dilaksanakan. Strategi ini dapat ditingkatkan lagi dalam kestabilan dan kecekapan melalui pengoptimuman parameter, pengoptimuman kehilangan berhenti, penapisan isyarat dll. Berbanding dengan strategi yang kompleks, ia lebih mudah difahami dan dilaksanakan, dan oleh itu sangat sesuai untuk menjadi strategi perdagangan kuant pertama untuk pemula.


/*backtest
start: 2024-01-27 00:00:00
end: 2024-02-03 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ashishchauhan
strategy(title="MA CO Strategy Test", overlay=true, pyramiding=0, initial_capital=100000)

fastEMALen = input(title="Fast EMA Length", type=input.integer, defval=50)
slowEMALen = input(title="Slow EMA Length", type=input.integer, defval=100)

fastEMA = ema(close, fastEMALen)
slowEMA = ema(close, slowEMALen)

enterLong = crossover(fastEMA, slowEMA)
enterShort = crossunder(fastEMA, slowEMA)

longStop = 0.0
longStop := enterShort ? close : longStop[1]

shortStop = 0.0
shortStop := enterLong ? close : shortStop[1]

plot(series=fastEMA, color=color.orange, title="Fast EMA")
plot(series=slowEMA, color=color.teal, linewidth=3, title="Slow EMA")

if enterLong
    strategy.entry(id="GoLong", long=true)

if enterShort
    strategy.entry(id="GoShort", long=false)

if strategy.position_size > 0
    strategy.exit(id="ExLong", from_entry="GoLong", stop=longStop)

if strategy.position_size < 0
    strategy.exit(id="ExShort", from_entry="GoShort", stop=shortStop)

strategy.close_all()


Lebih lanjut