Strategi persilangan rata-rata bergerak yang dapat dikonfigurasi

MA-X EMA MA CROSSOVER trading strategy risk management
Tanggal Pembuatan: 2025-04-03 11:31:33 Akhirnya memodifikasi: 2025-04-03 11:31:33
menyalin: 9 Jumlah klik: 300
2
fokus pada
319
Pengikut

Strategi persilangan rata-rata bergerak yang dapat dikonfigurasi Strategi persilangan rata-rata bergerak yang dapat dikonfigurasi

Ringkasan

Artikel ini membahas strategi perdagangan lintas rata-rata bergerak yang fleksibel dan kuat, yang memungkinkan pedagang untuk menyesuaikan parameter dan jenis rata-rata bergerak sesuai dengan kondisi pasar yang berbeda. Inti dari strategi ini adalah untuk melacak tren dan menghasilkan sinyal menggunakan rata-rata bergerak dari periode dan jenis yang berbeda.

Prinsip Strategi

Strategi ini menghasilkan sinyal perdagangan dengan menghitung rata-rata bergerak dari tiga periode yang berbeda: garis cepat, garis lambat, dan garis keluar. Prinsip-prinsip utama meliputi:

  1. Pilihan jenis Moving Average: mendukung Simple Moving Average (SMA), Index Moving Average (EMA), Weighted Moving Average (WMA) dan Hull Moving Average (HMA).
  2. Syarat masuk:
    • Multi-head entry: harga close out lebih tinggi dari garis cepat, garis cepat lebih tinggi dari garis lambat, dan harga close out lebih tinggi dari garis exit
    • Masuk kosong: harga tutup di bawah garis cepat, garis cepat di bawah garis lambat, dan harga tutup di bawah garis keluar
  3. Kondisi untuk bermain:
    • Multiplayer: Setelah memasuki setidaknya dua garis K, harga tutup lebih rendah dari garis keluar
    • Keluar dengan kepala kosong: Setelah masuk setidaknya dua garis K, harga penutupan lebih tinggi dari garis keluar

Keunggulan Strategis

  1. Konfigurasi tinggi: pedagang dapat menyesuaikan siklus dan jenis moving average secara fleksibel
  2. Adaptasi multi-pasar: Varietas transaksi dengan likuiditas yang berbeda dapat diterapkan dengan menyesuaikan parameter
  3. Trending Trackers: Menggunakan beberapa Moving Average untuk memfilter sinyal palsu
  4. Pengendalian risiko: Manajemen posisi 10% untuk ekuitas akun secara default
  5. Fleksibel dalam arah transaksi: Anda dapat memilih untuk mengaktifkan perdagangan kosong atau tidak

Risiko Strategis

  1. Sensitivitas parameter: Pasar yang berbeda mungkin memerlukan parameter moving average yang berbeda
  2. Performa pasar yang sedang tren lebih baik: lebih banyak sinyal tidak efektif dapat dihasilkan di pasar yang bergoyang
  3. Biaya transaksi: Komisi transaksi dengan strategi default 0.06%, harus diperhitungkan dalam transaksi yang sebenarnya
  4. Keterbatasan deteksi: saat ini hanya dilakukan verifikasi awal pada beberapa varietas (seperti BTCUSD dan NIFTY)

Arah optimasi strategi

  1. Penyesuaian parameter dinamis: diperkenalkan siklus rata-rata bergerak adaptif
  2. Kombinasi dengan indikator teknis lainnya: tambahkan RSI, MACD dan indikator lainnya untuk memfilter sinyal
  3. Mekanisme Stop Loss: Tambahkan strategi stop loss berdasarkan volatilitas
  4. Verifikasi multi-frame: pengukuran ulang secara menyeluruh pada periode waktu yang berbeda
  5. Optimasi Pembelajaran Mesin: Menggunakan Algoritma untuk Menemukan Kombinasi Parameter Optimal Secara Otomatis

Meringkaskan

Strategi crossover rata-rata bergerak yang dapat dikonfigurasi (MA-X) memberikan kerangka pelacakan tren yang fleksibel. Dengan konfigurasi yang masuk akal dan pengoptimalan berkelanjutan, strategi ini dapat menjadi alat yang kuat dalam toolkit perdagangan kuantitatif.

Kode 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")