Artikel ini akan menerangkan secara terperinci mengenai strategi perdagangan kuantitatif yang berdasarkan kepada penunjuk MACD standard. Strategi ini dioptimumkan untuk strategi MACD klasik untuk meningkatkan kualiti isyarat.
I. Prinsip-prinsip Strategi
Strategi ini berpusat pada idea untuk mengkaji semula penunjuk MACD tradisional untuk mengurangkan kadar ralat. Langkah-langkahnya adalah seperti berikut:
Mengira purata bergerak Hull jangka pendek dan jangka panjang untuk menilai trend besar berdasarkan hubungan silang mereka;
Mengira perbezaan MACD;
penyesuaian MACD dalam satu kitaran;
Mengira garis rata-rata MACD yang bersatu, membentuk pemicu perdagangan;
Apabila MACD yang direduksi melakukan lebih banyak apabila pemicu di atas sejajar, dan kosong apabila di bawah;
Untuk mengelakkan kehilangan trend besar, saring dengan hubungan linear.
Tetapkan titik hentian kerugian untuk mengawal risiko perdagangan tunggal.
Pemprosesan kesatuan dapat mengurangkan ketinggian mutlak perbezaan MACD, yang mengurangkan kebisingan dan meningkatkan kualiti isyarat. Penapisan trend juga mengelakkan operasi terbalik kerana penyesuaian tempatan.
Kedua, kelebihan strategi
Strategi ini berbanding dengan strategi MACD yang mudah, kelebihan terbesarnya adalah pemprosesan kesatuan, yang dapat mengurangkan kesilapan MACD dan meningkatkan ketepatan isyarat.
Kelebihan lain ialah penapis penilaian trend yang ditambahkan, mengelakkan operasi terbalik dalam trend. Ini meningkatkan kestabilan strategi.
Akhirnya, menetapkan syarat-syarat Hentikan Kerosakan, juga membolehkan risiko dan keuntungan setiap perdagangan dapat dikawal, mewujudkan pengurusan wang yang aktif.
Ketiga, potensi risiko
Walaupun strategi ini telah dioptimumkan, risiko berikut perlu diperhatikan dalam penggunaan sebenar:
Pertama adalah parameter yang lebih sukar untuk dioptimumkan, dan penyesuaian yang tidak betul boleh menyebabkan overfit.
Kedua, tetapan stop loss yang terlalu dekat boleh ditembusi dan menyebabkan kerugian meningkat.
Akhirnya, apabila trend berubah, isyarat mungkin terlewat dan tidak dapat bertindak balas tepat pada masanya.
Empat isi, ringkasan
Artikel ini menerangkan secara terperinci mengenai satu strategi perdagangan kuantitatif untuk pengesahan standard kepada penunjuk MACD. Strategi ini adalah penambahbaikan kepada strategi MACD klasik, yang dapat meningkatkan kualiti isyarat dengan berkesan, dan bergabung dengan mekanisme pengurusan risiko. Tetapi masih perlu berhati-hati dengan masalah seperti kesukaran pengoptimuman parameter dan tetapan stop loss.
/*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)