Sumber daya yang dimuat... Pemuatan...

Multi-Level Dynamic MACD Trend Following Strategy dengan Sistem Analisis Ekstensi Tinggi/Rendah 52-Minggu

Penulis:ChaoZhang, Tanggal: 2024-12-27 14:27:51
Tag:MACDMAEMASMARSI

img

Gambaran umum

Strategi ini menggabungkan sinyal silang MACD dari beberapa kerangka waktu dengan level support dan resistance dinamis berdasarkan high dan low 52 minggu. Strategi ini mengkonfirmasi sinyal trading melalui crossover MACD pada kedua kerangka waktu mingguan dan harian sambil memanfaatkan garis support dan resistance dinamis yang terbentuk dari high dan low 52 minggu untuk membantu dalam analisis tren pasar, memungkinkan keputusan trading yang lebih kuat. Strategi ini menggunakan mekanisme stop-loss dinamis untuk mengontrol risiko secara efektif sambil memastikan keuntungan.

Prinsip Strategi

Strategi ini didasarkan pada logika inti berikut:

  1. Sinyal masuk dikonfirmasi oleh kedua penyeberangan emas MACD mingguan dan harian, yang membutuhkan sinyal bullish pada kedua kerangka waktu.
  2. Sinyal keluar dipicu oleh penyeberangan kematian MACD harian, dengan posisi ditutup begitu sinyal menurun muncul.
  3. Stop-loss dinamis ditetapkan pada harga terendah pada hari ketika sinyal keluar dipicu.
  4. Garis tertinggi/rendah 52 minggu secara dinamis dihasilkan berdasarkan basis perhitungan yang dipilih pengguna (harga tertinggi/rendah atau harga penutupan) dan diperpanjang ke kanan sebagai tingkat referensi penting.
  5. Strategi ini menggunakan manajemen posisi 5% dengan biaya transaksi 1 unit mata uang per perdagangan.

Keuntungan Strategi

  1. Konfirmasi multi-frame waktu: Menyaring false breakout melalui resonansi sinyal MACD pada tingkat mingguan dan harian, meningkatkan akurasi perdagangan.
  2. Dukungan/resistensi dinamis: Garis tinggi/rendah 52 minggu memberikan referensi harga psikologis yang penting, membantu menilai kekuatan tren.
  3. Pengendalian risiko yang komprehensif: Mekanisme stop-loss dinamis menyesuaikan dengan fluktuasi pasar untuk melindungi keuntungan.
  4. Visualisasi yang tinggi: Antarmuka grafis yang jelas menampilkan tingkat dan sinyal harga utama, memudahkan pemahaman dan operasi.
  5. Perdagangan sistematis: Aturan masuk/keluar yang ketat menghindari gangguan emosional, meningkatkan objektivitas perdagangan.

Risiko Strategi

  1. Tidak cocok untuk pasar range: MACD crossover yang sering terjadi di pasar sideways dapat menghasilkan sinyal palsu yang berlebihan.
  2. Risiko keterlambatan: keterlambatan yang melekat pada indikator MACD mungkin kehilangan titik masuk yang optimal.
  3. Risiko pengelolaan uang: Posisi proporsi tetap mungkin kurang fleksibel dalam kondisi pasar tertentu.
  4. Risiko kesenjangan pasar: Kesenjangan besar dapat mengakibatkan harga stop loss yang sebenarnya jauh di bawah tingkat yang diharapkan.
  5. Risiko optimasi parameter: Optimasi yang berlebihan dapat menyebabkan masalah overfit.

Arah Optimasi Strategi

  1. Menggabungkan analisis hubungan volume-harga: Pertimbangkan untuk menambahkan konfirmasi volume ke sinyal MACD yang ada.
  2. Mengoptimalkan manajemen posisi: Merancang mekanisme manajemen posisi yang lebih fleksibel, menyesuaikan secara dinamis dengan volatilitas pasar.
  3. Meningkatkan mekanisme stop-loss: Pertimbangkan untuk menambahkan stop trailing atau stop dinamis berbasis ATR.
  4. Tambahkan penyaringan lingkungan pasar: Memperkenalkan indikator kekuatan tren, hanya membuka posisi di pasar tren yang kuat.
  5. Mengembangkan mekanisme penyaringan sinyal: Merancang kondisi konfirmasi sinyal yang lebih ketat untuk mengurangi sinyal palsu.

Ringkasan

Strategi ini membangun sistem perdagangan trend-mengikuti lengkap dengan menggabungkan multi-frame timeframe sinyal silang MACD dengan line support dan resistance dinamis berdasarkan 52-minggu tertinggi dan terendah. Kekuatannya terletak pada keandalan konfirmasi sinyal dan kontrol risiko yang komprehensif, meskipun perhatian harus dibayar untuk berkisar pasar dan risiko lag. Melalui optimalisasi dan perbaikan terus-menerus, strategi ini menunjukkan janji untuk mencapai pengembalian yang stabil di pasar tren.


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


Berkaitan

Lebih banyak