Strategi Trading Robot MACD

Penulis:ChaoZhang, Tanggal: 2023-12-18 17:30:15
Tag:

img

Gambaran umum

Strategi ini disebut Strategi Perdagangan Robot MACD. Ini menentukan waktu pembelian dan penjualan di pasar dengan menghitung hubungan antara garis cepat dan garis lambat indikator MACD, dan mengadopsi stop loss untuk mengendalikan risiko.

Prinsip Strategi

Strategi ini terutama dikembangkan berdasarkan indikator MACD. Indikator MACD terdiri dari garis cepat dan garis lambat. Garis cepat adalah rata-rata bergerak jangka pendek dan garis lambat adalah rata-rata bergerak jangka panjang. Hubungan antara keduanya mencerminkan keadaan pembelian dan penjualan di pasar. Ketika garis cepat melintasi di atas garis lambat, itu adalah sinyal beli, dan ketika melintasi di bawahnya, itu adalah sinyal jual.

Dalam strategi ini, garis cepat dan garis lambat dihitung menggunakan algoritma EMA masing-masing, dan periode dapat disesuaikan.

Ketika menentukan waktu pembelian, periksa tidak hanya salib emas dari garis cepat dan lambat, tetapi juga apakah nilai absolut MACD lebih besar dari garis beli yang disesuaikan.

Ketika menentukan waktu penjualan, garis mati garis cepat dan lambat dan garis sinyal positif harus dipenuhi pada saat yang sama, maka sinyal jual dikeluarkan untuk menutup posisi.

Analisis Keuntungan

Strategi ini memiliki keuntungan berikut:

  1. Menggunakan indikator MACD untuk menentukan sinyal perdagangan dengan keandalan tinggi
  2. Meningkatkan jalur sinyal meningkatkan kualitas sinyal
  3. Trailing stop loss secara efektif mengendalikan risiko
  4. Lini beli yang dapat disesuaikan menyesuaikan sensitivitas strategi
  5. Semua kondisi didasarkan pada perhitungan indikator, tidak dipengaruhi oleh faktor eksternal

Analisis Risiko

Strategi ini juga memiliki beberapa risiko:

  1. Indikator MACD tertinggal, mungkin kehilangan peluang perdagangan jangka pendek
  2. Pengaturan titik stop loss yang tidak benar dapat menyebabkan kerugian yang tidak perlu
  3. Parameter Tuning membutuhkan banyak waktu untuk pengujian dan penyesuaian
  4. Dampak dari biaya transaksi dan slip

Risiko ini dapat dikurangi dengan menyesuaikan parameter dengan tepat, menggabungkan indikator lain, dll.

Arahan Optimasi

Strategi dapat dioptimalkan dalam arah berikut:

  1. Gabungkan dengan indikator lain untuk menyaring sinyal, seperti KDJ, RSI, dll.
  2. Tambahkan algoritma pembelajaran mesin untuk menentukan titik masuk dan keluar
  3. Gunakan stop loss dinamis alih-alih stop loss statis
  4. Uji dan optimalkan parameter MACD dan garis beli
  5. Pertimbangkan dampak biaya transaksi untuk menyesuaikan strategi

Kesimpulan

Secara keseluruhan, ini adalah strategi trend-mengikuti dengan keandalan tinggi. Dengan menilai tren melalui indikator MACD dan mengendalikan risiko dengan trailing stop loss, pengembalian investasi yang stabil dapat diperoleh.


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

Lebih banyak