Strategi perdagangan multi-kerangka waktu berdasarkan saluran harga dan MACD


Tanggal Pembuatan: 2023-12-08 15:15:37 Akhirnya memodifikasi: 2023-12-08 15:15:37
menyalin: 0 Jumlah klik: 616
1
fokus pada
1621
Pengikut

Strategi perdagangan multi-kerangka waktu berdasarkan saluran harga dan MACD

Ringkasan

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.

Prinsip Strategi

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:

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

  2. Harga mendekati bagian bawah saluran dan MACD berada di bawah sumbu nol

  3. Harga mendekati puncak saluran dan MACD berada di atas sumbu nol

  4. 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.

Keunggulan Strategis

  1. Verifikasi kombinasi multi-indikator untuk menghindari penembusan palsu

  2. Kombinasi indikator dari berbagai kerangka waktu memberikan penilaian yang lebih akurat tentang arah tren

  3. Memperkenalkan mekanisme stop loss yang efektif untuk mengendalikan kerugian tunggal

Risiko Strategis

  1. Optimasi parameter terbatas dan mudah dioptimalkan

  2. Setel parameter saluran harga terlalu rendah dan Anda akan kehilangan lebih banyak.

  3. Stop loss terlalu kecil, akan menanggung kerugian lebih besar

Solusi:

  1. Menggunakan metode walk forward untuk menghindari parameter overoptimisasi

  2. Setel parameter saluran harga sebagai parameter adaptasi

  3. Masukkan stop loss volatilitas untuk menyesuaikan stop loss jarak secara dinamis

Arah optimasi strategi

  1. Mengoptimalkan kombinasi parameter MACD

  2. Perhitungan adaptif dari parameter saluran harga optimasi

  3. Menambahkan lebih banyak kondisi penyaringan untuk menghindari penembusan palsu yang lebih efisien

Meringkaskan

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.

Kode 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)