Strategi perdagangan kuantitatif berdasarkan MACD yang dinormalisasi


Tanggal Pembuatan: 2023-09-14 20:01:07 Akhirnya memodifikasi: 2023-09-14 20:01:07
menyalin: 1 Jumlah klik: 783
1
fokus pada
1234
Pengikut

Artikel ini akan membahas strategi perdagangan kuantitatif yang didasarkan pada indikator MACD yang telah diregulasi. Strategi ini dioptimalkan dari strategi MACD klasik untuk meningkatkan kualitas sinyal.

  1. Prinsip Strategi

Inti dari strategi ini adalah untuk menghiasi indikator MACD tradisional untuk mengurangi tingkat kesalahan. Langkah-langkahnya adalah sebagai berikut:

  1. Menghitung Hull Moving Average jangka pendek dan jangka panjang untuk menilai tren besar berdasarkan hubungan silangnya;

  2. Menghitung perbedaan MACD;

  3. Proses penggabungan indikator MACD dalam periode tertentu;

  4. Perhitungan rata-rata MACD yang terintegrasi, membentuk pemicu perdagangan;

  5. Pada MACD yang dirumuskan, pencetakan di atas lebih banyak dan pencetakan di bawah lebih sedikit.

  6. Filter dengan hubungan linear untuk menghindari kehilangan tren besar.

  7. Mengatur Stop Loss dan Mengontrol Risiko Perdagangan Tunggal

Pengolahan kesatuan dapat mengurangi amplitudo mutlak dari perbedaan MACD, sehingga mengurangi kebisingan dan meningkatkan kualitas sinyal. Penyaringan tren juga menghindari operasi terbalik karena penyesuaian lokal. Stop loss control mengontrol kerugian tunggal.

Kedua, keunggulan strategi

Strategi ini dibandingkan dengan strategi MACD yang sederhana, keuntungan terbesarnya adalah pengolahan uniformisasi, yang secara efektif mengurangi tingkat kesalahan MACD dan meningkatkan akurasi sinyal.

Keuntungan lain adalah penambahan filter untuk menilai tren, menghindari operasi terbalik dalam tren. Ini meningkatkan stabilitas strategi.

Akhirnya, pengaturan kondisi stop loss juga memungkinkan pengendalian risiko dan keuntungan dari setiap transaksi, yang memungkinkan pengelolaan dana yang aktif.

Ketiga, potensi risiko

Meskipun strategi ini telah dioptimalkan, dalam penggunaan praktis, risiko berikut harus diperhatikan:

Pertama adalah parameter yang lebih sulit untuk dioptimalkan, pengaturan yang tidak tepat dapat menyebabkan overmatch.

Kedua, stop loss setup terlalu dekat dengan kemungkinan terobosan yang menyebabkan kerugian yang lebih besar.

Akhirnya, sinyal mungkin terlambat dan tidak dapat bereaksi tepat waktu ketika tren berubah.

Empat isi, ringkasan

Artikel ini menjelaskan secara rinci tentang strategi perdagangan kuantitatif untuk pengolahan standar indikator MACD. Strategi ini merupakan perbaikan dari strategi MACD klasik yang dapat secara efektif meningkatkan kualitas sinyal dan bergabung dengan mekanisme manajemen risiko. Namun, masih perlu memperhatikan kesulitan pengoptimalan parameter dan pengaturan stop loss.

Kode Sumber Strategi
/*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)