Strategi Mengikuti Trend MACD


Tarikh penciptaan: 2023-12-11 14:57:00 Akhirnya diubah suai: 2023-12-11 14:57:00
Salin: 0 Bilangan klik: 649
1
fokus pada
1621
Pengikut

Strategi Mengikuti Trend MACD

Gambaran keseluruhan

Strategi mengikuti trend MACD adalah strategi perdagangan kuantitatif berdasarkan indikator MACD. Strategi ini menilai trend pasaran dengan mengenal pasti isyarat garpu emas dan garpu mati dalam indikator MACD, untuk mengesan trend harga saham.

Prinsip Strategi

Logik utama strategi trend-following MACD adalah:

  1. Hitung talian MACD dan talian isyarat.
  2. Apabila garis MACD melangkaui 0 dari bawah ke atas, rekodkan titik tertinggi pada masa ini dan tunggu isyarat garpu mati.
  3. Apabila garis MACD turun ke bawah dari atas ke bawah, catat titik terendah pada masa ini dan tunggu isyarat garpu emas.
  4. Apabila berlaku garpu emas, catat harga penutupan semasa sebagai titik masuk tambahan, set titik hentian, bukaan lebih banyak.
  5. Apabila berlaku dead fork, catat harga penutupan semasa sebagai titik masuk shorting, tetapkan titik henti rugi, dan buka posisi shorting.
  6. Apabila memegang posisi berbilang, jika kadar pulangan mencapai sasaran yang ditetapkan atau penarikan balik mencapai titik berhenti, kedudukan kosong berakhir dengan keuntungan.
  7. Apabila memegang posisi short term, jika kadar keuntungan mencapai sasaran yang ditetapkan atau penarikan balik mencapai titik berhenti, kedudukan kosong akan berakhir dengan keuntungan.

Melalui mekanisme trend-tracking ini, strategi ini dapat menangkap perubahan trend pasaran tepat pada masanya dan menghasilkan keuntungan.

Analisis kelebihan

Strategi mengikuti trend MACD mempunyai kelebihan berikut:

  1. Sumber isyarat strategi adalah satu-satunya yang jelas dan dihasilkan secara langsung oleh penunjuk MACD, mengelakkan gangguan isyarat.
  2. Menggunakan ciri-ciri cepat dan perlahan garpu mati garpu MACD untuk menentukan arah trend pasaran, untuk menentukan ketepatan.
  3. Ia juga boleh digunakan untuk menjejaki perubahan trend dan menjejaki keuntungan.
  4. Ia adalah satu-satunya cara untuk mengawal risiko dan menghentikan kerugian.

Analisis risiko

Terdapat juga risiko yang berkaitan dengan strategi trend-following MACD:

  1. Indeks MACD mudah menghasilkan isyarat palsu, yang boleh menyebabkan kerugian operasi ultra-pendek.
  2. Stop loss yang tidak betul boleh meningkatkan kerugian tunggal.
  3. Ia adalah sukar untuk mengimbangi antara kadar keuntungan dan titik-titik kerugian, dan terdapat risiko bahawa terlalu banyak pengesanan akan menyebabkan kerugian.

Mengenai risiko tersebut, langkah-langkah pengoptimuman berikut boleh diambil:

  1. Gabungan dengan petunjuk lain untuk menyaring isyarat palsu.
  2. Dinamika penyesuaian titik henti.
  3. Optimumkan parameter untuk mengesan kadar keuntungan dan titik henti kerugian.

Arah pengoptimuman

Strategi untuk mengesan trend MACD boleh dioptimumkan dengan:

  1. Mengoptimumkan parameter penunjuk MACD, mengurangkan kadar isyarat palsu. MACD yang boleh diuji dengan parameter kitaran yang berbeza.

  2. Menambah jumlah transaksi dan lain-lain indikator penapis isyarat. Anda boleh menetapkan syarat jumlah transaksi minimum.

  3. Tetapkan mekanisme hentian pengesanan yang dinamik. Titik hentian boleh disesuaikan dalam masa nyata mengikut kadar turun naik.

  4. Optimumkan logik keputusan isyarat untuk membuka kedudukan. Anda boleh menetapkan syarat isyarat yang lebih ketat.

  5. Dengan menggunakan model pembelajaran mesin untuk memfilter isyarat, model boleh dilatih untuk menilai kebolehpercayaan isyarat.

ringkaskan

Strategi mengesan trend MACD secara keseluruhan adalah strategi kuantitatif yang lebih matang. Strategi ini menggunakan indikator MACD untuk menentukan arah trend pasaran, dengan kawalan risiko mekanisme hentian, dapat mengesan trend harga saham dengan berkesan. Tetapi indikator MACD sendiri juga mempunyai kelemahan tertentu, mudah menghasilkan isyarat palsu.

Kod sumber strategi
/*backtest
start: 2023-11-10 00:00:00
end: 2023-12-10 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("MACD Cross Strategy", overlay=true)

// Get MACD values
[macdLine, signalLine, _] = ta.macd(close, 12, 26, 9)
var float entryLongPrice = na
var float entryShortPrice = na

var float highestLongProfit = 0
var float highestShortProfit = 0

var float highestMACD = 0
var float lowestMACD = 0
var bool haveOpenedLong = false
var bool haveOpenedShort = false

var float stoploss = 0.04 // To be adjust for different investment
var float minProfit = 0.05 // To be adjust for different investment

if macdLine > 0
    lowestMACD := 0
    highestMACD := math.max(highestMACD, macdLine)
    haveOpenedShort := false
else
    highestMACD := 0
    lowestMACD := math.min(lowestMACD, macdLine)
    haveOpenedLong := false

// Enter long position when MACD line crosses above the signal line
if ta.crossover(macdLine, signalLine) and macdLine < highestMACD and macdLine > 0 and haveOpenedLong == false
    strategy.entry("Long", strategy.long)
    strategy.exit("Exit Long", from_entry = "Long", stop=close*(1 - stoploss))
    entryLongPrice := close
    haveOpenedLong := true

if ta.crossunder(macdLine, signalLine) and macdLine > lowestMACD and macdLine < 0 and haveOpenedShort == false
    strategy.entry("Short", strategy.short)
    strategy.exit("Exit Short", from_entry = "Short", stop=close*(1 + stoploss))
    entryShortPrice := close
    haveOpenedShort := true

// log.info("entryLongPrice:{0}", entryLongPrice)
if strategy.position_size > 0
    profit = close - entryLongPrice
    log.info("profit:{0}", profit)
    if profit > 0
        highestLongProfit := math.max(highestLongProfit, profit)
        if profit / entryLongPrice > minProfit and highestLongProfit * 0.8 > profit
            strategy.close("Long")
            highestLongProfit := 0

if strategy.position_size < 0
    profit = entryShortPrice - close
    if profit > 0
        highestShortProfit := math.max(highestShortProfit, profit)
        log.info("highestShortProfit={0}, profit={1}", highestShortProfit, profit)
        if profit / entryShortPrice > minProfit and highestShortProfit * 0.8 > profit
            strategy.close("Short")
            highestShortProfit := 0