
Strategi ini disebut strategi perdagangan robot MACD. Strategi ini mengendalikan risiko dengan menghitung hubungan antara garis cepat dan lambat dari indikator MACD, menilai waktu pasar untuk membeli dan menjual, dan mengambil tracking stop loss.
Strategi ini dikembangkan berdasarkan indikator MACD. Indikator MACD terdiri dari garis cepat dan garis lambat, garis cepat adalah rata-rata jangka pendek, garis lambat adalah rata-rata jangka panjang, dan hubungan keduanya mencerminkan keadaan jual beli di pasar.
Dalam strategi ini, jalur cepat dan lambat masing-masing dihitung dengan algoritma EMA, dan periode dapat disesuaikan. Untuk meningkatkan kualitas sinyal, jalur sinyal ditambahkan, dengan algoritma EMA untuk memproses nilai MACD dengan lebih halus lagi.
Dalam menentukan waktu untuk membeli, tidak hanya melihat cepat atau lambat garpu, tetapi juga untuk menilai apakah nilai mutlak MACD lebih besar dari garis beli yang disesuaikan. Jika terpenuhi, sinyal beli dikirimkan, dengan menggunakan tracking stop loss untuk mengendalikan risiko.
Pada saat menentukan waktu untuk menjual, untuk memenuhi kondisi yang sama dengan garis cepat lambat dan garis sinyal adalah positif, maka sinyal jual dikeluarkan dan posisi dihapus.
Strategi ini memiliki beberapa keuntungan:
Strategi ini juga memiliki beberapa risiko:
Risiko ini dapat dikurangi dengan penyesuaian parameter yang tepat, kombinasi indikator lain, dan sebagainya.
Strategi ini dapat dioptimalkan dari beberapa arah:
Strategi ini secara keseluruhan merupakan strategi pelacakan tren yang memiliki keandalan tinggi. Dengan menilai tren melalui indikator MACD, mengambil risiko pengendalian kerugian yang dilacak, dapat memperoleh pengembalian investasi yang stabil. Langkah NEXT adalah untuk mengoptimalkan parameter lebih lanjut, menggabungkan indikator lain, dan meningkatkan profitabilitas strategi dengan cara seperti pembelajaran mesin.
/*backtest
start: 2022-12-11 00:00:00
end: 2023-12-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy(shorttitle = "GBPUSD MACD", title = "GBPUSD 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.00045)
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, signal) and signal > 0
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)