Strategi kuantitas MACD gradien

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

img

Gambaran umum

Strategi ini menghitung lilin Heikin-Ashi untuk meratakan garis harga dan menggabungkan indikator MACD untuk menghasilkan sinyal perdagangan, menerapkan strategi kuantitatif yang melacak tren jangka menengah hingga panjang.

Logika Strategi

  1. Hitung harga buka, tutup, tinggi dan rendah Heikin-Ashi untuk memetakan lilin Heikin-Ashi dan tren harga yang halus.

  2. Atur parameter MACD: panjang cepat 12, panjang lambat 26, panjang sinyal 9.

  3. Hitung garis lambat DEA, garis cepat DEA dan histogram MACD.

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

  5. Tambahkan filter tahun, bulan dan hari untuk membatasi perdagangan ke rentang waktu yang ditentukan.

Analisis Keuntungan

  1. Lilin Heikin-Ashi menyaring kebisingan pasar secara efektif untuk mengidentifikasi tren.

  2. MACD memberikan sinyal perdagangan tren yang jelas.

  3. Menggabungkan Heikin-Ashi dan MACD meningkatkan kualitas sinyal dan profitabilitas.

  4. Filter waktu membantu mengoptimalkan jadwal perdagangan berdasarkan kinerja historis.

Analisis Risiko

  1. Potensi kerugian besar selama pembalikan tren.

  2. Parameter MACD yang tidak tepat dapat menghasilkan sinyal yang berlebihan dan tidak berharga.

  3. Filter waktu kaku mungkin kehilangan peluang perdagangan yang baik.

Pengendalian:

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

  2. Mengoptimalkan parameter MACD untuk menentukan kombinasi terbaik.

  3. Tambahkan indikator untuk menentukan tren lokal.

Arahan Optimasi

  1. Uji kombinasi parameter yang berbeda untuk menemukan yang optimal.

  2. Tambahkan mekanisme stop loss seperti trailing stop loss.

  3. Tambahkan indikator seperti EMA, KDJ untuk menentukan titik pembalikan.

  4. Tambahkan indikator volume untuk menghindari perbedaan.

Ringkasan

Strategi ini meluruskan aksi harga dengan lilin Heikin-Ashi dan menentukan arah tren dan sinyal masuk dengan indikator MACD Tradingview untuk menerapkan strategi kuantum yang mengikuti tren. Dibandingkan dengan strategi MACD biasa, ini menyaring beberapa kebisingan untuk identifikasi tren yang lebih jelas. Peningkatan lebih lanjut pada optimasi parameter, stop loss, dan indikator combo dapat meningkatkan stabilitas dan profitabilitasnya.


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