
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.
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:
Histogram MACD berbalik merah Enter banyak, berbalik hijau Enter kosong
Harga hampir ke bahagian bawah saluran dan MACD di bawah paksi sifar
Harga hampir ke puncak saluran dan MACD berada di atas paksi sifar
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.
Pengesahan gabungan pelbagai indikator untuk mengelakkan penembusan palsu
Kombinasi indikator pelbagai kerangka masa lebih dipercayai untuk menentukan arah trend
Memperkenalkan mekanisme penangguhan kerugian yang berkesan untuk mengawal kerugian tunggal
Optimasi parameter terhad, mudah dioptimumkan
Penetapan parameter saluran harga yang terlalu rendah akan menyebabkan kerugian yang lebih besar
Stop loss terlalu kecil dan akan menanggung kerugian yang lebih besar
Penyelesaian:
Menggunakan kaedah berjalan maju untuk mengelakkan parameter yang terlalu dioptimumkan
Tetapkan parameter saluran harga sebagai parameter adaptasi
Masukkan stop loss kadar turun naik untuk menyesuaikan jarak stop loss secara dinamik
Mengoptimumkan kombinasi parameter MACD
Pengiraan penyesuaian parameter saluran harga yang dioptimumkan
Menambah syarat penapisan untuk mengelakkan penembusan palsu yang lebih cekap
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.
/*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)