Strategi Dagangan Pengesanan Momentum empat faktor berdasarkan ADX, BB %B, AO dan EMA

Penulis:ChaoZhang, Tarikh: 2023-12-11 16:24:11
Tag:

img

##Pengamatan Strategi ini dinamakan Strategi Pengesanan Momentum Empat faktor. Ia mengintegrasikan Indeks Pergerakan Arah Purata (ADX) untuk menentukan arah trend, Peratusan Bollinger Bands (BB %B) untuk menilai kekuatan relatif saham, Osilator Awesome (AO) untuk menentukan momentum dan purata bergerak eksponensial kitaran yang berbeza (EMA) untuk menilai kedudukan panjang dan pendek, mencapai penjejakan dinamik harga saham dan mengejar saham yang kuat dan mengelakkan yang lemah.

## Prinsip Strategi
Strategi ini menggunakan empat penunjuk teknikal yang berbeza untuk menentukan titik masuk dan keluar.

Keadaan kemasukan panjang: EMA 5 hari melintasi EMA 21 hari, EMA 50 hari melintasi EMA 200 hari, BB %B lebih besar daripada garis overbought yang ditetapkan, AO lebih besar daripada nilai positif yang ditetapkan, dan ADX lebih besar daripada nilai yang ditetapkan.

Keadaan kemasukan pendek: EMA 5 hari melintasi di bawah EMA 21 hari, EMA 50 hari melintasi di bawah EMA 200 hari, BB %B kurang daripada garis oversold yang ditetapkan, AO kurang daripada nilai negatif yang ditetapkan, dan ADX lebih besar daripada nilai yang ditetapkan.

##Analisis Kelebihan Strategi ini menggabungkan pelbagai penunjuk untuk menentukan arah trend dan kekuatan relatif stok, yang dapat menapis pecah palsu dengan berkesan.

  1. Indikator ADX dapat menentukan keberadaan dan kekuatan trend dengan berkesan, mengelakkan pembukaan yang kerap dalam pasaran kejutan.

  2. Penunjuk BB %B menilai sama ada stok individu berada pada tahap tinggi atau rendah, yang secara berkesan dapat mengelakkan mengejar tinggi dan menjual rendah.

  3. Penunjuk AO menentukan sama ada terdapat sokongan momentum yang agak kuat semasa pembelian untuk memastikan keberkesanan pecah.

  4. Indikator EMA's golden cross/dead cross digabungkan dengan penilaian arah utama pasaran mengelakkan pembukaan kedudukan terhadap trend.

Ringkasnya, strategi ini dapat mengawal risiko perdagangan dengan berkesan dan mengesan stok yang kuat di pasaran.

##Analisis Risiko Walaupun strategi menggunakan pelbagai penunjuk untuk mengawal risiko, masih ada risiko tertentu:

  1. Gabungan beberapa penunjuk eksponensial sensitif terhadap penyesuaian parameter. Gabungan parameter yang tidak sesuai mungkin gagal mencapai kesan yang diinginkan.

  2. Menuntut momentum yang berlebihan boleh terlepas titik pembalikan pasaran yang sebenar.

  3. Penunjuk seperti EMA mempunyai sifat yang tertunda dan mungkin tidak dapat mencerminkan kesan peristiwa tiba-tiba dalam masa.

  4. Kejadian tiba-tiba yang besar boleh menyebabkan perbezaan penunjuk. Analisis asas harus digabungkan dan strategi boleh ditutup sementara jika perlu.

## Arah Pengoptimuman Strategi ini juga boleh dioptimumkan dalam beberapa aspek:

  1. Gunakan pembelajaran mesin untuk mencari kombinasi parameter yang optimum.

  2. Tambah penunjuk lain yang menentukan trend, seperti CCI dan MACD, untuk membentuk kombinasi penunjuk untuk meningkatkan ketepatan penilaian.

  3. Tambah strategi stop-loss untuk mengawal kerugian tunggal.

  4. Tetapkan masa tunggu untuk mengelakkan tamak yang berlebihan.

## Ringkasan Strategi ini dinamakan Strategi Pengesanan Momentum Empat Faktor. Ia menggunakan ADX, BB %B, AO dan EMA empat penunjuk untuk menentukan titik masuk dan keluar untuk menjejaki saham yang kuat secara dinamik. Strategi ini dapat menentukan arah trend dan kekuatan relatif saham untuk mengawal risiko perdagangan. Seterusnya, pengoptimuman parameter, menambah penunjuk lain, menetapkan masa penahan dan kaedah lain boleh digunakan untuk meningkatkan lagi strategi.


/*backtest
start: 2022-12-04 00:00:00
end: 2023-12-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

//ADX + BB %B + AO + EMA

strategy("ADX + BB %B + AO + EMA", overlay=true, initial_capital=10000)
take_profit_perc = input(title="Take Profit %", type=input.integer, defval=10, minval=1, maxval=100)
stop_loss_perc = input(title="Stop Loss %", type=input.integer, defval=5, minval=1, maxval=100)
bb_overbought = input(title="BB %B Overbought", type=input.integer, defval=75, minval=1, maxval=100)
bb_oversold = input(title="BB %B Oversold", type=input.integer, defval=25, minval=1, maxval=100)
ao_value = input(title="Awesome Oscillator", type=input.integer, defval=2)
adx_value = input(title="ADX", type=input.integer, defval=15)

startDate = input(title="Start Date", type=input.integer, defval=1, minval=1, maxval=31)
startMonth = input(title="Start Month", type=input.integer, defval=1, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer, defval=2018, minval=2008, maxval=2200)

inDateRange = (time >= timestamp(syminfo.timezone, startYear, startMonth, startDate, 0, 0))

ema5 = ema(close, 5)
ema21 = ema(close, 21)
ema50 = ema(close, 50)
ema200 = ema(close, 200)

//BB %B
length = input(20, minval=1)
src = input(close, title="Source")
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")
basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
bbr = (src - lower)/(upper - lower)

//Awesome Oscillator
ao = sma(hl2,5) - sma(hl2,34)

// ADX
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
dirmov(len) =>
	up = change(high)
	down = -change(low)
	plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
	minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
	truerange = rma(tr, len)
	plus = fixnan(100 * rma(plusDM, len) / truerange)
	minus = fixnan(100 * rma(minusDM, len) / truerange)
	[plus, minus]
adx(dilen, adxlen) =>
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)

long_strategy = ema5>ema21 and ema50>ema200 and bbr>(bb_overbought/100) and ao>ao_value and sig>adx_value
short_strategy = ema5<ema21 and ema50<ema200 and bbr<(bb_oversold/100) and ao<-ao_value and sig>adx_value

plot(ema5, color=color.blue)
plot(ema21, color=color.aqua)
plot(ema50, color=color.purple)
plot(ema200, color=color.red)
bgcolor(color=long_strategy ? color.green : na, transp=80)
bgcolor(color=short_strategy ? color.purple : na, transp=80)
    
if inDateRange and long_strategy
    strategy.entry("long", strategy.long)
    strategy.exit("exit", "long", stop=close*(100-stop_loss_perc)/100, limit=close*(100+take_profit_perc)/100)
if inDateRange and short_strategy
    strategy.entry("short", strategy.short)
    strategy.exit("exit", "short", stop=close*(100+stop_loss_perc)/100, limit=close*(100-take_profit_perc)/100)


Lebih lanjut