Strategi Trend Berasaskan Purata Bergerak Berbilang Jangka Masa dan EMA

Penulis:ChaoZhang, Tarikh: 2024-02-21 15:59:43
Tag:

img

Ringkasan

Strategi ini menggunakan purata bergerak (MA) dan EMA merentasi jangka masa yang berbeza untuk mengenal pasti dan memperdagangkan trend. Dengan menggabungkan SMA, EMA dari pelbagai tempoh, serta badan candlestick, ia dapat menapis bunyi bising pasaran dengan berkesan dan memperdagangkan trend pertengahan hingga jangka panjang dengan risiko rendah.

Logika Strategi

Idea terasnya adalah berdasarkan perbandingan 3 SMA dari tempoh yang berbeza untuk menentukan momentum harga.

Secara khusus, strategi ini menggunakan 3 SMA - 3-, 8-, dan 10-period SMA. Apabila harga berada di bawah semua 3 SMA, ia dianggap downtrend. Isyarat panjang dipicu apabila harga melintasi semula di atas SMA.

Juga, EMA 5 tempoh memeriksa sama ada badan lilin menunjuk ke atas sebelum memasuki perdagangan panjang.

Untuk peraturan keluar, jumlah maksimum penutupan yang menguntungkan atau tempoh maksimum digunakan sebagai mekanisme stop loss.

Analisis Kelebihan

Dengan menggabungkan MAs dari pelbagai kerangka masa, strategi ini dapat menapis bunyi bising pasaran dengan berkesan dan menangkap trend jangka menengah hingga jangka panjang. Parameter yang dioptimumkan membolehkan prestasi yang baik dalam backtest sejarah.

Menggunakan EMA untuk memeriksa hala tuju badan lilin mengurangkan tergelincir yang tidak perlu daripada membeli lilin yang jatuh.

Secara keseluruhannya ini adalah sistem yang stabil dan boleh dipercayai yang sesuai untuk mengikuti trend selama minggu hingga bulan.

Risiko dan Pengurangan

  • Strategi ini sensitif terhadap parameter. Pilihan suboptimal 3 tempoh SMA atau 1 EMA boleh merosot kualiti isyarat. Parameter perlu dioptimumkan untuk instrumen yang berbeza.

  • Risiko jurang tidak ditangani. berita asas tiba-tiba bahawa harga jurang boleh menyebabkan kerugian. harga stop loss boleh membantu mengurangkan risiko tersebut.

Peluang Peningkatan

  • Lebih banyak jangka masa MAs atau EMA boleh ditambah untuk meningkatkan lebih lanjut ketepatan trend.

  • Stop loss harga sederhana boleh diuji untuk mengunci keuntungan sambil mengurangkan kerugian dalam pergerakan melampau.

  • Pembelajaran mesin dapat mengoptimumkan parameter secara dinamik untuk menyesuaikan diri dengan keadaan pasaran yang berubah.

Kesimpulan

Strategi ini kukuh dan boleh dipercayai secara keseluruhan, menggunakan persilangan MA untuk menentukan trend ditambah dengan penapis EMA. Pengoptimuman parameter lanjut dan kawalan risiko yang berhati-hati dapat meningkatkan kadar kemenangan dan keuntungan. Layak penyelidikan dan aplikasi lanjut.


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

//@version=3
strategy("Free Strategy #02 (ES / SPY)", overlay=true)

// Inputs
Quantity = input(1, minval=1, title="Quantity")
SmaPeriod01 = input(3, minval=1, title="SMA Period 01")
SmaPeriod02 = input(8, minval=1, title="SMA Period 02")
SmaPeriod03 = input(10, minval=1, title="SMA Period 03")
EmaPeriod01 = input(5, minval=1, title="EMA Period 01")
MaxProfitCloses = input(5, minval=1, title="Max Profit Close")
MaxBars = input(10, minval=1, title="Max Total Bars")

// Misc Variables
src = close
BarsSinceEntry = 0
MaxProfitCount = 0
Sma01 = sma(close, SmaPeriod01)
Sma02 = sma(close, SmaPeriod02)
Sma03 = sma(close, SmaPeriod03)
Ema01 = ema(close, EmaPeriod01)

// Conditions
Cond00 = strategy.position_size == 0
Cond01 = close < Sma03
Cond02 = close <= Sma01
Cond03 = close[1] > Sma01[1]
Cond04 = open > Ema01
Cond05 = Sma02 < Sma02[1]

// Update Exit Variables
BarsSinceEntry := Cond00 ? 0 : nz(BarsSinceEntry[1]) + 1
MaxProfitCount := Cond00 ? 0 : (close > strategy.position_avg_price and BarsSinceEntry > 1) ? nz(MaxProfitCount[1]) + 1 : nz(MaxProfitCount[1])

// Entries
strategy.entry(id="L1", long=true, qty=Quantity, when=(Cond00 and Cond01 and Cond02 and Cond03 and Cond04 and Cond05))
 
// Exits
strategy.close("L1", (BarsSinceEntry - 1 >= MaxBars or MaxProfitCount >= MaxProfitCloses))

Lebih lanjut