Strategi perdagangan kuantitatif berdasarkan rata-rata pergerakan sederhana


Tanggal Pembuatan: 2023-12-22 13:28:01 Akhirnya memodifikasi: 2023-12-22 13:28:01
menyalin: 0 Jumlah klik: 768
1
fokus pada
1623
Pengikut

Strategi perdagangan kuantitatif berdasarkan rata-rata pergerakan sederhana

Ringkasan

Strategi Moving Average Crossover adalah strategi perdagangan kuantitatif yang didasarkan pada rata-rata bergerak sederhana. Strategi ini menghasilkan sinyal beli dan jual dengan menghitung rata-rata bergerak sederhana dari periode yang berbeda saat mereka bersilang.

Secara khusus, strategi ini menghitung rata-rata bergerak sederhana dari garis 9 dan 45 . Ketika harga melewati garis 9 dan 45 di atas, sinyal beli dihasilkan; Ketika harga melewati garis 9 dan 45 di bawah, sinyal jual dihasilkan.

Prinsip Strategi

Logika inti dari strategi ini didasarkan pada prinsip berlian-fork-dead-fork pada moving average. Moving average mampu secara efektif menyaring kebisingan pasar dan mengindikasikan perubahan tren besar. Ketika harga mulai memasuki tren naik ketika melewati rata-rata jangka pendek, berarti harga mulai memasuki tren turun ketika melewati rata-rata jangka panjang.

Secara khusus, strategi ini menggunakan rata-rata bergerak sederhana dari garis 9 dan 45 ̨ garis 9 mewakili tren jangka pendek, garis 45 mewakili tren jangka panjang ̨ ketika harga melewati garis 9 dan 45 ̨, menunjukkan bahwa harga saham berada di saluran naik dalam jangka pendek dan jangka panjang, sehingga menghasilkan sinyal beli; ketika harga melewati garis 9 dan 45 ̨, menunjukkan bahwa tren naik harga saham melemah secara bertahap, sehingga menghasilkan sinyal jual ̨

Dari sudut pandang logika kode, strategi ini pertama-tama menghitung rata-rata bergerak sederhana pada garis 9 dan garis 45 dan kemudian menilai garpu emas dan garpu mati pada garis rata-rata dengan fungsi ta.crossover dan ta.crossunder. Untuk menghasilkan sinyal beli dan jual, gunakan fungsi plotshape untuk memetakan grafik sinyal segitiga dan segitiga terbalik pada peta garis K.

Selain itu, strategi ini juga menetapkan logika stop loss untuk posisi panjang dan pendek. Khususnya, setelah membuka posisi, harga tertinggi dan terendah dari garis K sebelumnya akan diambil sebagai harga stop loss. Ini dapat mengunci keuntungan dan menghindari kerugian besar.

Analisis Keunggulan

  • Dengan menggunakan pengaturan garis rata ganda, dapat menangkap perubahan tren jangka menengah dan panjang, menghindari pengaruh kebisingan pasar jangka pendek, dan meningkatkan kualitas sinyal.
  • Tergabung dengan strategi stop loss, Anda dapat secara efektif mengendalikan risiko dan mengunci keuntungan.
  • Logika strategi sederhana, mudah dipahami, dan mudah diterapkan.
  • Tingkat pemanfaatan dana yang tinggi, dapat menghasilkan keuntungan yang cukup.

Analisis risiko

  • Strategi dua garis lurus mudah menghasilkan sinyal dorongan dead-fork, yang dapat menyebabkan terlalu banyak transaksi yang tidak valid.
  • Harga stop loss mungkin terlalu konservatif dan tidak dapat terus mengikuti tren.
  • Pilihan parameter yang salah dapat menyebabkan frekuensi transaksi yang terlalu tinggi atau terlalu rendah.
  • Tidak bisa beradaptasi dengan perubahan besar-besaran.

Tanggapan:

  1. Optimalkan parameter rata-rata untuk mengurangi tingkat transaksi yang tidak efektif
  2. Optimalkan Stop Loss Logika, Menggunakan Trend Tracking Stop Loss
  3. Kombinasi sinyal filter dengan indikator lain
  4. Intervensi Manusia untuk Menghindari Terjadinya Terbaliknya Terorisme

Arah optimasi

Strategi ini masih bisa dioptimalkan lebih jauh:

  1. Adaptasi Moving Average atau Indeks Moving Average dapat digunakan untuk menangkap perubahan tren.

  2. Meningkatkan sinyal filter seperti indikator volatilitas untuk menghindari kesalahan sinyal dalam situasi getaran.

  3. Menggunakan metode optimasi parameter untuk mencari kombinasi parameter yang optimal.

  4. Menambahkan mekanisme pelacakan tren ke dalam logika stop loss, memungkinkan garis stop loss untuk melacak harga secara fleksibel.

  5. Meningkatkan penilaian terhadap resistance support pada tingkat besar untuk menghindari sinyal yang salah di area harga kunci.

  6. Dengan model pembelajaran mesin, kualitas sinyal akan disaring lebih lanjut.

Meringkaskan

Strategi persilangan rata-rata adalah strategi pelacakan tren yang sederhana dan praktis. Ini dapat secara efektif menyaring kebisingan dan menangkap perubahan tren harga jangka menengah dan panjang. Setelah digabungkan dengan logika stop loss yang tepat, dapat melakukan perdagangan tren berdasarkan kontrol risiko.

Kode Sumber Strategi
/*backtest
start: 2022-12-15 00:00:00
end: 2023-12-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("SMA Crossover Strategy", overlay=true)

// Input parameters
fast_length = input(9, title="Fast SMA Length")
slow_length = input(45, title="Slow SMA Length")

// Calculate moving averages
fast_sma = ta.sma(close, fast_length)
slow_sma = ta.sma(close, slow_length)

// Buy condition
buy_condition = ta.crossover(close, fast_sma) and ta.crossover(close, slow_sma)

// Sell condition
sell_condition = ta.crossunder(close, fast_sma) and ta.crossunder(close, slow_sma)

// Calculate stop loss levels
prev_low = request.security(syminfo.tickerid, "1D", low[1], lookahead=barmerge.lookahead_on)
prev_high = request.security(syminfo.tickerid, "1D", high[1], lookahead=barmerge.lookahead_on)

// Plot signals on the chart
plotshape(buy_condition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)
plotshape(sell_condition, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)

// Strategy exit conditions
long_stop_loss = sell_condition ? prev_low : na
short_stop_loss = buy_condition ? prev_high : na

strategy.exit("Long Exit", from_entry="Long", when=sell_condition, stop=long_stop_loss)
strategy.exit("Short Exit", from_entry="Short", when=buy_condition, stop=short_stop_loss)

strategy.entry("Long", strategy.long, when=buy_condition)
strategy.entry("Short", strategy.short, when=sell_condition)