Sumber dimuat naik... memuat...

Strategi Dagangan Kuantitatif Berdasarkan MACD yang Diormalkan

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

Artikel ini menerangkan secara terperinci strategi perdagangan kuantitatif berdasarkan penunjuk MACD yang normal. Ia mengoptimumkan strategi MACD klasik untuk meningkatkan kualiti isyarat.

I. Logik Strategi

Idea teras strategi ini adalah untuk menormalkan penunjuk MACD tradisional untuk mengurangkan kadar ralat.

  1. Mengira purata bergerak jangka pendek dan panjang Hull dan menggunakan silang mereka untuk arah trend.

  2. Mengira perbezaan MACD.

  3. Menormalkan MACD dalam tempoh tertentu.

  4. Mengira purata bergerak MACD yang dimasukan sebagai pencetus.

  5. Pergi panjang apabila MACD normal melintasi di atas pencetus, dan pergi pendek apabila melintasi di bawah.

  6. Tambah penapisan trend untuk mengelakkan kehilangan pergerakan utama.

  7. Tetapkan stop loss dan ambil keuntungan untuk mengawal risiko setiap perdagangan.

Normalkan mengurangkan besar mutlak perbezaan MACD, mengurangkan bunyi bising untuk kualiti isyarat yang lebih tinggi. penapisan trend mengelakkan pembalikan palsu terhadap trend utama. hentikan kerugian dan ambil keuntungan mengawal kerugian setiap perdagangan.

II. Kelebihan Strategi

Berbanding dengan strategi MACD yang mudah, kelebihan terbesarnya adalah normalisasi, yang dapat mengurangkan kesilapan MACD dengan berkesan dan meningkatkan ketepatan isyarat.

Satu lagi kelebihan adalah penapisan trend untuk mengelakkan pembalikan palsu.

Akhirnya, tetapan stop loss dan mengambil keuntungan juga memastikan risiko-balasan yang boleh dikawal setiap perdagangan untuk pengurusan wang yang bijak.

III. Kelemahan Potensial

Walaupun pengoptimuman, risiko berikut harus diperhatikan semasa berdagang dalam amalan:

Pertama, kesukaran pengoptimuman parameter yang besar boleh menyebabkan pemasangan berlebihan jika ditetapkan dengan tidak betul.

Kedua, set stop loss terlalu dekat risiko akan dihentikan lebih awal.

Akhirnya, isyarat mungkin terlambat semasa peralihan trend, gagal bertindak balas tepat pada masanya.

IV. Ringkasan

Ringkasnya, artikel ini telah menerangkan strategi perdagangan kuantitatif yang menormalkan penunjuk MACD. Ia meningkatkan strategi MACD klasik untuk meningkatkan kualiti isyarat dengan berkesan dan menggabungkan mekanisme pengurusan risiko. Tetapi kesukaran pengoptimuman parameter dan penetapan stop loss masih perlu ditangani dengan berhati-hati. Secara keseluruhan, ia menyediakan pendekatan yang layak untuk mengoptimumkan 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 lanjut