Strategi Perdagangan Kuantitatif Berdasarkan MACD Normal

Penulis:ChaoZhang, Tanggal: 2023-09-14 20:01:07
Tag:

Artikel ini menjelaskan secara rinci strategi perdagangan kuantitatif berdasarkan indikator MACD yang dinormalisasi.

I. Logika Strategi

Ide inti dari strategi ini adalah untuk menormalkan indikator MACD tradisional untuk mengurangi tingkat kesalahan.

  1. Menghitung jangka pendek dan jangka panjang Hull moving average dan menggunakan silang mereka untuk arah tren.

  2. Menghitung perbedaan MACD.

  3. Normalkan MACD selama periode tertentu.

  4. Menghitung rata-rata bergerak dari MACD normal sebagai pemicu.

  5. Pergi panjang ketika MACD normal melintasi di atas pemicu, dan pergi pendek ketika melintasi di bawah.

  6. Tambahkan penyaringan tren untuk menghindari kehilangan gerakan utama.

  7. Atur stop loss dan ambil keuntungan untuk mengendalikan risiko per perdagangan.

Normalisasi mengurangi besar mutlak perbedaan MACD, menurunkan noise untuk kualitas sinyal yang lebih tinggi. penyaringan tren menghindari pembalikan palsu terhadap tren utama. stop loss dan take profit mengendalikan kerugian per perdagangan.

II. Keuntungan dari Strategi

Dibandingkan dengan strategi MACD sederhana, keuntungan terbesarnya adalah normalisasi, yang dapat secara efektif mengurangi kesalahan MACD dan meningkatkan akurasi sinyal.

Keuntungan lain adalah penambahan penyaringan tren untuk menghindari pembalikan palsu.

Akhirnya, pengaturan stop loss dan take profit juga memastikan pengendalian risiko-balasan per perdagangan untuk pengelolaan uang yang bijaksana.

III. Kemunduran Potensial

Meskipun optimalisasi, risiko berikut harus dicatat saat perdagangan dalam prakteknya:

Pertama, kesulitan pengoptimalan parameter yang besar dapat menyebabkan overfitting jika diatur secara tidak tepat.

Kedua, jika stop loss terlalu dekat, risiko berhenti terlalu dini.

Akhirnya, sinyal mungkin tertunda selama transisi tren, gagal bereaksi tepat waktu.

IV. Ringkasan

Secara singkat, artikel ini telah menjelaskan strategi perdagangan kuantitatif yang menormalkan indikator MACD. Ini meningkatkan strategi MACD klasik untuk secara efektif meningkatkan kualitas sinyal dan menggabungkan mekanisme manajemen risiko. Tetapi kesulitan pengoptimalan parameter dan pengaturan stop loss masih perlu ditangani dengan hati-hati. Secara keseluruhan, ini memberikan pendekatan yang layak untuk mengoptimalkan strategi MACD.


/*backtest
start: 2023-08-14 00:00:00
end: 2023-09-13 00:00:00
period: 6h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
// Normalized MACD but heavily modified by SeaSide420. Normalized MACD v420
strategy("Normalized MACD (v420)",shorttitle="NmacD(v420)",overlay=true, default_qty_type=strategy.percent_of_equity, max_bars_back=1440, default_qty_value=100, calc_on_order_fills= true, calc_on_every_tick=true, pyramiding=0) 
p=input(ohlc4)
jah=input(title="HullMA cross",defval=21)
tsp = input(34,title='Trigger')
np = input(50,title='Normalize')
SL = input(defval=-420.00, title="Stop Loss in $", step=1)
TP = input(defval=31.00, title="Target Point in $", step=1)
ot=1
n2ma=2*wma(p,round(jah/2))
nma=wma(p,jah)
diff=n2ma-nma
sqn=round(sqrt(jah))
n2ma1=2*wma(p[2],round(jah/2))
nma1=wma(p[2],jah)
diff1=n2ma1-nma1
sqn1=round(sqrt(jah))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
sh=n1
lon=n2
ratio = min(sh,lon)/max(sh,lon)
Mac = (iff(sh>lon,2-ratio,ratio)-1)
MacNorm = ((Mac-lowest(Mac, np)) /(highest(Mac, np)-lowest(Mac, np)+.000001)*2)- 1
MacNorm2 = iff(np<2,Mac,MacNorm)
Trigger = wma(MacNorm2, tsp)
Hist =(MacNorm2-Trigger)
Hist2= Hist>1?1:Hist<-1?-1:Hist
teh=MacNorm2+MacNorm2[2]-MacNorm2[1]
closelong = strategy.openprofit<SL or strategy.openprofit>TP or teh[1]<Trigger[1] and n1<n2[1]
if (closelong)
    strategy.close("Long")
closeshort = strategy.openprofit<SL or strategy.openprofit>TP or  teh[1]>Trigger[1] and n1>n2[1]
if (closeshort)
    strategy.close("Short")
longCondition = Trigger<0 and teh>Trigger and MacNorm>Trigger and strategy.opentrades<ot 
if (longCondition)
    strategy.entry("Long",strategy.long)
shortCondition = Trigger>0 and teh<Trigger and MacNorm<Trigger and strategy.opentrades<ot 
if (shortCondition)
    strategy.entry("Short",strategy.short)

Lebih banyak