Strategi Kuantiti MACD Gradient

Penulis:ChaoZhang, Tarikh: 2023-12-19 16:14:50
Tag:

img

Ringkasan

Strategi ini mengira lilin Heikin-Ashi untuk meluruskan garis harga dan menggabungkan penunjuk MACD untuk menjana isyarat perdagangan, melaksanakan strategi kuantitatif yang mengesan trend jangka sederhana hingga panjang.

Logika Strategi

  1. Mengira harga bukaan, penutupan, tinggi dan rendah Heikin-Ashi untuk merangka lilin Heikin-Ashi dan trend harga yang lancar.

  2. Tetapkan parameter MACD: panjang cepat 12, panjang perlahan 26, panjang isyarat 9.

  3. Mengira garis perlahan DEA, garis pantas DEA dan histogram MACD.

  4. Pergi panjang apabila histogram MACD melintasi di atas 0; Pergi pendek apabila melintasi di bawah 0.

  5. Tambah penapis tahun, bulan dan hari untuk mengehadkan perdagangan ke julat masa yang ditentukan.

Analisis Kelebihan

  1. Lilin Heikin-Ashi menyaring bunyi pasaran dengan berkesan untuk mengenal pasti trend.

  2. MACD memberikan isyarat perdagangan trend yang jelas.

  3. Menggabungkan Heikin-Ashi dan MACD meningkatkan kualiti isyarat dan keuntungan.

  4. Penapis masa membantu mengoptimumkan jadual dagangan berdasarkan prestasi sejarah.

Analisis Risiko

  1. Kemungkinan kerugian besar semasa pembalikan trend.

  2. Parameter MACD yang tidak betul boleh menghasilkan isyarat yang terlalu tidak berharga.

  3. Penapis masa yang kaku mungkin terlepas peluang perdagangan yang baik.

Tindakan balas:

  1. Tetapkan stop loss/take profit untuk mengehadkan kerugian.

  2. Mengoptimumkan parameter MACD untuk menentukan kombinasi terbaik.

  3. Tambah penunjuk untuk menentukan trend tempatan.

Arahan pengoptimuman

  1. Uji kombinasi parameter yang berbeza untuk mencari optimum.

  2. Tambahkan mekanisme stop loss seperti trailing stop loss.

  3. Tambah penunjuk seperti EMA, KDJ untuk menentukan titik pembalikan.

  4. Tambah penunjuk jumlah untuk mengelakkan perbezaan.

Ringkasan

Strategi ini meratakan tindakan harga dengan lilin Heikin-Ashi dan menentukan arah trend dan isyarat kemasukan dengan penunjuk MACD Tradingview untuk melaksanakan strategi kuant trend. Berbanding dengan strategi MACD biasa, ia menapis beberapa bunyi bising untuk pengenalan trend yang lebih jelas. Penambahbaikan lanjut pada pengoptimuman parameter, stop loss, dan penunjuk combo dapat meningkatkan kestabilan dan keuntungan.


/*backtest
start: 2023-11-18 00:00:00
end: 2023-12-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("MACD ASHI BARS .v1 ", overlay=false,default_qty_type = strategy.percent_of_equity, default_qty_value = 100,commission_type=strategy.commission.percent,commission_value=0.1,slippage=1)

// Calculation HA Values 
haopen  = 0.0
haclose = (open + high + low + close) / 4
haopen := na(haopen[1]) ? (open + close) / 2 : (haopen[1] + haclose[1]) / 2
hahigh  = max(high, max(haopen, haclose))
halow   = min(low,  min(haopen, haclose))

// HA colors
hacolor = haclose > haopen ? color.green : color.red
src=haclose



fastmacd = input(12,title='MACD Fast  Line Length')
slowmacd = input(26,title='MACD Slow Line Length')
signalmacd = input(9,title='Signal Line Length')

macdslowline1 = sma(src,slowmacd)
macdslowline2 = sma(macdslowline1,slowmacd)
DEMAslow = ((2 * macdslowline1) - macdslowline2 )

macdfastline1 = sma(src,fastmacd)
macdfastline2 = sma(macdfastline1,fastmacd)
DEMAfast = ((2 * macdfastline1) - macdfastline2)

MACDLine = (DEMAfast - DEMAslow)

SignalLine = sma(MACDLine, signalmacd)

delta = MACDLine-SignalLine




swap1 = delta>0?color.green:color.red



plot(delta,color=swap1,style=plot.style_columns,title='Histo',histbase=0,transp=20)
p1 = plot(MACDLine,color=color.blue,title='MACD Line')
p2 = plot(SignalLine,color=color.red,title='Signal')
fill(p1, p2, color=color.blue)
hline(0)



yearfrom = input(2020)
yearuntil =input(2042)
monthfrom =input(1)
monthuntil =input(12)
dayfrom=input(1)
dayuntil=input(31)







if ( crossover(delta,0)  and   year >= yearfrom and year <= yearuntil and month>=monthfrom and month <=monthuntil and dayofmonth>=dayfrom and dayofmonth < dayuntil) 
    strategy.entry("MMAL", strategy.long, stop=close, oca_name="TREND",  comment="AL")
    
else
    strategy.cancel(id="MMAL")


if (  crossunder(delta,0) and  year >= yearfrom and year <= yearuntil and month>=monthfrom and month <=monthuntil and dayofmonth>=dayfrom and dayofmonth < dayuntil ) 

    strategy.entry("MMSAT", strategy.short,stop=close, oca_name="TREND",  comment="SAT")
else
    strategy.cancel(id="MMSAT")
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    


Lebih lanjut