Sumber dimuat naik... memuat...

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

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

img

Ringkasan

Strategi ini menggabungkan isyarat silang MACD dari pelbagai bingkai masa dengan tahap sokongan dan rintangan dinamik berdasarkan paras tertinggi dan terendah 52 minggu. Ia mengesahkan isyarat perdagangan melalui silang MACD pada bingkai masa mingguan dan harian sambil menggunakan garis sokongan dan rintangan dinamik yang dibentuk oleh paras tertinggi dan terendah 52 minggu untuk membantu dalam analisis trend pasaran, membolehkan keputusan perdagangan yang lebih kukuh. Strategi menggunakan mekanisme stop-loss dinamik untuk mengawal risiko dengan berkesan sambil memastikan keuntungan.

Prinsip Strategi

Strategi ini berdasarkan logik teras berikut:

  1. Isyarat kemasukan disahkan oleh kedua-dua salib emas MACD mingguan dan harian, memerlukan isyarat kenaikan pada kedua-dua jangka masa.
  2. Isyarat keluar dipicu oleh persilangan kematian MACD harian, dengan kedudukan ditutup sebaik sahaja isyarat penurunan muncul.
  3. Stop-loss dinamik ditetapkan pada harga terendah pada hari apabila isyarat keluar dicetuskan.
  4. Garis tertinggi/rendah 52 minggu dihasilkan secara dinamik berdasarkan asas pengiraan yang dipilih oleh pengguna (tinggi/rendah atau harga penutupan) dan meluas ke kanan sebagai paras rujukan penting.
  5. Strategi ini menggunakan pengurusan kedudukan 5% dengan kos transaksi 1 unit mata wang setiap perdagangan.

Kelebihan Strategi

  1. Pengesahan pelbagai jangka masa: Menapis pecah palsu melalui resonans isyarat MACD pada tahap mingguan dan harian, meningkatkan ketepatan perdagangan.
  2. Sokongan / rintangan dinamik: Garis tinggi / rendah 52 minggu memberikan rujukan harga psikologi yang penting, membantu menilai kekuatan trend.
  3. Kawalan risiko yang komprehensif: Mekanisme stop-loss dinamik menyesuaikan dengan turun naik pasaran untuk melindungi keuntungan.
  4. Visualisasi yang tinggi: Antara muka grafik yang jelas memaparkan tahap dan isyarat harga utama, memudahkan pemahaman dan operasi.
  5. Perdagangan sistematik: Peraturan kemasukan / keluar yang ketat mengelakkan gangguan emosi, meningkatkan objektif perdagangan.

Risiko Strategi

  1. Tidak sesuai untuk pasaran berkisar: Persalinan MACD yang kerap di pasaran sampingan boleh menghasilkan isyarat palsu yang berlebihan.
  2. Risiko kelewatan: Kelewatan yang melekat pada penunjuk MACD mungkin terlepas titik kemasukan yang optimum.
  3. Risiko pengurusan wang: Penempatan perkadaran tetap mungkin kurang fleksibel dalam keadaan pasaran tertentu.
  4. Risiko jurang pasaran: jurang yang besar boleh menyebabkan harga stop-loss sebenar jauh di bawah tahap yang dijangkakan.
  5. Risiko pengoptimuman parameter: Pengoptimuman berlebihan boleh menyebabkan masalah pemasangan berlebihan.

Arahan Pengoptimuman Strategi

  1. Memasukkan analisis hubungan harga-volume: Pertimbangkan untuk menambah pengesahan jumlah kepada isyarat MACD yang sedia ada.
  2. Mengoptimumkan pengurusan kedudukan: Merancang mekanisme pengurusan kedudukan yang lebih fleksibel, menyesuaikan secara dinamik dengan turun naik pasaran.
  3. Mempertingkatkan mekanisme stop-loss: Pertimbangkan untuk menambah stop trailing atau stop dinamik berasaskan ATR.
  4. Tambah penapisan persekitaran pasaran: Memperkenalkan penunjuk kekuatan trend, hanya membuka kedudukan di pasaran trend yang kuat.
  5. Membangunkan mekanisme penapisan isyarat: Merancang keadaan pengesahan isyarat yang lebih ketat untuk mengurangkan isyarat palsu.

Ringkasan

Strategi ini membina sistem perdagangan trend berikut yang lengkap dengan menggabungkan isyarat silang MACD pelbagai jangka masa dengan garis sokongan dan rintangan dinamik berdasarkan paras tertinggi dan terendah 52 minggu. Kekuatannya terletak pada kebolehpercayaan pengesahan isyarat dan kawalan risiko yang komprehensif, walaupun perlu memberi perhatian kepada pelbagai risiko pasaran dan lag. Melalui pengoptimuman dan peningkatan yang berterusan, strategi ini menunjukkan janji untuk mencapai pulangan yang stabil di pasaran trend.


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