Strategi perdagangan anjakan mata arah aliran purata bergerak berbilang tempoh

SMA MA 移动均线 趋势跟踪 回踩策略 止损 趋势反转 多周期分析 动量指标 波动率
Tarikh penciptaan: 2025-07-08 13:40:33 Akhirnya diubah suai: 2025-07-08 13:40:33
Salin: 0 Bilangan klik: 227
2
fokus pada
319
Pengikut

Strategi perdagangan anjakan mata arah aliran purata bergerak berbilang tempoh Strategi perdagangan anjakan mata arah aliran purata bergerak berbilang tempoh

Gambaran keseluruhan

Strategi perdagangan multi-siklus bergerak rata-rata trend tikungan mundur adalah sistem perdagangan kuantitatif berdasarkan sederhana bergerak rata-rata ((SMA) yang menggabungkan empat elemen teras pengesahan trend, garis rata-rata kemerosotan, harga mundur dan berhenti bergelombang. Strategi ini mengesan peluang harga mundur di bawah persekitaran trend yang kuat dengan memantau rata-rata bergerak dalam tempoh yang berbeza ((9, 20, 50, 100 dan 200), dan menggunakan kedudukan berhenti yang tepat untuk menetapkan sejarah pergerakan.

Prinsip Strategi

Strategi ini adalah berdasarkan kepada sistem penyaringan bersyarat bertingkat:

  1. Syarat pengesahan trend:

    • Trend berbilang arah memerlukan harga berada di atas garis purata 20 dan 200 hari (trendUp)
    • Trend terbalik memerlukan harga berada di bawah garis purata 20 dan 200 hari (trendDown)
  2. Syarat baris rata:

    • Permintaan berganda 20 hari rata-rata terletak di atas 200 hari rata-rata rata-rata (smaOrderUp)
    • Borang kosong memerlukan garis purata 20 hari berada di bawah garis purata 200 hari (smaOrderDown)
  3. Syarat kemerosotan:

    • Skillet dikira dengan membandingkan nilai purata semasa dengan nilai purata 5 kitaran yang lalu
    • Permintaan berbilang kepala 20 hari dan 200 hari rata-rata slope adalah positif ((slopeUp)
    • Keperluan kosong 20 dan 200 hari rata-rata slope adalah negatif ((slopeDown)
  4. Syarat masuk semula:

    • PullbackUp - permintaan untuk harga pada tempoh sebelumnya berada di bawah garis purata 20 hari, dan harga semasa berada di atas garis purata 20 hari
    • Hulu meminta harga tempoh sebelumnya lebih tinggi daripada purata 20 hari, dan harga semasa jatuh di bawah purata 20 hari (pullbackDown)
  5. Tetapan Stop Loss:

    • Multicore menggunakan titik terendah dalam 10 kitaran terakhir sebagai stop loss (swingLow)
    • Blank menggunakan titik tertinggi dalam 10 kitaran terakhir sebagai stop loss (swingHigh)

Apabila semua syarat yang sesuai dipenuhi pada masa yang sama, strategi akan mengeluarkan isyarat multihead atau kosong, dan menetapkan kedudukan hentian yang sesuai.

Kelebihan Strategik

  1. Penapisan trend sistematikDengan menggunakan pelbagai garis rata-rata dan keadaan kemerosotan, strategi ini menyaring kelemahan dan menyusun pasaran dengan berkesan, dan hanya berdagang dalam keadaan trend yang kuat, meningkatkan kualiti isyarat dengan ketara.

  2. Masa kemasukan yang tepatSyarat langkah balik: memastikan titik masuk berisiko rendah selepas trend disahkan, mengelakkan mengejar tinggi dan rendah, meningkatkan kadar risiko dan pulangan setiap perdagangan.

  3. Mekanisme Hentikan Kerosakan Dinamik: Berdasarkan pasaran yang sebenarnya turun naik set berhenti, daripada titik tetap berhenti lebih mampu menyesuaikan diri dengan keadaan pasaran yang berbeza dan persekitaran kadar turun naik.

  4. Mekanisme pengesahan bergandaDengan kombinasi pelbagai syarat seperti persilangan garis rata-rata, kedudukan harga, arah kemiringan, dan sebagainya, kemungkinan isyarat palsu dikurangkan.

  5. Mudah difahami dan dioptimumkan: Logik strategi jelas dan intuitif, parameter yang lebih sedikit dan masing-masing mempunyai peranan yang jelas, memudahkan penyesuaian optimum mengikut ciri-ciri pasaran yang berbeza.

Risiko Strategik

  1. Masalah kelewatan garis rata-rataGaris purata bergerak pada dasarnya adalah penunjuk yang ketinggalan, yang boleh menyebabkan kelewatan isyarat, kehilangan titik masuk terbaik atau menghasilkan kemerosotan ketinggalan dalam pasaran yang bergolak. Penyelesaian adalah untuk mempertimbangkan pengenalan penunjuk yang lebih sensitif seperti EMA atau VWMA sebagai tambahan.

  2. Kembali ke KetidakpastianStrategi tidak dapat meramalkan kedalaman langkah balik, kadang-kadang harga mungkin kembali ke arah trend sebelum menyentuh garis purata 20 hari, menyebabkan peluang perdagangan yang terlewat. Anda boleh mempertimbangkan untuk menambah penghakiman zon dinamik berdasarkan ATR, dan bukan satu garis harga.

  3. Risiko kerugian berterusanDalam pasaran yang bergolak, harga yang sering melintasi garis rata-rata boleh menyebabkan kerugian berturut-turut. Adalah disyorkan untuk menambah penapis kadar turun naik, menyesuaikan parameter strategi atau menangguhkan perdagangan dalam persekitaran yang bergelombang tinggi.

  4. Kepekaan ParameterStrategi ini sensitif terhadap kitaran garis rata-rata dan parameter pengulangan, yang mungkin memerlukan parameter yang berbeza untuk pasaran dan jangka masa yang berbeza. Ia disyorkan untuk menentukan kombinasi parameter yang paling sesuai untuk jenis perdagangan tertentu melalui pengulangan.

  5. Kekurangan pengesahan jumlah pesananStrategi semasa hanya berdasarkan data harga, kekurangan pengesahan jumlah transaksi boleh menyebabkan isyarat palsu dalam persekitaran kecairan yang rendah. Pertimbangkan untuk menambah syarat jumlah transaksi sebagai penapis tambahan.

Arah pengoptimuman strategi

  1. Penyesuaian parameterAnda boleh mempertimbangkan untuk menyesuaikan secara automatik kitaran purata dan tempoh pengembalian cerun mengikut turun naik pasaran, supaya strategi dapat mengekalkan prestasi yang optimum dalam keadaan pasaran yang berbeza. Sebagai contoh, kitaran purata yang lebih pendek boleh digunakan dalam pasaran turun naik yang rendah, dan kitaran yang lebih lama dalam pasaran yang lebih turun naik.

  2. Tambah syarat penapisanMemperkenalkan RSI (Relative Strength Index) atau Stochastic (Random Stochastic Index) sebagai penapis tambahan untuk mengesahkan isyarat langkah balik hanya di kawasan overbought/oversold dan mengurangkan isyarat palsu.

  3. Pengurusan kedudukan dinamikMengubah saiz kedudukan berdasarkan kadar turun naik dan kekuatan trend, meningkatkan kedudukan dalam keadaan turun naik rendah dalam keadaan turun naik yang kuat, mengurangkan kedudukan dalam keadaan turun naik tinggi dalam keadaan turun naik yang lemah, mengoptimumkan kecekapan modal.

  4. Pengesahan pelbagai kerangka masaMemperkenalkan mekanisme pengesahan trend pada jangka masa yang lebih tinggi untuk memastikan arah perdagangan selaras dengan trend yang lebih besar dan mengurangkan risiko perdagangan berlawanan arah.

  5. Tetapan sasaran keuntunganStrategi semasa hanya mempunyai tetapan stop loss dan tidak ada sasaran keuntungan, boleh mempertimbangkan sasaran keuntungan dinamik berdasarkan ATR atau tetapan rintangan / sokongan utama, untuk mengoptimumkan nisbah ganjaran risiko.

  6. Menambah klasifikasi keadaan pasaran: memperkenalkan penilaian keadaan pasaran ((kecenderungan, gegaran, penembusan), menggunakan tetapan parameter atau logik perdagangan yang berbeza untuk keadaan pasaran yang berbeza.

ringkaskan

Strategi perdagangan multi-siklus bergerak adalah sistem perdagangan kuantitatif yang tersusun, logik dan jelas, yang secara efektif menangkap peluang masuk berisiko rendah di pasaran tren melalui kombinasi garis rata-rata, analisis kemiringan dan keadaan harga. Strategi ini sangat sesuai untuk persekitaran pasaran dengan trend jangka panjang yang jelas, dan menyediakan pedagang dengan cara yang sistematik untuk mengesan trend.

Walaupun terdapat risiko yang wujud, seperti kelewatan garis rata dan sensitiviti parameter, strategi ini dapat meningkatkan kestabilan dan kesesuaian strategi dengan arah pengoptimuman yang disyorkan, seperti parameter penyesuaian, keadaan penapisan berganda, dan pengurusan kedudukan dinamik. Akhirnya, strategi ini menyediakan kerangka asas yang boleh dipercayai untuk peniaga kuantitatif, yang dapat disesuaikan mengikut pilihan risiko individu dan ciri-ciri pasaran.

Kod sumber strategi
/*backtest
start: 2025-01-01 00:00:00
end: 2025-07-05 10:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("SMA Pullback Strategy with Swing SL", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// === SMA Definitions ===
sma9   = ta.sma(close, 9)
sma20  = ta.sma(close, 20)
sma50  = ta.sma(close, 50)
sma100 = ta.sma(close, 100)
sma200 = ta.sma(close, 200)

// === Inputs ===
slopeLookback  = input.int(5, title="Slope Lookback")
swingLookback  = input.int(10, title="Swing High/Low Period")

// === Slope Calculation ===
slope20  = sma20 - sma20[slopeLookback]
slope200 = sma200 - sma200[slopeLookback]

// === Long Conditions ===
trendUp     = close > sma20 and close > sma200
smaOrderUp  = sma20 > sma200
slopeUp     = slope20 > 0 and slope200 > 0
pullbackUp  = close[1] < sma20[1] and close > sma20
swingLow    = ta.lowest(low, swingLookback)

longCondition = trendUp and smaOrderUp and slopeUp and pullbackUp

// === Short Conditions ===
trendDown     = close < sma20 and close < sma200
smaOrderDown  = sma20 < sma200
slopeDown     = slope20 < 0 and slope200 < 0
pullbackDown  = close[1] > sma20[1] and close < sma20
swingHigh     = ta.highest(high, swingLookback)

shortCondition = trendDown and smaOrderDown and slopeDown and pullbackDown

// === Strategy Entries & Exits ===
if (longCondition)
    strategy.entry("Long", strategy.long)
    strategy.exit("Exit Long", from_entry="Long", stop=swingLow)

if (shortCondition)
    strategy.entry("Short", strategy.short)
    strategy.exit("Exit Short", from_entry="Short", stop=swingHigh)

// === Plotting SMAs ===
plot(sma9,   title="SMA 9",   color=color.gray)
plot(sma20,  title="SMA 20",  color=color.orange)
plot(sma50,  title="SMA 50",  color=color.purple)
plot(sma100, title="SMA 100", color=color.green)
plot(sma200, title="SMA 200", color=color.blue)

// === Plot Entry Signals ===
plotshape(longCondition,  title="Buy Signal",  location=location.belowbar, color=color.green, style=shape.triangleup,   size=size.small)
plotshape(shortCondition, title="Sell Signal", location=location.abovebar, color=color.red,   style=shape.triangledown, size=size.small)