Strategi perdagangan bingkai berbilang masa berdasarkan saluran harga dan MACD


Tarikh penciptaan: 2023-12-08 15:15:37 Akhirnya diubah suai: 2023-12-08 15:15:37
Salin: 0 Bilangan klik: 616
1
fokus pada
1621
Pengikut

Strategi perdagangan bingkai berbilang masa berdasarkan saluran harga dan MACD

Gambaran keseluruhan

Strategi ini menggabungkan penunjuk saluran harga dan penunjuk MACD untuk mengesan trend dan membuat keputusan membeli dan menjual dalam jangka masa yang lebih lama. Strategi ini juga menggabungkan stop loss untuk menguruskan risiko.

Prinsip Strategi

Penunjuk saluran harga membina saluran harga berdasarkan EMA rata-rata harga tertinggi dan terendah, menilai trend melalui harga menerobos saluran; Indeks MACD menilai tren udara, di atas paksi sifar sebagai pasaran multihead, di bawah sebagai pasaran kosong.

Isyarat perdagangan untuk strategi ini berasal dari beberapa aspek:

  1. Histogram MACD berbalik merah Enter banyak, berbalik hijau Enter kosong

  2. Harga hampir ke bahagian bawah saluran dan MACD di bawah paksi sifar

  3. Harga hampir ke puncak saluran dan MACD berada di atas paksi sifar

  4. MACD di atas Enter banyak kepala apabila melalui sumbu sifar, di bawah Enter kosong apabila melalui sumbu sifar

Isyarat keluar berasal dari tetapan henti rugi.

Kelebihan Strategik

  1. Pengesahan gabungan pelbagai indikator untuk mengelakkan penembusan palsu

  2. Kombinasi indikator pelbagai kerangka masa lebih dipercayai untuk menentukan arah trend

  3. Memperkenalkan mekanisme penangguhan kerugian yang berkesan untuk mengawal kerugian tunggal

Risiko Strategik

  1. Optimasi parameter terhad, mudah dioptimumkan

  2. Penetapan parameter saluran harga yang terlalu rendah akan menyebabkan kerugian yang lebih besar

  3. Stop loss terlalu kecil dan akan menanggung kerugian yang lebih besar

Penyelesaian:

  1. Menggunakan kaedah berjalan maju untuk mengelakkan parameter yang terlalu dioptimumkan

  2. Tetapkan parameter saluran harga sebagai parameter adaptasi

  3. Masukkan stop loss kadar turun naik untuk menyesuaikan jarak stop loss secara dinamik

Arah pengoptimuman strategi

  1. Mengoptimumkan kombinasi parameter MACD

  2. Pengiraan penyesuaian parameter saluran harga yang dioptimumkan

  3. Menambah syarat penapisan untuk mengelakkan penembusan palsu yang lebih cekap

ringkaskan

Strategi ini mengintegrasikan kelebihan indikator saluran harga dan indikator MACD, parameter yang munasabah dan ruang pengoptimuman yang besar, lebih berkesan dalam penilaian trend dan penilaian overbought dan oversold, mekanisme stop loss mengawal risiko kerugian tunggal, merupakan strategi perdagangan yang lebih stabil. Kemudian boleh diperbaiki dari segi pengoptimuman parameter, penambahan syarat penapisan, pengoptimuman mekanisme stop loss.

Kod sumber strategi
/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Sonic R + Barcolor MACD", overlay=true)
HiLoLen     = input(34, minval=2,title="High Low channel Length")
pacL        = ema(low,HiLoLen)
pacH        = ema(high,HiLoLen)
// Plot the Price Action Channel (PAC) base on EMA high,low and close//
L=plot(pacL, color=yellow, linewidth=1, title="High PAC EMA",transp=0)
H=plot(pacH, color=yellow, linewidth=1, title="Low PAC EMA",transp=0)
fastLength = input(12)
slowlength = input(26)
MACDLength = input(9)
MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD
hisup= iff(delta>delta[1] and delta>0, 1,
	     iff(delta<delta[1], -1, nz(hisup[1], 0)))
hisdown = iff(delta<delta[1] and delta<0, 1,
	     iff(delta>delta[1], -1, nz(hisdown[1], 0)))
barcolor(hisup==1 and MACD>0 ? lime: hisdown==1 and MACD<0 ? red : blue )
//SR
PeriodLookBack = input(34)
xHighest = highest(PeriodLookBack)
xLowest = lowest(PeriodLookBack)
Trend= close>xHighest[1] ? 1: close< xLowest[1]?-1 : nz(Trend[1],0)
// Strategy//
conbuy= hisdown==1 or MACD<0 ? 1: hisup[5]==1 and MACD[5]>0 ?-1 : nz(conbuy[1],0)
gobuy= conbuy==1 and close-open<2*(pacH-pacL) and high-close<(pacH-pacL)/2 and hisup==1 and MACD>0 and close-pacH<1.5*(pacH-pacL) and close>open and high-close<close-open and close>pacH
consell= hisup==1 or MACD>0 ?1 : hisdown[5]==1 and MACD[5]<0 ?-1 : nz(consell[1],0)
gosell= consell==1 and open-close<2*(pacH-pacL) and close-low<(pacH-pacL)/2 and hisdown==1 and MACD<0 and pacL-close<1.5*(pacH-pacL) and close<open and close-low<open-close and close<pacL
if(gobuy)
    strategy.entry("Buy",strategy.long)
if(gosell)
    strategy.entry("Sell",strategy.short)
//if(Trend==-1 and close<pacL)
//    strategy.close("Buy")
//if(Trend==1 and close>pacH)
//    strategy.close("Sell")
 ////////////// TP and SL//
SL = input(defval=100.00, title="Stop Loss Point", type=float, step=1)
rr= input(defval=0.1,title="Reward/Risk",type=float)
useTPandSL = input(defval = false, title = "Use exit order strategy?")
Stop = SL
Take=SL*rr
Q = 100
if(useTPandSL)
    strategy.exit("Out Long", "Buy", qty_percent=Q, profit= Take, loss=Stop)
    strategy.exit("Out Short", "Sell", qty_percent=Q, profit= Take, loss=Stop)