Trend MACD Mengikut Strategi

Penulis:ChaoZhang, Tarikh: 2023-11-16 17:42:09
Tag:

img

Ringkasan

Strategi ini melaksanakan trend selepas perdagangan pada penunjuk MACD. Ia mengenal pasti arah trend menggunakan MACD dan dengan stop loss dinamik untuk mengunci keuntungan.

Logika Strategi

  1. Mengira indikator MA pantas, MA perlahan dan MACD. MA pantas menggunakan EMA 12 tempoh, MA perlahan menggunakan EMA 26 tempoh. MACD adalah perbezaan antara MA pantas dan lambat.

  2. Tetapkan garis beli dan jual. Membuat isyarat beli apabila MACD melintasi garis beli, menghasilkan isyarat jual apabila MACD melintasi di bawah garis jual.

  3. Tetapkan stop loss dinamik selepas membuka kedudukan. Stop loss awal ditetapkan pada 95% daripada harga masuk, dan akan naik apabila harga berjalan.

  4. Kedudukan dekat apabila stop loss dicetuskan atau isyarat reverse muncul.

Analisis Kelebihan

  1. Menggunakan MACD untuk mengenal pasti arah trend dapat dengan berkesan mengesan trend.

  2. Stop loss dinamik boleh terus mengunci keuntungan dan mengelakkan kerugian yang diperbesar.

  3. Logik strategi adalah mudah dan jelas, mudah difahami dan automatik untuk perdagangan kuant.

Analisis Risiko

  1. MACD mempunyai kesan kelewatan, mungkin terlepas pembalikan trend jangka pendek.

  2. Stop loss yang terlalu longgar mungkin kehilangan beberapa keuntungan, terlalu ketat mungkin berhenti lebih awal.

  3. Masalah penyesuaian parameter. parameter MACD dan garis beli / jual memerlukan ujian dan pengoptimuman berterusan.

  4. Berfungsi lebih baik di pasaran yang sedang tren, mungkin mengalami kerugian di pasaran yang bergolak.

Arahan pengoptimuman

  1. Mengoptimumkan parameter MACD untuk mencari kombinasi terbaik.

  2. Uji kaedah stop loss yang berbeza, seperti titik tetap, berasaskan ATR dll.

  3. Tambah keadaan penapis menggunakan penunjuk lain untuk mengelakkan isyarat palsu, contohnya Bollinger Bands, RSI dll.

  4. Gabungkan dengan alat pengenalan trend, menyesuaikan parameter strategi secara dinamik berdasarkan trend vs pasaran terhad julat.

Ringkasan

Strategi ini mempunyai logik yang jelas untuk menggunakan MACD untuk mengesan trend dan stop loss dinamik untuk mengunci keuntungan. Ia dapat dengan berkesan mengesan pasaran trend. Tetapi MACD mempunyai isu yang tertinggal, dan titik stop loss perlu dioptimumkan. Langkah seterusnya adalah untuk menguji parameter lebih lanjut, mengoptimumkan mekanisme stop loss, menambah penapis dengan penunjuk lain, untuk menjadikannya kukuh di bawah keadaan pasaran yang berbeza, meningkatkan kestabilan.


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

//@version=3
strategy(shorttitle = "EURUSD MACD", title = "EURUSD MACD")
fastMA = input(title="Fast moving average",  defval = 12, minval = 7)
slowMA = input(title="Slow moving average",  defval = 26, minval = 7)
lastColor = yellow
[currMacd,_,_] = macd(close[0], fastMA, slowMA, 9)
[prevMacd,_,_] = macd(close[1], fastMA, slowMA, 9)
plotColor = currMacd > 0 ? currMacd > prevMacd ? lime : green : currMacd < prevMacd ? maroon : red
plot(currMacd, style = histogram, color = plotColor, linewidth = 3)
plot(0, title = "Zero line", linewidth = 1, color = gray)

//MACD
// Getting inputs
fast_length = input(title="Fast Length",  defval=12)
slow_length = input(title="Slow Length",  defval=26)
src = input(title="Source",  defval=close)
signal_length = input(title="Signal Smoothing",  minval = 1, maxval = 50, defval =9)
sma_source = input(title="Simple MA(Oscillator)", type=bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=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=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)
///END OF MACD

//Long and Close Long Lines
linebuy = input(title="Enter Long", type=float, defval=-0.0002)
linesell = input(title="Close Long", type=float, defval=0.0001)

//Plot Long and Close Long Lines
plot(linebuy,color=green),plot(linesell,color=red)


//Stop Loss Input
sl_inp = input(0.05, title='Stop Loss %', type=float)/100


//Order Conditions
longCond = crossover(currMacd, linebuy)
exitLong = crossover(currMacd, linesell)
stop_level = strategy.position_avg_price * (1 - sl_inp)


//Order Entries
strategy.entry("long", strategy.long,  when=longCond==true)
strategy.close("long", when=exitLong==true)
strategy.exit("Stop Loss", stop=stop_level)

Lebih lanjut