
Strategi ini dinamakan strategi pengesanan pergerakan empat faktor. Strategi ini menggunakan pengesanan arah trend dalam indikator pergerakan arah rata-rata ((ADX), pengesanan peratusan B band ((BB % B) untuk menilai saham yang agak kuat, garis kesamaan ajaib ((AO) untuk menilai pergerakan dan purata bergerak indeks untuk tempoh yang berbeza ((EMA) untuk menilai banyak ruang, untuk mengesan pergerakan harga saham, mengejar saham yang kuat, mengelakkan kesan saham yang lemah.
Strategi ini menggunakan empat indikator teknikal yang berbeza untuk menentukan masa membeli dan menjual. Logik penilaian khusus adalah seperti berikut:
Syarat kemasukan berganda: EMA 21 hari pada EMA hari ke-50, EMA 200 hari pada EMA hari ke-50, BB % B lebih besar daripada garis beli-belah yang ditetapkan, AO lebih besar daripada nilai positif yang ditetapkan, ADX lebih besar daripada nilai yang ditetapkan.
Syarat kemasukan kosong: 5 hari EMA melalui 21 hari EMA, 50 hari EMA melalui 200 hari EMA, BB % B kurang daripada garis oversold yang ditetapkan, AO kurang daripada nilai negatif yang ditetapkan, ADX lebih besar daripada nilai yang ditetapkan 。
Analisis kelebihan strategi
Strategi ini menggabungkan pelbagai petunjuk untuk menentukan arah trend dan kekuatan saham yang relatif, yang dapat menyaring dengan berkesan penipuan palsu. Kelebihan khusus adalah sebagai berikut:
Indeks ADX dapat menilai kewujudan dan kekuatan trend dengan berkesan, mengelakkan pembukaan kedudukan yang kerap dalam pasaran yang bergolak;
Indeks BB %B menentukan sama ada saham berada di kedudukan yang tinggi atau rendah, yang berkesan untuk mengelakkan mengejar kenaikan dan penurunan;
Penunjuk AO menilai sama ada terdapat sokongan momentum yang kuat semasa pembelian, yang menjamin kesahihan penembusan;
Indeks EMA berpasangan dengan garpu emas / garpu mati untuk menentukan arah utama pasaran dan mengelakkan kedudukan berlawanan.
Secara keseluruhannya, strategi ini dapat mengawal risiko perdagangan dengan berkesan dan menjejaki saham yang kuat di pasaran.
Walaupun strategi ini menggunakan pelbagai indikator untuk mengawal risiko secara menyeluruh, terdapat beberapa risiko:
Penggunaan pelbagai kombinasi indikator berjenis indeks, sensitif terhadap penyesuaian parameter, kombinasi parameter yang tidak sesuai mungkin tidak dapat berfungsi dengan baik.
Terlalu mengejar momentum mungkin terlepas titik perubahan sebenar pasaran. Siklus pemegang saham harus dikawal dengan betul, dan hentikan kerugian tepat pada masanya.
Indikator seperti EMA mempunyai keterlambatan dan mungkin tidak dapat mencerminkan kesan kejadian yang tidak dijangka. Ia harus dikombinasikan dengan indikator lain atau memendekkan kitaran MA.
Kejadian besar yang tidak dijangka boleh menyebabkan penarikan indikator, perlu digabungkan dengan analisis asas, dan strategi boleh ditutup sementara jika perlu.
Strategi ini juga boleh dioptimumkan dalam beberapa aspek:
Menggunakan kaedah pembelajaran mesin dan lain-lain untuk mencari kombinasi parameter terbaik.
Tambahan kepada petunjuk trend penghakiman lain, seperti CCI, MACD, dan lain-lain, membentuk gabungan indikator penyu, meningkatkan ketepatan penghakiman.
Menyertai strategi stop loss untuk mengawal kerugian tunggal.
Tetapkan tempoh pegangan untuk mengelakkan keserakahan.
Strategi ini dipanggil strategi pengesanan pergerakan empat faktor, yang menggunakan empat indikator untuk menentukan masa beli dan jual beli, ADX, BB % B, AO dan EMA, untuk mengesan pergerakan saham yang kuat. Strategi ini dapat menentukan arah trend dan kekuatan saham yang relatif, mengawal risiko perdagangan. Langkah seterusnya dapat memperbaiki strategi ini dengan cara mengoptimumkan parameter, menambahkan indikator lain, dan mengatur masa memegang kedudukan.
/*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)