Strategi persilangan purata bergerak boleh dikonfigurasikan

MA-X EMA MA CROSSOVER trading strategy risk management
Tarikh penciptaan: 2025-04-03 11:31:33 Akhirnya diubah suai: 2025-04-03 11:31:33
Salin: 9 Bilangan klik: 300
2
fokus pada
319
Pengikut

Strategi persilangan purata bergerak boleh dikonfigurasikan Strategi persilangan purata bergerak boleh dikonfigurasikan

Gambaran keseluruhan

Artikel ini membentangkan strategi perdagangan silang purata bergerak yang fleksibel dan kuat yang membolehkan peniaga menyesuaikan parameter dan jenis purata bergerak mengikut keadaan pasaran yang berbeza. Inti strategi ini adalah untuk mengesan trend dan menghasilkan isyarat menggunakan purata bergerak dari pelbagai tempoh dan jenis.

Prinsip Strategi

Strategi menghasilkan isyarat dagangan dengan mengira purata bergerak untuk tiga kitaran yang berbeza: garis cepat, garis lambat, dan garis keluar. Prinsip utama termasuk:

  1. Pilihan jenis purata bergerak: menyokong purata bergerak sederhana ((SMA), purata bergerak indeks ((EMA), purata bergerak berat ((WMA) dan purata bergerak Hull ((HMA)).
  2. Syarat penyertaan:
    • Masuk berbilang kepala: harga penutupan lebih tinggi daripada garis cepat, garis cepat lebih tinggi daripada garis lambat, dan harga penutupan lebih tinggi daripada garis keluar
    • Masuk kosong: harga penutupan lebih rendah daripada garisan pantas, garisan pantas lebih rendah daripada garisan perlahan, dan harga penutupan lebih rendah daripada garis keluar
  3. Syarat kejohanan:
    • Perlawanan berbilang kepala: selepas memasuki sekurang-kurangnya dua garis K, harga penutupan lebih rendah daripada garis keluar
    • Keluar kosong: Setelah memasuki sekurang-kurangnya dua garis K, harga penutupan lebih tinggi daripada keluar

Kelebihan Strategik

  1. Kebolehkonfigurasi yang tinggi: pedagang boleh menyesuaikan tempoh dan jenis purata bergerak dengan fleksibel
  2. Kebolehpasaran berbilang pasaran: Varieti dagangan dengan kecairan yang berbeza dengan menyesuaikan parameter
  3. Pemantauan trend yang kuat: menggunakan pelbagai purata bergerak untuk menyaring isyarat palsu
  4. Kawalan risiko: Kawalan kedudukan 10% sebagai akaun hak milik secara lalai
  5. Arah perdagangan yang fleksibel: boleh memilih untuk mengaktifkan perdagangan kosong

Risiko Strategik

  1. Sensitiviti parameter: pasaran yang berbeza mungkin memerlukan parameter purata bergerak yang berbeza
  2. Lebih baik untuk pasaran yang sedang trending: lebih banyak isyarat yang tidak berkesan boleh dihasilkan dalam pasaran yang bergolak
  3. Kos urus niaga: Strategi menetapkan secara lalai komisen urus niaga sebanyak 0.06%, perlu dipertimbangkan dalam urus niaga sebenar
  4. Batasan pengesanan: pengesahan awal hanya dilakukan pada beberapa jenis (seperti BTCUSD dan NIFTY)

Arah pengoptimuman strategi

  1. Penyesuaian parameter dinamik: memperkenalkan kitaran purata bergerak yang beradaptasi
  2. Gabungan dengan penunjuk teknikal lain: Tambah RSI, MACD dan lain-lain untuk penapis isyarat
  3. Mekanisme Hentikan Kerosakan: Tambah Strategi Hentikan Kerosakan Berasaskan Ketegangan
  4. Pengesahan pelbagai bingkai masa: pengesahan semula secara menyeluruh dalam tempoh masa yang berbeza
  5. Pengoptimuman Pembelajaran Mesin: Menggunakan algoritma untuk mencari kombinasi parameter terbaik secara automatik

ringkaskan

Strategi persilangan rata-rata bergerak yang boleh dikonfigurasi (MA-X) menyediakan kerangka pengesanan trend yang fleksibel. Dengan konfigurasi yang munasabah dan pengoptimuman berterusan, strategi ini boleh menjadi alat yang kuat dalam toolkit perdagangan kuantitatif.

Kod sumber strategi
/*backtest
start: 2024-04-03 00:00:00
end: 2025-04-02 00:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"BNB_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © YetAnotherTA

//@version=6
strategy("Configurable MA Cross (MA-X) Strategy", "MA-X", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type = strategy.commission.percent, commission_value = 0.06)

// === Inputs ===
// Moving Average Periods
maPeriodA = input.int(13, title="Fast MA")
maPeriodB = input.int(55, title="Slow MA")
maPeriodC = input.int(34, title="Exit MA")

// MA Type Selection
maType = input.string("EMA", title="MA Type", options=["SMA", "EMA", "WMA", "HMA"])

// Toggle for Short Trades (Disabled by Default)
enableShorts = input.bool(false, title="Enable Short Trades", tooltip="Enable or disable short positions")

// === Function to Select MA Type ===
getMA(src, length) =>
    maType == "SMA" ? ta.sma(src, length) : maType == "EMA" ? ta.ema(src, length) : maType == "WMA" ? ta.wma(src, length) : ta.hma(src, length)

// === MA Calculation ===
maA = getMA(close, maPeriodA)
maB = getMA(close, maPeriodB)
maC = getMA(close, maPeriodC)

// === Global Variables for Crossover Signals ===
var bool crossAboveA = false
var bool crossBelowA = false

crossAboveA := ta.crossover(close, maA)
crossBelowA := ta.crossunder(close, maA)

// === Bar Counter for Exit Control ===
var int barSinceEntry = na

// Reset the counter on new entries
if (strategy.opentrades == 0)
    barSinceEntry := na

// Increment the counter on each bar
if (strategy.opentrades > 0)
    barSinceEntry := (na(barSinceEntry) ? 1 : barSinceEntry + 1)

// === Entry Conditions ===
goLong = close > maA and maA > maB and close > maC and crossAboveA
goShort = enableShorts and close < maA and maA < maB and close < maC and crossBelowA  // Shorts only when toggle is enabled

// === Exit Conditions (only after 1+ bar since entry) ===
exitLong = (strategy.position_size > 0) and (barSinceEntry >= 2) and (close < maC)
exitShort = enableShorts and (strategy.position_size < 0) and (barSinceEntry >= 2) and (close > maC)

// === Strategy Execution ===
// Long entry logic
if (goLong)
    strategy.close("Short")         // Close any short position
    strategy.entry("Long", strategy.long)
    alert("[MA-X] Go Long")
    barSinceEntry := 1               // Reset the bar counter

// Short entry logic (only if enabled)
if (enableShorts and goShort)
    strategy.close("Long")          // Close any long position
    strategy.entry("Short", strategy.short)
    alert("[MA-X] Go Short")
    barSinceEntry := 1               // Reset the bar counter

// Exit logic (only after at least 1 bar has passed)
if (exitLong)
    strategy.close("Long")
    alert("[MA-X] Exit Long")

if (enableShorts and exitShort)
    strategy.close("Short")
    alert("[MA-X] Exit Short")

// === Plotting ===
plot(maA, color=color.green, linewidth=2, title="Fast MA")
plot(maB, color=color.blue, linewidth=2, title="Slow MA")
plot(maC, color=color.red, linewidth=2, title="Exit MA")