Strategi Penjejakan Trend MACD Golden Cross dan Dead Cross


Tarikh penciptaan: 2023-12-22 11:45:54 Akhirnya diubah suai: 2023-12-22 11:45:54
Salin: 1 Bilangan klik: 1112
1
fokus pada
1623
Pengikut

Strategi Penjejakan Trend MACD Golden Cross dan Dead Cross

Gambaran keseluruhan

Strategi ini menilai arah trend melalui mata wang emas MACD, dan menghentikan kerugian dengan mata wang ATR, untuk mencapai perdagangan yang mengikuti trend. Kata-kata mata wang emas dalam nama strategi menonjol menggunakan isyarat mata wang emas MACD.

Prinsip Strategi

Apabila garis MACD dari bawah ke atas melintasi garis Signal dan berubah menjadi nilai positif menghasilkan isyarat beli, ini adalah isyarat garpu emas, yang menunjukkan trend kenaikan harga saham terbentuk. Apabila garis MACD dari atas ke bawah melintasi garis Signal dan berubah menjadi nilai negatif menghasilkan isyarat jual, ini adalah isyarat garpu mati, yang menunjukkan trend penurunan harga saham terbentuk.

Strategi ini adalah menggunakan prinsip ini, melakukan lebih banyak ketika garpu emas, melakukan kosong ketika garpu mati, untuk mencapai trend. Pada masa yang sama, strategi ini juga memperkenalkan indikator ATR untuk mengira stop loss stop loss, menyelesaikan pembinaan sistem perdagangan.

Khususnya, strategi pertama mengira indikator MACD standard seperti rata-rata bergerak cepat, rata-rata bergerak perlahan, perbezaan MACD, dan garis isyarat. Kemudian berdasarkan lima isyarat yang dipilih: isyarat lanjutan, isyarat berbalik, isyarat grafik tiang, persimpangan poros MACD, persimpangan poros sinyal.

Analisis kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Menggunakan petunjuk MACD untuk menentukan arah trend adalah tepat dan boleh dipercayai, MACD telah menonjol dalam menentukan trend selama bertahun-tahun.

  2. Tetapan stop-loss yang digabungkan dengan indikator ATR dapat mengawal kadar risiko dan pulangan perdagangan tunggal dengan berkesan, mengurangkan kemungkinan kerugian.

  3. Terdapat lima pilihan isyarat yang boleh dipilih, yang membolehkan anda menggunakan isyarat yang lebih sesuai untuk pasaran yang berbeza, meningkatkan kebolehpasaran strategi.

  4. Lebih banyak parameter boleh dimasukkan, dan hasil dagangan yang lebih baik boleh dicapai dengan mengoptimumkan parameter.

Risiko dan Penyelesaian

Strategi ini mempunyai beberapa risiko:

  1. Indeks MACD mudah menghasilkan isyarat palsu yang boleh menyebabkan kerugian yang tidak perlu. Ia boleh digabungkan dengan isyarat penapis indikator lain.

  2. Tanda ATR hanya memodelkan turun naik dalam tempoh baru-baru ini, dan tidak dapat membuat stop loss yang tepat untuk keadaan yang melampau. Anda boleh memperkenalkan stop loss dinamik untuk menyelesaikannya.

  3. Kesan isyarat yang dipilih mungkin tidak stabil, dan banyak pengulangan diperlukan untuk menentukan parameter terbaik.

  4. Parameter isyarat dan parameter pengurusan risiko perlu dioptimumkan pada masa yang sama, jika tidak, sukar untuk mencapai hasil yang optimum. Adalah disyorkan untuk menggunakan kaedah pengoptimuman langkah demi langkah.

Cadangan Optimasi

Strategi ini juga boleh dioptimumkan dengan:

  1. Cuba rata-rata bergerak lain, seperti TMA, HullMA, dan lain-lain, menapis isyarat MACD.

  2. Mencuba mekanisme Hentikan Kerosakan Dinamik untuk menangani lebih baik pergerakan yang melampau.

  3. Untuk mengoptimumkan kombinasi parameter tradisional MACD, cari parameter yang lebih baik.

  4. Menggunakan kaedah pembelajaran mesin untuk mencari ATR yang optimum untuk pengurusan risiko yang lebih baik.

  5. Lima jenis isyarat diuji semula untuk menentukan isyarat yang terbaik.

  6. Melatih rangkaian saraf untuk menilai kesan jenis isyarat dan mencari isyarat baru berdasarkan MACD.

ringkaskan

Strategi untuk mengesan trend MACD Gold Fork Dead Fork, menggunakan petunjuk MACD untuk menentukan arah trend, dengan penunjuk ATR untuk menghentikan kerugian, dapat memperoleh peluang perdagangan trend secara berkesan. Strategi ini mempunyai beberapa kelebihan seperti parameter penunjuk yang boleh dioptimumkan, mekanisme penghentian yang lengkap, jenis isyarat yang boleh dipilih.

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © vuagnouxb

//@version=4
strategy("BV's MACD SIGNAL TESTER", overlay=true)

//------------------------------------------------------------------------
//----------            Confirmation Calculation              ------------ INPUT
//------------------------------------------------------------------------

// Getting inputs
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
src = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=false)

// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00

// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal

// plot(hist, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 )
// plot(macd, title="MACD", color=col_macd, transp=0)
// plot(signal, title="Signal", color=col_signal, transp=0)

// -- Trade entry signals

signalChoice = input(title = "Choose your signal", defval = "Continuation", options = ["Continuation", "Reversal", "Histogram", "MACD Line ZC", "Signal Line ZC"])

continuationSignalLong = signalChoice == "Continuation" ? crossover(macd, signal) and macd > 0 :
   signalChoice == "Reversal" ? crossover(macd, signal) and macd < 0 : 
   signalChoice == "Histogram" ? crossover(hist, 0) : 
   signalChoice == "MACD Line ZC" ? crossover(macd, 0) :
   signalChoice == "Signal Line ZC" ? crossover(signal, 0) :
   false
   
continuationSignalShort = signalChoice == "Continuation" ? crossunder(macd, signal) and macd < 0 :
   signalChoice == "Reversal" ? crossover(signal, macd) and macd > 0 : 
   signalChoice == "Histogram" ? crossunder(hist, 0) : 
   signalChoice == "MACD Line ZC" ? crossunder(macd, 0) :
   signalChoice == "Signal Line ZC" ? crossunder(signal, 0) :
   false

longCondition = continuationSignalLong

shortCondition = continuationSignalShort

//------------------------------------------------------------------------
//----------             ATR MONEY MANAGEMENT                 ------------
//------------------------------------------------------------------------

SLmultiplier = 1.5
TPmultiplier = 1

JPYPair = input(type = input.bool, title = "JPY Pair ?", defval = false)
pipAdjuster = JPYPair ? 1000 : 100000


ATR = atr(14) * pipAdjuster // 1000 for jpy pairs : 100000
SL = ATR * SLmultiplier
TP = ATR * TPmultiplier

//------------------------------------------------------------------------
//----------                  TIME FILTER                     ------------
//------------------------------------------------------------------------

YearOfTesting = input(title = "How many years of testing ?" , type = input.integer, defval = 3)

_time = 2020 - YearOfTesting

timeFilter = (year > _time) 

//------------------------------------------------------------------------
//---------                 ENTRY FUNCTIONS                    ----------- INPUT
//------------------------------------------------------------------------

if (longCondition and timeFilter)  
    strategy.entry("Long", strategy.long)

if (shortCondition and timeFilter) 
    strategy.entry("Short", strategy.short)
    
//------------------------------------------------------------------------
//---------                 EXIT  FUNCTIONS                    -----------
//------------------------------------------------------------------------


strategy.exit("ATR", from_entry = "Long", profit = TP, loss = SL)  

strategy.exit("ATR", from_entry = "Short", profit = TP, loss = SL)