Strategi tren lintas kerangka waktu berdasarkan moving average dan EMA


Tanggal Pembuatan: 2024-02-21 15:59:43 Akhirnya memodifikasi: 2024-02-21 15:59:43
menyalin: 1 Jumlah klik: 713
1
fokus pada
1617
Pengikut

Strategi tren lintas kerangka waktu berdasarkan moving average dan EMA

Ringkasan

Strategi ini adalah strategi yang memanfaatkan garis rata-rata dan EMA untuk melakukan perdagangan tren lintas kerangka waktu. Strategi ini memungkinkan pelacakan tren berisiko rendah dengan mengidentifikasi arah tren dengan menggabungkan entitas SMA, EMA, dan K-line dari berbagai periode.

Prinsip Strategi

Strategi ini didasarkan pada perbandingan rata-rata SMA dari tiga periode yang berbeda untuk menentukan pergerakan harga. Selain itu, EMA juga digunakan untuk menentukan arah entitas.

Secara khusus, strategi ini menggunakan rata-rata SMA 3 periode, yaitu SMA 3 periode, SMA 8 periode, dan SMA 10 periode. Harga dianggap berada di bawah tiga garis rata-rata sebagai penurunan, dan ketika harga kembali ke rata-rata, sinyal beli akan dikirim.

Selain itu, strategi ini juga menggunakan 5 siklus EMA untuk membantu menentukan arah entitas K-line, memastikan bahwa entitas yang dibeli naik.

Dalam manajemen posisi, strategi menetapkan jumlah keuntungan atau periode maksimum posisi sebagai cara menghentikan kerugian.

Analisis Keunggulan

Strategi ini menggabungkan garis rata-rata dari periode waktu yang berbeda untuk menilai tren, sehingga dapat secara efektif menyaring kebisingan pasar dan melacak tren garis tengah dan panjang. Parameter strategi telah dioptimalkan dan berkinerja baik dalam pengulangan sejarah.

Selain itu, strategi untuk bergabung dengan penilaian EMA dapat menghindari pembelian entitas K-line ke bawah, sehingga mengurangi kehilangan slippage yang tidak perlu.

Secara keseluruhan, strategi ini stabil, dapat diandalkan, dan cocok untuk pelacakan jangka panjang.

Risiko dan Pengendalian

  • Strategi ini sensitif terhadap parameter, 3 siklus SMA atau siklus EMA yang tidak tepat dapat menyebabkan penurunan kualitas sinyal perdagangan. Perlu dilakukan pengoptimalan parameter untuk varietas yang berbeda.

  • Strategi ini tidak mempertimbangkan lonjakan besar atau celah. Jika terjadi berita besar yang menyebabkan harga melonjak tinggi, kemungkinan akan terjadi kerugian. Anda dapat mengatur stop loss untuk menghindari risiko ini.

Arah optimasi

  • Anda dapat mempertimbangkan untuk menambahkan lebih banyak parameter siklus untuk membentuk EMA atau SMA perbandingan pada beberapa frame waktu, sehingga strategi lebih akurat dalam menilai tren.

  • Anda dapat menguji setelan stop loss harga dengan amplitudo tertentu, dengan asumsi bahwa keuntungan terjamin, mengurangi kerugian dalam situasi ekstrem.

  • Anda dapat mencoba untuk memperkenalkan pembelajaran mesin untuk mengoptimalkan parameter secara dinamis, sehingga parameter strategi dapat disesuaikan dengan situasi pasar real-time.

Meringkaskan

Strategi ini secara keseluruhan stabil dan dapat diandalkan, menggunakan perbandingan rata-rata untuk menentukan arah tren, ditambah dengan sinyal penyaringan EMA. Dengan pengoptimalan parameter dan pengaturan kontrol angin, Anda dapat meningkatkan lebih lanjut kemenangan strategi dan profitabilitas.

Kode Sumber Strategi
/*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))