
Strategi ini menggunakan indikator MACD untuk mengidentifikasi arah tren dan mengunci keuntungan dengan stop loss dinamis.
Hitung indikator garis cepat, garis lambat, dan MACD. Garis cepat menggunakan rata-rata bergerak indeks 12 periode, dan garis lambat menggunakan rata-rata bergerak indeks 26 periode. MACD adalah perbedaan antara garis cepat dan garis lambat.
Setting buy in line and sell out line. Menghasilkan sinyal buy ketika MACD melewati buy in line; menghasilkan sinyal sell ketika MACD melewati sell out line.
Setelah membuka posisi, setel stop loss dinamis, dan ikuti garis stop loss. Nilai awal garis stop loss adalah 95% dari harga pembukaan posisi, untuk mengunci keuntungan seiring pergerakan harga ke garis stop loss.
Bila sinyal stop loss atau reversal ditimbulkan maka posisi akan dihentikan.
Menggunakan indikator MACD untuk mengidentifikasi arah tren, dapat secara efektif melacak tren.
Mekanisme Stop Loss Dinamis dapat terus mengunci keuntungan dan mencegah pertumbuhan kerugian.
Logika strategi yang sederhana dan jelas, mudah dipahami implementasi, cocok untuk eksekusi otomatis transaksi kuantitatif.
Indeks MACD berada di belakang dan mungkin melewatkan pembalikan tren jangka pendek.
Terlalu longgar mungkin kehilangan sebagian keuntungan, terlalu ketat mungkin terlambat.
Masalah parameter tuning, parameter MACD dan garis jual beli perlu terus diuji dan dioptimalkan.
Efek yang lebih baik dalam kondisi tren, ada risiko kerugian dalam kondisi goyah.
Mengoptimalkan parameter MACD, mencari kombinasi parameter terbaik.
Uji berbagai metode stop loss, seperti stop loss poin, stop loss ATR, dan lain-lain.
Menambahkan kondisi penyaringan, menggunakan indikator lain untuk menghindari kesalahan perdagangan. Misalnya, Bollinger Bands, RSI, dll.
Menggabungkan indikator penilaian tren, mengidentifikasi tren dan tren yang bergolak, dan parameter strategi penyesuaian dinamis.
Strategi ini secara keseluruhan memiliki ide yang jelas, menggunakan indikator MACD untuk melacak tren, dan menggunakan stop loss dinamis untuk mengunci keuntungan, dapat secara efektif melacak tren. Namun, indikator MACD memiliki masalah keterlambatan, dan pengaturan titik stop loss juga perlu dioptimalkan. Langkah selanjutnya adalah untuk lebih menguji parameter pengaturan, mengoptimalkan mekanisme stop loss, dan bekerja dengan indikator lainnya untuk memfilter, membuat strategi lebih cocok untuk berbagai situasi, meningkatkan stabilitas strategi.
/*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)