Strategi Dagangan Multi Timeframe Berasaskan Saluran Harga dan MACD

Penulis:ChaoZhang, Tarikh: 2023-12-08 15:15:37
Tag:

img

Ringkasan

Strategi ini menggabungkan penunjuk saluran harga dan penunjuk MACD untuk mengesan trend dan mengenal pasti tahap overbought dan oversold merentasi pelbagai jangka masa, dengan itu membuat keputusan membeli dan menjual. Strategi ini juga menggabungkan stop loss dan mengambil keuntungan untuk menguruskan risiko.

Logika Strategi

Indikator saluran harga membina saluran harga berdasarkan garis EMA harga tertinggi dan terendah untuk menentukan trend apabila harga keluar dari saluran. Indikator MACD menilai momentum bullish dan bearish. Nilai di atas garis sifar menunjukkan pasaran lembu manakala nilai di bawah menunjukkan pasaran beruang.

Isyarat perdagangan strategi ini datang dari aspek berikut:

  1. Masuk panjang apabila histogram MACD bertukar merah. Masuk pendek apabila histogram MACD bertukar hijau.

  2. Masuk pendek apabila harga mendekati bahagian bawah saluran dan MACD berada di bawah garis sifar.

  3. Masuk panjang apabila harga mendekati bahagian atas saluran dan MACD berada di atas garis sifar.

  4. Masuk panjang apabila MACD melintasi di atas garis sifar. Masuk pendek apabila MACD melintasi di bawah garis sifar.

Keluar diaktifkan oleh stop loss dan mengambil keuntungan.

Kelebihan Strategi

  1. Gabungan penunjuk menghalang pecah palsu.

  2. Gabungan penunjuk merentasi jangka masa memastikan pengesanan trend yang boleh dipercayai.

  3. Penggabungan kawalan stop loss dan mengambil keuntungan secara berkesan setiap kerugian perdagangan.

Risiko Strategi

  1. Ruang pengoptimuman terhad yang membawa kepada pengoptimuman berlebihan.

  2. Tetapan saluran harga yang rendah terlepas pergerakan yang lebih besar.

  3. Stop loss yang ketat menyebabkan kerugian yang lebih besar.

Penyelesaian:

  1. Mengambil langkah ke hadapan pengoptimuman untuk mengelakkan overoptimization.

  2. Tetapkan parameter penyesuaian untuk saluran harga.

  3. Memperkenalkan stop loss berdasarkan turun naik untuk pelarasan dinamik jarak berhenti.

Arah Pengoptimuman

  1. Mengoptimumkan gabungan parameter MACD.

  2. Mengoptimumkan pengiraan adaptif parameter saluran harga.

  3. Tambah lebih banyak penapis untuk mengelakkan penyebaran palsu dan meningkatkan kecekapan.

Ringkasan

Strategi ini menggabungkan kekuatan saluran harga dan MACD dengan tetapan parameter yang munasabah dan ruang pengoptimuman yang besar. Ia berfungsi dengan baik dalam pengesanan trend dan pengenalan overbought / oversold.


/*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)

Lebih lanjut