Strategi Perdagangan Rata-rata Bergerak dan Stochastic

Penulis:ChaoZhang, Tanggal: 2024-02-02 10:48:37
Tag:

img

Gambaran umum

Strategi ini menggabungkan rata-rata bergerak dan osilator Stochastic untuk menerapkan sistem perdagangan saham otomatis. Ini menggunakan dua rata-rata bergerak dengan panjang yang berbeda dan indikator Stochastic untuk menangkap sinyal tren dan overbought / oversold, dan membuat keputusan beli dan jual berdasarkan arah tren dan sinyal indikator di wilayah overbought / oversold.

Logika Strategi

1. Rata-rata Bergerak

Rata-rata bergerak garis cepat (5 hari) dan garis lambat (20 hari) digunakan. garis cepat melintasi di atas garis lambat adalah sinyal beli, sementara melintasi di bawah adalah sinyal jual. rata-rata bergerak menentukan tren dan arah harga.

2. Osilator Stokastik

Parameter Stochastic diatur menjadi: Periode garis K 14, Periode garis K halus 3, Periode garis D halus 3. Di bawah 20 pada garis K adalah wilayah oversold, sedangkan di atas 80 adalah wilayah overbought.

3. Aturan Masuk

Kondisi pembelian: Perpindahan MA cepat di atas garis MA dan K lambat <20 (wilayah oversold) Kondisi jual: Perpindahan MA cepat di bawah garis MA dan K lambat > 80 (wilayah yang terlalu banyak dibeli)

Pergi panjang ketika kondisi beli terpenuhi; pergi pendek ketika kondisi jual terpenuhi.

4. Pengaturan Stop Loss

Tetapkan target keuntungan 1% setelah membeli; tetapkan stop loss 1% setelah menjual.

Analisis Keuntungan

Strategi ini menggabungkan tren dan indikator untuk secara efektif menangkap tren harga jangka menengah ke panjang, sambil menggunakan osilator Stochastic untuk mengontrol waktu perdagangan dan menghindari entri acak tanpa bias arah yang jelas. Parameter strategi dapat disesuaikan dengan lingkungan pasar yang berbeda. Secara keseluruhan strategi ini bekerja sangat baik pada saham besar / mid-cap dalam tren naik.

Risiko dan Solusi

  • Peningkatan harga akibat peristiwa berita yang signifikan dapat menimbulkan kerugian besar. Stop loss dapat mengendalikan risiko.

  • Pasar yang terikat jangkauan dapat menyebabkan kerugian kecil berturut-turut.

  • Hindari periode pasar penting ketika harga cenderung berbalik.

Optimalisasi

  • Uji kombinasi parameter yang berbeda untuk menemukan parameter optimal, seperti panjang MA yang berbeda.

  • Masukkan alat analisis lain seperti volume, volatilitas untuk kondisi filter untuk meningkatkan tingkat keuntungan.

  • Penelitian mekanisme pemilihan saham, seperti memilih saham yang kuat atau indeks tertimbang cap, untuk mengurangi risiko saham tunggal.

Kesimpulan

Strategi keseluruhan beroperasi dengan lancar. Dengan target stop loss dan laba, profil laba/rugi secara keseluruhan solid. Peningkatan lebih lanjut dapat diharapkan dari penyesuaian parameter dan penyaringan stok pool. Secara umum ini adalah strategi perdagangan kuantitatif yang mudah diterapkan dan kuat.


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

//@version=4
strategy("Moving Average and Stochastic Strategy 80% ", overlay=true)

// Moving Average Settings
maShortLength = input(5, title="Short MA Length")
maLongLength = input(20, title="Long MA Length")

// Stochastic Settings
stochLength = input(14, title="Stochastic Length")
smoothK = input(3, title="Stochastic %K")
smoothD = input(3, title="Stochastic %D")
stochOverbought = 80
stochOversold = 20

// Profit Target Settings
profitTarget = input(1, title="Profit Target (%)") // 1% profit target

// Calculate Moving Averages
maShort = sma(close, maShortLength)
maLong = sma(close, maLongLength)

// Calculate Stochastic
k = sma(stoch(close, high, low, stochLength), smoothK)
d = sma(k, smoothD)

// Entry Conditions
longConditionMA = crossover(maShort, maLong) and k < stochOversold
shortConditionMA = crossunder(maShort, maLong) and k > stochOverbought

// Opposite Conditions
oppositeLongConditionMA = crossunder(maShort, maLong) and k < stochOversold
oppositeShortConditionMA = crossover(maShort, maLong) and k > stochOverbought

// Strategy Logic
if (longConditionMA)
    strategy.entry("Buy", strategy.long)
    strategy.exit("Exit Buy", "Buy", profit=close * (50 + profitTarget / 100))

if (shortConditionMA)
    strategy.entry("Sell", strategy.short)
    strategy.exit("Exit Sell", "Sell", profit=close * (20 - profitTarget / 100))

// Opposite Strategy Logic
if (oppositeLongConditionMA)
    strategy.entry("Sell", strategy.short)
    strategy.exit("Exit Sell", "Sell", profit=close * (50 - profitTarget / 100))

if (oppositeShortConditionMA)
    strategy.entry("Buy", strategy.long)
    strategy.exit("Exit Buy", "Buy", profit=close * (20 + profitTarget / 100))

// Plot Moving Averages
plot(maShort, color=color.blue, title="Short MA")
plot(maLong, color=color.red, title="Long MA")

// Plot Stochastic
hline(stochOverbought, "Overbought", color=color.red)
hline(stochOversold, "Oversold", color=color.green)
plot(k, color=color.black, title="Stochastic %K")

Lebih banyak