Strategi kuantitatif pengesanan aliran MACD dinamik berbilang peringkat digabungkan dengan sistem analisis sambungan tinggi dan rendah selama 52 minggu

MACD MA EMA SMA RSI
Tarikh penciptaan: 2024-12-27 14:27:51 Akhirnya diubah suai: 2024-12-27 14:27:51
Salin: 0 Bilangan klik: 427
1
fokus pada
1617
Pengikut

Strategi kuantitatif pengesanan aliran MACD dinamik berbilang peringkat digabungkan dengan sistem analisis sambungan tinggi dan rendah selama 52 minggu

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan kuantitatif yang menggabungkan isyarat persilangan MACD pelbagai kerangka masa dengan tekanan sokongan dinamik 52 minggu. Strategi ini mengesahkan isyarat perdagangan melalui persilangan penunjuk MACD dalam dua tempoh masa garis pusingan dan garis matahari, sambil menggunakan garis tekanan sokongan dinamik yang terbentuk pada 52 minggu untuk membantu menilai pergerakan pasaran, sehingga membuat keputusan perdagangan yang lebih mantap.

Prinsip Strategi

Strategi ini berdasarkan kepada logik teras berikut:

  1. Isyarat masuk disahkan bersama oleh garpu emas MACD garis pusingan dan garpu emas MACD garis matahari, yang memerlukan kedua-dua indikator MACD tempoh masa untuk melihat lebih banyak isyarat.
  2. Isyarat keluar dicetuskan oleh forks mati MACD, dan apabila indikator MACD muncul, ia akan keluar.
  3. Dinamika Stop Loss diletakkan pada kedudukan harga terendah pada hari isyarat keluar.
  4. Garis rendah tinggi 52 minggu dihasilkan secara dinamik berdasarkan penanda aras yang dikira oleh pengguna ((harga terendah tertinggi atau harga penutupan) dan membentuk titik rujukan penting ke kanan.
  5. Strategi ini menggunakan pengurusan kedudukan 5% dengan kos transaksi tunggal 1 unit mata wang.

Kelebihan Strategik

  1. Pengesahan bingkai masa berbilang: Menapis penembusan palsu melalui resonansi isyarat MACD pada kedua-dua lapisan garis pusingan dan garis matahari, meningkatkan ketepatan perdagangan.
  2. Tekanan sokongan dinamik: Garis rendah dan tinggi 52 minggu memberikan rujukan harga psikologi pasaran yang penting untuk menilai kekuatan trend.
  3. Kawalan risiko yang sempurna: Menggunakan mekanisme hentian kerugian yang dinamik, menyesuaikan kedudukan hentian kerugian mengikut turun naik pasaran, untuk tujuan melindungi keuntungan.
  4. Visibiliti yang tinggi: Memaparkan harga dan isyarat utama melalui antara muka grafik yang jelas, yang memudahkan pedagang untuk memahami dan bertindak.
  5. Sistem perdagangan: Peraturan masuk dan keluar yang ketat mengelakkan gangguan emosi manusia dan meningkatkan objektifiti perdagangan.

Risiko Strategik

  1. Tidak berlaku untuk pasaran goyah: Dalam pasaran goyah, perpaduan MACD yang kerap boleh menyebabkan terlalu banyak isyarat palsu.
  2. Risiko ketinggalan zaman: Indeks MACD sendiri mempunyai ketinggalan zaman, mungkin terlepas masa kemasukan terbaik.
  3. Risiko pengurusan wang: kedudukan peratusan tetap mungkin tidak fleksibel dalam keadaan pasaran tertentu.
  4. Risiko jurang pasaran: Sekiranya berlaku lonjakan besar, harga hentian sebenar mungkin jauh lebih rendah daripada yang dijangkakan.
  5. Risiko pengoptimuman parameter: Parameter yang terlalu optimum boleh menyebabkan masalah overfit.

Arah pengoptimuman strategi

  1. Pengenalan analisis hubungan kuantiti-harga: Pertimbangkan untuk menambah pengesahan kuantiti transaksi berdasarkan isyarat MACD sedia ada.
  2. Mengoptimumkan pengurusan kedudukan: Reka bentuk mekanisme pengurusan kedudukan yang lebih fleksibel, menyesuaikan diri dengan pergerakan turun naik pasaran.
  3. Memperbaiki mekanisme hentian kerugian: boleh mempertimbangkan untuk menambah hentian bergerak atau hentian dinamik berasaskan ATR.
  4. Menambah penapisan keadaan pasaran: memperkenalkan penunjuk kekuatan trend, hanya mengambil kedudukan di pasaran trend yang kuat.
  5. Membangunkan mekanisme penapisan isyarat: reka bentuk syarat pengesahan isyarat yang lebih ketat, mengurangkan isyarat palsu.

ringkaskan

Strategi ini membina satu sistem perdagangan yang mengesan trend yang lengkap dengan menggabungkan isyarat persilangan pelbagai kerangka masa MACD dengan garis tekanan sokongan dinamik 52 minggu tinggi rendah. Kelebihan strategi ini adalah kebolehpercayaan pengesahan isyarat dan integriti kawalan risiko, tetapi masih perlu berhati-hati untuk menangani risiko pasaran yang bergolak dan ketinggalan.

Kod 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)