Strategi kuantitatif pelacakan tren MACD dinamis multi-level dikombinasikan dengan sistem analisis ekstensi posisi tinggi dan rendah 52 minggu

MACD MA EMA SMA RSI
Tanggal Pembuatan: 2024-12-27 14:27:51 Akhirnya memodifikasi: 2024-12-27 14:27:51
menyalin: 0 Jumlah klik: 427
1
fokus pada
1617
Pengikut

Strategi kuantitatif pelacakan tren MACD dinamis multi-level dikombinasikan dengan sistem analisis ekstensi posisi tinggi dan rendah 52 minggu

Ringkasan

Strategi ini adalah sistem perdagangan kuantitatif yang menggabungkan sinyal silang MACD multi-tingkat dengan tekanan dukungan dinamis di level rendah dan tinggi selama 52 minggu. Strategi ini mengkonfirmasi sinyal perdagangan dengan silang indikator MACD dalam dua periode waktu di garis waktu dan garis matahari, sambil menggunakan lini tekanan dukungan dinamis yang terbentuk di level rendah dan tinggi selama 52 minggu untuk membantu menilai tren pasar, sehingga memungkinkan keputusan perdagangan yang lebih kuat.

Prinsip Strategi

Strategi ini didasarkan pada logika inti sebagai berikut:

  1. Sinyal masuk dikonfirmasi bersama oleh garpu MACD sirkuler dan garpu MACD solar, yang mengharuskan indikator MACD kedua periode waktu untuk melihat lebih banyak sinyal.
  2. Sinyal keluar dipicu oleh day line MACD dead fork, dan jika ada sinyal day line MACD dead fork, maka posisi kosong akan keluar.
  3. Stop loss dinamis diatur pada posisi harga terendah pada hari yang memicu sinyal keluar.
  4. Garis rendah 52 minggu tinggi didasarkan pada basis yang dipilih pengguna ((harga minimum tertinggi atau harga penutupan) yang dihasilkan secara dinamis, dan membentang ke kanan untuk membentuk titik acuan penting.
  5. Strategi ini menggunakan manajemen posisi 5% dengan biaya transaksi tunggal 1 unit mata uang.

Keunggulan Strategis

  1. Multiple time frame confirmation: Filter penembusan palsu melalui resonansi sinyal MACD pada dua tingkat garis lingkaran dan garis matahari, meningkatkan akurasi transaksi.
  2. Tekanan Dukungan Dinamis: Garis tinggi dan rendah 52 minggu memberikan referensi penting untuk harga psikologis pasar yang membantu menilai kekuatan tren.
  3. Pengendalian risiko yang sempurna: Menggunakan mekanisme stop loss yang dinamis untuk menyesuaikan posisi stop loss sesuai dengan fluktuasi pasar, untuk tujuan melindungi keuntungan.
  4. Visibilitas tinggi: menampilkan harga dan sinyal penting melalui antarmuka grafis yang jelas, sehingga mudah dipahami dan dioperasikan oleh pedagang.
  5. Sistematisasi transaksi: Aturan masuk dan keluar yang ketat mencegah gangguan emosional dan meningkatkan objektivitas transaksi.

Risiko Strategis

  1. Tidak berlaku untuk pasar bergoyang: Dalam pasar bergoyang lateral, seringnya MACD crossover dapat menyebabkan terlalu banyak sinyal palsu.
  2. Risiko keterlambatan: Indikator MACD sendiri memiliki keterlambatan tertentu, yang dapat melewatkan waktu masuk yang optimal.
  3. Manajemen risiko: Posisi rasio tetap mungkin tidak cukup fleksibel dalam beberapa situasi pasar.
  4. Risiko Gap Pasar: Jika terjadi lonjakan besar, harga stop loss yang sebenarnya mungkin jauh di bawah posisi yang diharapkan.
  5. Risiko optimasi parameter: Parameter yang terlalu dioptimalkan dapat menyebabkan masalah overfit.

Arah optimasi strategi

  1. Memperkenalkan analisis hubungan kuantitas-harga: pertimbangkan untuk meningkatkan konfirmasi kuantitas transaksi berdasarkan sinyal MACD yang ada.
  2. Mengoptimalkan manajemen posisi: merancang mekanisme manajemen posisi yang lebih fleksibel, menyesuaikan dengan dinamika volatilitas pasar.
  3. Perbaikan mekanisme stop loss: Pertimbangan untuk menambah stop loss mobile atau stop loss dinamis berbasis ATR.
  4. Meningkatkan filter lingkungan pasar: memperkenalkan indikator kekuatan tren, hanya mengambil posisi di pasar tren yang kuat.
  5. Mengembangkan mekanisme pemfilteran sinyal: merancang kondisi konfirmasi sinyal yang lebih ketat, mengurangi sinyal palsu.

Meringkaskan

Strategi ini membangun sistem perdagangan pelacakan tren yang utuh dengan menggabungkan sinyal silang MACD multi-frame timeframe dengan garis tekanan dukungan dinamis 52-minggu tinggi-rendah. Keunggulan strategi ini terletak pada keandalan konfirmasi sinyal dan integritas kontrol risiko, namun tetap memperhatikan risiko pasar yang bergoyang dan risiko keterlambatan.

Kode Sumber Strategi
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("MACD Bitcoin strategy con 52W High/Low (linee estese)", overlay=true)

// === MACD SETTINGS ===
fastLength = 12
slowLength = 26
signalSmoothing = 9

// Funzione per ottenere i valori MACD
getMACD(source, timeframe) =>
    [macdLine, signalLine, _] = ta.macd(source, fastLength, slowLength, signalSmoothing)
    [macdLine, signalLine]

// Valori MACD Settimanali
[macdWeekly, signalWeekly] = request.security(syminfo.tickerid, "W", getMACD(close, "W"), lookahead=barmerge.lookahead_on)

// Valori MACD Giornalieri
[macdDaily, signalDaily] = getMACD(close, "D")

// Variabile per lo stop loss
var float lowOfSignalCandle = na

// Condizione per l'ingresso
longConditionWeekly = ta.crossover(macdWeekly, signalWeekly)
exitConditionDaily = ta.crossunder(macdDaily, signalDaily)

// Imposta Stop Loss sulla candela giornaliera
if (exitConditionDaily)
    lowOfSignalCandle := low

// Condizione di ingresso nel trade
enterTradeCondition = macdWeekly > signalWeekly and ta.crossover(macdDaily, signalDaily)

if (enterTradeCondition)
    strategy.entry("MACD Long", strategy.long)

if (not na(lowOfSignalCandle))
    strategy.exit("Stop Loss", "MACD Long", stop=lowOfSignalCandle)

if (strategy.position_size == 0)
    lowOfSignalCandle := na

// // === 52 WEEK HIGH/LOW SETTINGS ===
// // Input per selezionare tra Highs/Lows o Close
// high_low_close = input.string(defval="Highs/Lows", title="Base 52 week values on candle:", options=["Highs/Lows", "Close"])

// // Calcolo dei valori delle 52 settimane
// weekly_hh = request.security(syminfo.tickerid, "W", ta.highest(high, 52), lookahead=barmerge.lookahead_on)
// weekly_ll = request.security(syminfo.tickerid, "W", ta.lowest(low, 52), lookahead=barmerge.lookahead_on)
// weekly_hc = request.security(syminfo.tickerid, "W", ta.highest(close, 52), lookahead=barmerge.lookahead_on)
// weekly_lc = request.security(syminfo.tickerid, "W", ta.lowest(close, 52), lookahead=barmerge.lookahead_on)

// // Selezione dei valori in base all'input
// high_plot = high_low_close == "Highs/Lows" ? weekly_hh : weekly_hc
// low_plot = high_low_close == "Highs/Lows" ? weekly_ll : weekly_lc

// // === LINEE ORIZZONTALI ESTESE FINO AL PREZZO ATTUALE ===
// var line highLine = na
// var line lowLine = na

// // Linea Orizzontale per il 52W High
// if (na(highLine))
//     highLine := line.new(bar_index, high_plot, bar_index + 1, high_plot, color=color.green, width=2, style=line.style_dashed, extend=extend.right)
// else
//     line.set_y1(highLine, high_plot)
//     line.set_y2(highLine, high_plot)

// // Linea Orizzontale per il 52W Low
// if (na(lowLine))
//     lowLine := line.new(bar_index, low_plot, bar_index + 1, low_plot, color=color.red, width=2, style=line.style_dashed, extend=extend.right)
// else
//     line.set_y1(lowLine, low_plot)
//     line.set_y2(lowLine, low_plot)

// // Etichette per le linee orizzontali
// var label highLabel = na
// var label lowLabel = na

// if (na(highLabel))
//     highLabel := label.new(bar_index, high_plot, "52W High", color=color.green, textcolor=color.white, style=label.style_label_down, size=size.small)
// else
//     label.set_y(highLabel, high_plot)
//     label.set_x(highLabel, bar_index)

// if (na(lowLabel))
//     lowLabel := label.new(bar_index, low_plot, "52W Low", color=color.red, textcolor=color.white, style=label.style_label_up, size=size.small)
// else
//     label.set_y(lowLabel, low_plot)
//     label.set_x(lowLabel, bar_index)

// // Tracciamento delle Linee Estese
// plot(high_plot, title="52W High", color=color.green, style=plot.style_linebr)
// plot(low_plot, title="52W Low", color=color.red, style=plot.style_linebr)