Strategi Perdagangan Robot MACD


Tanggal Pembuatan: 2023-12-18 17:30:15 Akhirnya memodifikasi: 2023-12-18 17:30:15
menyalin: 0 Jumlah klik: 722
1
fokus pada
1621
Pengikut

Strategi Perdagangan Robot MACD

Ringkasan

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.

Prinsip Strategi

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.

Analisis Keunggulan

Strategi ini memiliki beberapa keuntungan:

  1. Menggunakan indikator MACD untuk menentukan waktu jual beli, lebih dapat diandalkan
  2. Menambahkan sinyal untuk meningkatkan kualitas sinyal
  3. Pelacakan Stop Loss dan Pengendalian Resiko
  4. Garis masuk dapat disesuaikan dengan sensitivitas strategi
  5. Kondisi berdasarkan indikator, tanpa pengaruh eksternal

Analisis risiko

Strategi ini juga memiliki beberapa risiko:

  1. Indeks MACD terlambat, mungkin kehilangan kesempatan untuk melakukan operasi garis pendek
  2. Setting Stop Loss yang tidak tepat dapat menyebabkan kerugian yang tidak perlu
  3. Parameter Tuning membutuhkan banyak waktu untuk melakukan tes dan penyesuaian
  4. Efek dari biaya transaksi dan slippage

Risiko ini dapat dikurangi dengan penyesuaian parameter yang tepat, kombinasi indikator lain, dan sebagainya.

Arah optimasi

Strategi ini dapat dioptimalkan dari beberapa arah:

  1. Kombinasi dengan sinyal filter indikator lainnya, seperti KDJ, RSI, dll.
  2. Menambahkan algoritma pembelajaran mesin untuk menentukan titik jual beli
  3. Mengadopsi stop loss dinamis sebagai pengganti stop loss statis
  4. Optimasi tes untuk parameter MACD dan baris pembelian
  5. Strategi penyesuaian untuk mempertimbangkan dampak biaya transaksi

Meringkaskan

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.

Kode Sumber Strategi
/*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)