Tren MACD Mengikuti Strategi

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

img

Gambaran umum

Strategi ini menerapkan tren setelah perdagangan pada indikator MACD. Ini mengidentifikasi arah tren menggunakan MACD dan dengan stop loss dinamis untuk mengunci keuntungan.

Logika Strategi

  1. Menghitung indikator Fast MA, Slow MA dan MACD. Fast MA menggunakan EMA 12 periode, Slow MA menggunakan EMA 26 periode. MACD adalah perbedaan antara Fast dan Slow MA.

  2. Setel garis beli dan jual. Membuat sinyal beli ketika MACD melintasi garis beli, Membuat sinyal jual ketika MACD melintasi di bawah garis jual.

  3. Setel stop loss dinamis setelah posisi pembukaan. Stop loss awal ditetapkan pada 95% dari harga masuk, dan akan naik seiring harga berjalan.

  4. Posisi tutup saat stop loss dipicu atau sinyal reverse muncul.

Analisis Keuntungan

  1. Menggunakan MACD untuk mengidentifikasi arah tren dapat secara efektif melacak tren.

  2. Stop loss dinamis dapat terus mengunci keuntungan dan menghindari kerugian yang diperbesar.

  3. Logika strategi sederhana dan jelas, mudah dimengerti dan otomatis untuk perdagangan kuantitatif.

Analisis Risiko

  1. MACD memiliki efek lag, mungkin melewatkan pembalikan tren jangka pendek.

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

  3. Masalah penyesuaian parameter. parameter MACD dan garis beli / jual membutuhkan pengujian dan optimasi konstan.

  4. Berfungsi lebih baik di pasar tren, mungkin memiliki kerugian di pasar bergolak.

Arahan Optimasi

  1. Mengoptimalkan parameter MACD untuk menemukan kombinasi terbaik.

  2. Uji metode stop loss yang berbeda, seperti titik tetap, berbasis ATR dll.

  3. Tambahkan kondisi filter menggunakan indikator lain untuk menghindari sinyal palsu, misalnya Bollinger Bands, RSI dll.

  4. Gabungkan dengan alat identifikasi tren, menyesuaikan parameter strategi secara dinamis berdasarkan tren vs pasar yang terikat rentang.

Ringkasan

Strategi ini memiliki logika yang jelas menggunakan MACD untuk melacak tren dan stop loss dinamis untuk mengunci keuntungan. Ini dapat secara efektif melacak pasar tren. Tetapi MACD memiliki masalah yang tertinggal, dan titik stop loss perlu dioptimalkan. Langkah selanjutnya adalah untuk menguji parameter lebih lanjut, mengoptimalkan mekanisme stop loss, menambahkan filter dengan indikator lain, untuk membuatnya kuat di berbagai kondisi pasar, meningkatkan stabilitas.


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