
Strategi ini menggabungkan indikator saluran harga dan indikator MACD untuk memungkinkan pelacakan tren dan penilaian overbought dan oversold dalam beberapa kerangka waktu, sehingga membuat keputusan membeli dan menjual. Strategi ini juga menggabungkan stop loss untuk mengelola risiko.
Indikator saluran harga membangun saluran harga berdasarkan rata-rata EMA harga tertinggi dan terendah, menilai tren melalui harga terobosan saluran; Indikator MACD menilai tren multi-udara, di atas sumbu nol adalah pasar multi-head, di bawah adalah pasar kosong.
Sinyal perdagangan dari strategi ini berasal dari beberapa aspek:
Histogram MACD berbalik merah Enter multihead, berbalik hijau Enter kosong
Harga mendekati bagian bawah saluran dan MACD berada di bawah sumbu nol
Harga mendekati puncak saluran dan MACD berada di atas sumbu nol
MACD di atas bergerak di atas sumbu nol, dan di bawah sumbu nol bergerak di bawah sumbu nol
Sinyal keluar berasal dari pengaturan stop loss.
Verifikasi kombinasi multi-indikator untuk menghindari penembusan palsu
Kombinasi indikator dari berbagai kerangka waktu memberikan penilaian yang lebih akurat tentang arah tren
Memperkenalkan mekanisme stop loss yang efektif untuk mengendalikan kerugian tunggal
Optimasi parameter terbatas dan mudah dioptimalkan
Setel parameter saluran harga terlalu rendah dan Anda akan kehilangan lebih banyak.
Stop loss terlalu kecil, akan menanggung kerugian lebih besar
Solusi:
Menggunakan metode walk forward untuk menghindari parameter overoptimisasi
Setel parameter saluran harga sebagai parameter adaptasi
Masukkan stop loss volatilitas untuk menyesuaikan stop loss jarak secara dinamis
Mengoptimalkan kombinasi parameter MACD
Perhitungan adaptif dari parameter saluran harga optimasi
Menambahkan lebih banyak kondisi penyaringan untuk menghindari penembusan palsu yang lebih efisien
Strategi ini mengintegrasikan keuntungan dari indikator saluran harga dan indikator MACD, pengaturan parameter yang masuk akal dan ruang pengoptimalan yang luas, efektif dalam penilaian tren dan penilaian overbought dan oversold, mekanisme stop loss mengendalikan risiko kerugian satu kali, merupakan strategi perdagangan yang lebih stabil. Selanjutnya dapat diperbaiki dari pengoptimalan parameter, penambahan kondisi penyaringan, pengoptimalan mekanisme stop loss, dll.
/*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)