Strategi Perdagangan Robot MACD


Tarikh penciptaan: 2023-12-18 17:30:15 Akhirnya diubah suai: 2023-12-18 17:30:15
Salin: 0 Bilangan klik: 723
1
fokus pada
1621
Pengikut

Strategi Perdagangan Robot MACD

Gambaran keseluruhan

Strategi ini dipanggil strategi perdagangan robot MACD. Strategi ini mengawal risiko dengan mengira hubungan antara garis cepat dan lambat dalam indikator MACD, menilai masa pasaran untuk membeli dan menjual, dan mengambil tracking stop loss.

Prinsip Strategi

Strategi ini dibangunkan terutamanya berdasarkan indikator MACD. Indeks MACD terdiri daripada garis cepat dan garis perlahan, garis cepat adalah purata jangka pendek, garis perlahan adalah purata jangka panjang, hubungan keduanya mencerminkan keadaan jual beli di pasaran. Apabila garis cepat melintasi garis panjang sebagai isyarat beli, bawah melintasi isyarat menjual.

Dalam strategi ini, garis cepat dan lambat dikira menggunakan algoritma EMA, dan tempohnya boleh disesuaikan. Untuk meningkatkan kualiti isyarat, garis isyarat ditambah, menggunakan algoritma EMA untuk memproses nilai MACD dengan lebih lancar.

Dalam menentukan masa pembelian, bukan sahaja melihat garpu cepat dan lambat, tetapi juga menilai apakah nilai mutlak MACD lebih besar daripada garis pembelian yang disesuaikan. Apabila dipenuhi, isyarat pembelian dikeluarkan, dan pengendalian risiko digunakan untuk menjejaki hentian kerugian.

Dalam menentukan masa untuk menjual, untuk memenuhi syarat bahawa garisan mati garisan cepat dan garisan isyarat adalah positif, isyarat menjual dikeluarkan dan kedudukan dipadamkan.

Analisis kelebihan

Strategi ini mempunyai beberapa kelebihan:

  1. Menggunakan MACD untuk menentukan masa jual beli, lebih dipercayai
  2. Tambah saluran untuk meningkatkan kualiti isyarat
  3. Menjejaki dan mengawal risiko
  4. Garis pembelian boleh disesuaikan dengan kepekaan strategi
  5. Syarat-syarat semua berdasarkan pengiraan indikator, tanpa pengaruh luaran

Analisis risiko

Strategi ini mempunyai beberapa risiko:

  1. Indeks MACD terlewat, mungkin terlepas peluang untuk melakukan operasi garis pendek
  2. Penetapan titik henti yang tidak betul boleh menyebabkan kerugian yang tidak perlu
  3. Parameter Tuning memerlukan banyak masa untuk menguji dan menyesuaikan
  4. Kesan kos urus niaga dan slippage

Risiko ini boleh dikurangkan dengan menyesuaikan parameter yang sesuai, menggabungkan indikator lain dan sebagainya.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dengan cara berikut:

  1. Gabungan dengan isyarat penapis indikator lain, seperti KDJ, RSI dan sebagainya
  2. Menambah algoritma pembelajaran mesin untuk menentukan titik jual beli
  3. Menggunakan Hentian Dinamis Daripada Hentian Statik
  4. Pengoptimuman ujian untuk parameter MACD dan baris pembelian
  5. Strategi penyesuaian untuk mengambil kira kesan kos transaksi

ringkaskan

Strategi ini secara keseluruhan adalah strategi pengesanan trend yang sangat dipercayai. Dengan menentukan trend dengan indikator MACD, mengambil risiko kawalan hentian pengesanan, anda boleh mendapatkan pulangan pelaburan yang stabil. Langkah seterusnya adalah untuk mengoptimumkan lagi parameter, menggabungkan indikator lain, menggabungkan pembelajaran mesin dan lain-lain untuk meningkatkan keuntungan strategi.

Kod 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)