Chiến lược giao dịch theo dõi động lực bốn yếu tố dựa trên ADX, BB %B, AO và EMA

Tác giả:ChaoZhang, Ngày: 2023-12-11 16:24:11
Tags:

img

## Tổng quan Chiến lược này được đặt tên là Chiến lược theo dõi đà động bốn yếu tố. Nó tích hợp chỉ số chuyển động theo hướng trung bình (ADX) để xác định hướng xu hướng, Bollinger Bands Percentage B (BB % B) để đánh giá sức mạnh tương đối của cổ phiếu, Awesome Oscillator (AO) để xác định đà động và các trung bình chuyển động nhân tố chu kỳ khác nhau (EMA) để đánh giá các vị trí dài và ngắn, đạt được theo dõi năng động giá cổ phiếu và theo đuổi cổ phiếu mạnh và tránh những cổ phiếu yếu.

## Nguyên tắc chiến lược
Chiến lược sử dụng bốn chỉ số kỹ thuật khác nhau để xác định các điểm vào và ra.

Điều kiện đầu vào dài: EMA 5 ngày vượt qua EMA 21 ngày, EMA 50 ngày vượt qua EMA 200 ngày, BB %B lớn hơn đường mua quá mức, AO lớn hơn giá trị tích cực và ADX lớn hơn giá trị thiết lập.

Điều kiện nhập cảnh ngắn: EMA 5 ngày vượt dưới EMA 21 ngày, EMA 50 ngày vượt dưới EMA 200 ngày, BB %B thấp hơn đường bán quá mức, AO thấp hơn giá trị âm thiết và ADX lớn hơn giá trị thiết lập.

## Phân tích lợi thế Chiến lược kết hợp nhiều chỉ số để xác định hướng xu hướng và sức mạnh tương đối của cổ phiếu, có thể lọc hiệu quả các sự đột phá sai.

  1. Chỉ số ADX có thể xác định hiệu quả sự tồn tại và sức mạnh của xu hướng, tránh mở thường xuyên trong thị trường sốc.

  2. Chỉ số BB % B đánh giá liệu các cổ phiếu cá nhân có ở mức cao hay thấp, có thể tránh theo đuổi mức cao và bán thấp.

  3. Chỉ số AO xác định liệu có hỗ trợ động lực tương đối mạnh trong quá trình mua để đảm bảo hiệu quả của sự phá vỡ hay không.

  4. Chỉ số EMA đường chéo vàng / đường chéo chết kết hợp với đánh giá về hướng chính của thị trường tránh mở các vị trí chống lại xu hướng.

Tóm lại, chiến lược này có thể kiểm soát hiệu quả rủi ro giao dịch và theo dõi các cổ phiếu mạnh trên thị trường.

## Phân tích rủi ro Mặc dù chiến lược sử dụng nhiều chỉ số để kiểm soát rủi ro, nhưng vẫn có một số rủi ro:

  1. Sự kết hợp của nhiều chỉ số biểu thức rất nhạy cảm với các điều chỉnh tham số.

  2. Theo đuổi đà tăng quá mức có thể bỏ lỡ các điểm đảo ngược thực sự của thị trường.

  3. Các chỉ số như EMA có tính chất chậm trễ và có thể không thể phản ánh tác động của các sự kiện đột ngột theo thời gian.

  4. Các sự kiện đột ngột lớn có thể gây ra sự khác biệt về chỉ số.

##Hướng tối ưu hóa Chiến lược cũng có thể được tối ưu hóa trong một số khía cạnh:

  1. Sử dụng máy học để tìm kết hợp thông số tối ưu.

  2. Thêm các chỉ số khác xác định xu hướng, chẳng hạn như CCI và MACD, để tạo thành một kết hợp chỉ số để cải thiện độ chính xác đánh giá.

  3. Thêm các chiến lược dừng lỗ để kiểm soát lỗ đơn.

  4. Đặt thời gian chờ để tránh tham lam quá mức.

##Tóm lại Chiến lược này được đặt tên là Chiến lược theo dõi động lực bốn yếu tố. Nó sử dụng ADX, BB %B, AO và EMA bốn chỉ số để xác định các điểm vào và ra để theo dõi động các cổ phiếu mạnh. Chiến lược có thể xác định hiệu quả hướng xu hướng và sức mạnh tương đối của cổ phiếu để kiểm soát rủi ro giao dịch. Tiếp theo, tối ưu hóa tham số, thêm các chỉ số khác, đặt thời gian giữ và các phương pháp khác có thể được sử dụng để cải thiện thêm chiến lược.


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


Thêm nữa