Strategi Perdagangan Purata Bergerak dan Stochastic

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

img

Ringkasan

Strategi ini menggabungkan purata bergerak dan osilator Stochastic untuk melaksanakan sistem perdagangan saham automatik. Ia menggunakan dua purata bergerak dengan panjang yang berbeza dan penunjuk Stochastic untuk menangkap isyarat trend dan overbought / oversold, dan membuat keputusan membeli dan menjual berdasarkan arah trend dan isyarat penunjuk di kawasan overbought / oversold.

Logika Strategi

1. Purata Bergerak

Rata-rata bergerak garis pantas (5 hari) dan garis perlahan (20 hari) digunakan. Garis pantas yang melintasi di atas garis perlahan adalah isyarat beli, sementara melintasi di bawah adalah isyarat jual. Rata-rata bergerak menentukan trend dan arah harga.

2. Osilator Stochastic

Parameter Stochastic ditetapkan kepada: K garis tempoh 14, K garis lancar tempoh 3, D garis lancar tempoh 3. Di bawah 20 pada garis K adalah rantau overbought, manakala di atas 80 adalah rantau overbought.

3. Peraturan kemasukan

Syarat pembelian: Perpindahan MA pantas di atas garis MA dan K perlahan <20 (wilayah oversold) Keadaan jualan: Perpindahan MA pantas di bawah garis MA dan K perlahan > 80 (wilayah yang terlalu banyak dibeli)

Pergi panjang apabila syarat beli dipenuhi; pergi pendek apabila syarat jual dipenuhi.

4. Tetapan Stop Loss

Letakkan sasaran keuntungan 1% selepas membeli; letakkan stop loss 1% selepas menjual.

Analisis Kelebihan

Strategi ini menggabungkan trend dan penunjuk untuk menangkap trend harga jangka menengah hingga panjang dengan berkesan, sambil menggunakan osilator Stochastic untuk mengawal masa perdagangan dan mengelakkan entri rawak tanpa bias arah yang jelas. Parameter strategi boleh disesuaikan dengan persekitaran pasaran yang berbeza. Secara keseluruhan strategi ini berfungsi dengan baik pada saham besar / mid-cap dalam trend menaik.

Risiko dan Penyelesaian

  • Peningkatan harga akibat peristiwa berita penting boleh menyebabkan kerugian besar.

  • Pasaran yang terikat julat yang berterusan boleh membawa kepada kerugian kecil berturut-turut.

  • Elakkan tempoh pasaran utama apabila harga cenderung berbalik.

Pengoptimuman

  • Uji kombinasi parameter yang berbeza untuk mencari parameter optimum, seperti panjang MA yang berbeza.

  • Menggabungkan alat analisis lain seperti jumlah, turun naik untuk keadaan penapis untuk meningkatkan kadar keuntungan.

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

Kesimpulan

Strategi keseluruhan beroperasi dengan lancar. Dengan sasaran stop loss dan keuntungan, profil keuntungan / kerugian keseluruhan adalah kukuh. Penambahbaikan lanjut boleh dijangkakan dari penyesuaian parameter dan penapisan kumpulan saham. Secara umum ini adalah strategi perdagangan kuantitatif yang mudah dilaksanakan dan kukuh.


/*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 lanjut