Strategi Dagangan Pullback Purata Bergerak Berbilang Jangka Masa

Penulis:ChaoZhang, Tarikh: 2024-02-29 11:20:28
Tag:

img

Ringkasan

Strategi ini menggunakan pendekatan purata bergerak pelbagai jangka masa, menggunakan purata bergerak jangka panjang untuk menentukan arah trend utama sementara purata bergerak jangka pendek untuk menentukan arah trend jangka pendek. Apabila trend jangka panjang sejajar dengan trend jangka pendek, kedudukan diambil dengan sewajarnya. Apabila purata bergerak jangka pendek menarik kembali ke kawasan sekitar purata bergerak jangka panjang, ia menunjukkan pembetulan jangka pendek yang membentangkan peluang perdagangan untuk arah terbalik. Strategi ini berfungsi dengan baik untuk saham yang sedang berkembang dalam jangka masa sederhana hingga panjang.

Logika Strategi

Strategi ini menggunakan purata bergerak mudah 200 hari (SMA) untuk menentukan hala tuju trend jangka panjang, dan SMA 10 hari untuk hala tuju trend jangka pendek. Apabila harga ditutup di atas SMA 200 hari dan di bawah SMA 10 hari, ia menandakan trend jangka panjang menaik dengan pulback jangka pendek, memberikan peluang pembelian. Apabila harga ditutup di bawah SMA 200 hari dan di atas SMA 10 hari, ia menandakan trend jangka panjang menurun dengan lompatan jangka pendek, memberikan peluang penjualan.

Khususnya, apabila syarat-syarat berikut dipenuhi, masuk panjang dicetuskan: Tutup > SMA 200 hari DAN Tutup < SMA 10 hari. Apabila syarat-syarat berikut dipenuhi, masuk pendek dicetuskan: Tutup < SMA 200 hari DAN Tutup > SMA 10 hari.

Selepas masuk, mekanisme stop loss 10% dilaksanakan. Posisi akan dihentikan jika retracement daripada harga masuk melebihi 10%. Juga, jika pilihan i_lowerClose diaktifkan, ia akan menunggu penutupan yang lebih rendah sebelum keluar, mengelakkan sensitiviti stop loss yang berlebihan.

Analisis Kelebihan

Strategi ini menggabungkan purata bergerak pelbagai jangka masa, membolehkan kebarangkalian tinggi dalam menangkap arah trend jangka menengah hingga panjang. Ia menyediakan masa kemasukan yang baik apabila SMA jangka pendek menarik kembali ke SMA jangka panjang. Berbanding dengan sistem purata bergerak tunggal, kebarangkalian terjebak dalam pembetulan jangka pendek berkurangan.

Risiko yang terlibat dalam strategi ini ditakrifkan dengan baik dan dibatasi. Nisbah stop loss 10% mengehadkan saiz kerugian maksimum. Juga penapis julat masa mengelakkan perdagangan dalam tempoh masa yang ditentukan.

Analisis Risiko

Masih ada risiko terperangkap dalam strategi ini. Jika pembetulan jangka pendek berlangsung terlalu lama atau amplitud pulback terlalu besar, stop loss boleh dicetuskan yang mengakibatkan keluar paksa pada masa yang tidak sesuai. Ini memperkenalkan risiko kerugian.

Adaptifiti strategi ini di seluruh instrumen dagangan adalah terhad. untuk saham dengan turun naik yang tinggi dan tempoh pembetulan yang berpanjangan, strategi ini cenderung untuk memukul stop loss lebih awal menghasilkan prestasi yang lemah.

Semasa pembetulan pasaran yang besar, contohnya krisis kewangan, strategi ini boleh mengalami kerugian besar.

Arahan pengoptimuman

Lebih banyak sistem purata bergerak boleh diperkenalkan untuk membentuk mekanisme penapisan berganda. Sebagai contoh, menambah SMA 50 hari, kedudukan kemasukan hanya dipertimbangkan apabila harga berada di antara SMA 50 hari dan SMA 200 hari. Ini tambahan menapis saham dengan ciri trend yang lebih rendah.

Mekanisme stop loss dinamik boleh dilaksanakan. Khususnya, selepas masuk, nisbah stop loss diselaraskan berdasarkan turun naik yang diperhatikan dan bukannya 10% tetap.

Indikator lain yang mengukur keadaan pasaran juga boleh dimasukkan. Sebagai contoh MACD, apabila MACD menunjukkan perbezaan pasaran, strategi ini boleh dinonaktifkan sementara untuk mengelakkan kerugian. Ia menambah mekanisme masa pasaran untuk menghidupkan dan mematikan strategi.

Kesimpulan

Kesimpulannya, ini adalah strategi purata bergerak pelbagai jangka masa yang tipikal. Ia memanfaatkan arah trend jangka menengah dan panjang yang ditunjukkan oleh purata bergerak jangka panjang, sambil mengambil kesempatan daripada peluang mundur jangka pendek yang didedahkan oleh purata bergerak jangka pendek. Faktor risiko ditakrifkan dan ditutup dengan baik. Peningkatan lanjut seperti penapis tambahan, kerugian berhenti adaptif dan mekanisme masa pasaran dapat meningkatkan kestabihannya.


/*backtest
start: 2024-01-29 00:00:00
end: 2024-02-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Scriptâ„¢ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © irfanp056
// @version=5

strategy("Simple Pullback Strategy", 
     overlay=true) // Interactive Brokers rate

// Get user input
i_ma1           = input.int(title="MA 1 Length", defval=200, step=10, group="Strategy Parameters", tooltip="Long-term MA")
i_ma2           = input.int(title="MA 2 Length", defval=10, step=10, group="Strategy Parameters", tooltip="Short-term MA")
i_stopPercent   = input.float(title="Stop Loss Percent", defval=0.10, step=0.1, group="Strategy Parameters", tooltip="Failsafe Stop Loss Percent Decline")
i_lowerClose    = input.bool(title="Exit On Lower Close", defval=false, group="Strategy Parameters", tooltip="Wait for a lower-close before exiting above MA2")
i_startTime     = input(title="Start Filter", defval=timestamp("01 Jan 1995 13:30 +0000"), group="Time Filter", tooltip="Start date & time to begin searching for setups")
i_endTime       = input(title="End Filter", defval=timestamp("1 Jan 2099 19:30 +0000"), group="Time Filter", tooltip="End date & time to stop searching for setups")

// Get indicator values
ma1 = ta.sma(close, i_ma1)
ma2 = ta.sma(close, i_ma2)

// Check filter(s)
f_dateFilter = true

// Check buy/sell conditions
var float buyPrice = 0
buyCondition    = close > ma1 and close < ma2 and strategy.position_size == 0 and f_dateFilter
sellCondition   = close > ma2 and strategy.position_size > 0 and (not i_lowerClose or close < low[1])
stopDistance    = strategy.position_size > 0 ? ((buyPrice - close) / close) : na
stopPrice       = strategy.position_size > 0 ? buyPrice - (buyPrice * i_stopPercent) : na
stopCondition   = strategy.position_size > 0 and stopDistance > i_stopPercent

// Enter positions
if buyCondition
    strategy.entry(id="Long", direction=strategy.long)

if buyCondition[1]
    buyPrice := open

// Exit positions
if sellCondition or stopCondition
    strategy.close(id="Long", comment="Exit" + (stopCondition ? "SL=true" : ""))
    buyPrice := na

// Draw pretty colors
plot(buyPrice, color=color.lime, style=plot.style_linebr)
plot(stopPrice, color=color.red, style=plot.style_linebr, offset=-1)
plot(ma1, color=color.blue)
plot(ma2, color=color.orange)

Lebih lanjut