Empat faktor Momentum Tracking Trading Strategy Berdasarkan ADX, BB %B, AO dan EMA

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

img

## Ringkasan Strategi ini disebut Strategy Pelacakan Momentum Empat Faktor. Ini mengintegrasikan Indeks Gerakan Arah Rata-rata (ADX) untuk menentukan arah tren, Bollinger Bands Persentase B (BB %B) untuk menilai kekuatan relatif saham, Awesome Oscillator (AO) untuk menentukan momentum dan siklus yang berbeda Eksponensial Moving Averages (EMA) untuk menilai posisi panjang dan pendek, mencapai pelacakan dinamis harga saham dan mengejar saham yang kuat dan menghindari yang lemah.

## Prinsip Strategi
Strategi ini menggunakan empat indikator teknis yang berbeda untuk menentukan titik masuk dan keluar.

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

Kondisi masuk pendek: EMA 5 hari melintasi EMA 21 hari, EMA 50 hari melintasi EMA 200 hari, BB %B kurang dari garis oversold yang ditetapkan, AO kurang dari nilai negatif yang ditetapkan, dan ADX lebih besar dari nilai yang ditetapkan.

##Analisis Keuntungan Strategi ini menggabungkan beberapa indikator untuk menentukan arah tren dan kekuatan relatif saham, yang dapat secara efektif menyaring false breakout.

  1. Indikator ADX dapat secara efektif menentukan keberadaan dan kekuatan tren, menghindari pembukaan yang sering di pasar shock.

  2. Indikator BB % B menilai apakah saham individu berada pada tingkat tinggi atau rendah, yang secara efektif dapat menghindari mengejar puncak dan menjual titik terendah.

  3. Indikator AO menentukan apakah ada dukungan momentum yang relatif kuat selama pembelian untuk memastikan efektivitas breakout.

  4. Indikator EMA golden cross/dead cross dikombinasikan dengan penilaian arah utama pasar menghindari pembukaan posisi melawan tren.

Singkatnya, strategi ini dapat secara efektif mengendalikan risiko perdagangan dan melacak saham yang kuat di pasar.

##Analisis Risiko Meskipun strategi menggunakan beberapa indikator untuk mengendalikan risiko, masih ada risiko tertentu:

  1. Kombinasi dari beberapa indikator eksponensial sensitif terhadap penyesuaian parameter. Kombinasi parameter yang tidak tepat mungkin gagal mencapai efek yang diinginkan.

  2. Menuntut momentum yang berlebihan dapat melewatkan titik pembalikan pasar yang sebenarnya.

  3. Indikator seperti EMA memiliki sifat keterlambatan dan mungkin tidak dapat mencerminkan dampak peristiwa tiba-tiba dalam waktu.

  4. Kejadian mendadak besar dapat menyebabkan divergensi indikator. analisis fundamental harus dikombinasikan dan strategi dapat ditutup sementara jika perlu.

##Optimisasi Arah Strategi ini juga dapat dioptimalkan dalam beberapa aspek:

  1. Gunakan pembelajaran mesin untuk menemukan kombinasi parameter yang optimal.

  2. Tambahkan indikator lain yang menentukan tren, seperti CCI dan MACD, untuk membentuk kombinasi indikator untuk meningkatkan akurasi penilaian.

  3. Tambahkan strategi stop-loss untuk mengendalikan kerugian tunggal.

  4. Tetapkan waktu tunggu untuk menghindari keserakahan yang berlebihan.

## Ringkasan Strategi ini disebut Four-factor Momentum Tracking Strategy. Ini menggunakan ADX, BB %B, AO dan EMA empat indikator untuk menentukan titik masuk dan keluar untuk secara dinamis melacak saham yang kuat. Strategi dapat secara efektif menentukan arah tren dan kekuatan relatif saham untuk mengendalikan risiko perdagangan. Selanjutnya, optimasi parameter, menambahkan indikator lain, mengatur waktu ditahan dan metode lain dapat digunakan untuk meningkatkan strategi lebih lanjut.


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