
Chiến lược này được thiết kế dựa trên chỉ số EMA kép và chỉ số dao động tăng tốc AC. Trong đó, chỉ số EMA kép được sử dụng để xác định hướng xu hướng giá, trong khi chỉ số AC được sử dụng để xác nhận tín hiệu xu hướng và thực hiện hiệu quả lọc. Chiến lược này kết hợp hai chức năng theo dõi xu hướng và lọc tín hiệu, nhằm nâng cao chất lượng tín hiệu và lợi nhuận trong xu hướng.
Chiến lược này bao gồm hai mô-đun:
Mô-đun EMA kép
Sử dụng 2 ngày EMA và 20 ngày EMA để xây dựng chỉ số EMA kép. Khi giá vượt qua 2 ngày EMA, nó được coi là tín hiệu mua; Khi giá vượt qua 20 ngày EMA, nó được coi là tín hiệu bán.
Mô-đun này định hướng xu hướng ngắn hạn và trung hạn của giá, thực hiện theo dõi xu hướng cơ bản.
Mô-đun AC
Sử dụng các giá trị dương- âm của chỉ số dao động tăng tốc AC để xác nhận tín hiệu xu hướng. Chỉ khi cả hai chỉ số EMA và AC đều đi theo cùng một hướng, tín hiệu giao dịch sẽ được tạo ra.
Mô-đun này có thể làm tăng độ tin cậy của tín hiệu bằng cách lọc các tín hiệu giả.
Tóm lại, chiến lược này kết hợp hai EMA đánh giá xu hướng lớn, và các chỉ số AC lọc phá vỡ giả, tạo thành một hệ thống theo dõi xu hướng.
Chiến lược này có những ưu điểm sau:
EMA kép theo dõi xu hướng đường dài, AC loại bỏ tiếng ồn ngắn hạn, kết hợp hiệu quả tốt.
Tín hiệu lọc tín hiệu rất hiệu quả, có thể tránh làm trống mù sau khi thu được nhiều đầu, hoặc làm nhiều mù sau khi thu được đầu trống.
Điều chỉnh tham số linh hoạt, có thể hỗ trợ các tham số điều chỉnh khác nhau về giống và môi trường thị trường, áp dụng rộng rãi.
Các chiến lược được đưa ra rõ ràng, dễ hiểu, giúp các nhà giao dịch định lượng, tối ưu hóa và cải thiện.
Có thể thu được lợi nhuận tốt từ việc theo dõi các loại giống đang có xu hướng.
Chiến lược này cũng có một số rủi ro:
Thiết lập tham số EMA đôi không đúng có thể bỏ lỡ xu hướng ngắn hơn hoặc tạo ra giao dịch dư thừa.
Thiết lập tham số AC không đúng có thể lọc các tín hiệu hiệu quả yếu hơn hoặc không lọc đủ tiếng ồn.
Không thể đối phó với thị trường thay đổi nhanh chóng, chẳng hạn như sự sụt giảm nhanh chóng.
Trong một thị trường bất ổn, không thể có đủ lợi nhuận, nên sử dụng nó như một chiến lược theo dõi xu hướng.
Chính sách này có thể được tối ưu hóa từ các khía cạnh sau:
Kiểm tra nhiều hơn các kết hợp tham số để tìm các tham số tối ưu phù hợp hơn với các đặc điểm của các giống khác nhau.
Thêm mô-đun dừng lỗ, dừng lỗ khi thua lỗ quá lớn.
Các nhà nghiên cứu cho biết, các tín hiệu có thể được tối ưu hóa khi kết hợp với các chỉ số khác.
Phát triển chiến lược kết hợp đường dài và đường ngắn, theo dõi đường dài trong xu hướng, sử dụng giao dịch nhắm mục tiêu đường ngắn để giảm bớt đường dài.
Chiến lược này kết hợp hai EMA phán đoán xu hướng và AC tiếng ồn của tư duy đáng học hỏi. Ưu điểm của chiến lược này là chất lượng tín hiệu tốt, độ tin cậy cao, phù hợp để theo dõi xu hướng giống. Nếu tham số điều chỉnh phù hợp, có thể thu được lợi nhuận phong phú trong tình huống xu hướng.
/*backtest
start: 2023-01-08 00:00:00
end: 2024-01-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 19/01/2022
// This is combo strategies for get a cumulative signal.
//
// First strategy
// This indicator plots 2/20 exponential moving average. For the Mov
// Avg X 2/20 Indicator, the EMA bar will be painted when the Alert criteria is met.
//
// Second strategy
// The Accelerator Oscillator has been developed by Bill Williams
// as the development of the Awesome Oscillator. It represents the
// difference between the Awesome Oscillator and the 5-period moving
// average, and as such it shows the speed of change of the Awesome
// Oscillator, which can be useful to find trend reversals before the
// Awesome Oscillator does.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
EMA20(Length) =>
pos = 0.0
xPrice = close
xXA = ta.ema(xPrice, Length)
nHH = math.max(high, high[1])
nLL = math.min(low, low[1])
nXS = nLL > xXA or nHH < xXA ? nLL : nHH
iff_1 = nXS < close[1] ? 1 : nz(pos[1], 0)
pos := nXS > close[1] ? -1 : iff_1
pos
AC(nLengthSlow,nLengthFast) =>
pos = 0.0
xSMA1_hl2 = ta.sma(hl2, nLengthFast)
xSMA2_hl2 = ta.sma(hl2, nLengthSlow)
xSMA1_SMA2 = xSMA1_hl2 - xSMA2_hl2
xSMA_hl2 = ta.sma(xSMA1_SMA2, nLengthFast)
nRes = xSMA1_SMA2 - xSMA_hl2
cClr = nRes > nRes[1] ? color.blue : color.red
iff_1 = nRes > 0 ? 1 : nz(pos[1], 0)
pos := nRes < 0 ? -1 : iff_1
pos
strategy(title='Combo 2/20 EMA & Accelerator Oscillator (AC)', shorttitle='Combo', overlay=true)
var I1 = '●═════ 2/20 EMA ═════●'
Length = input.int(14, minval=1, group=I1)
var I2 = '●═════ Accelerator Oscillator ═════●'
nLengthSlow = input(33, title="Length Slow", group=I2)
nLengthFast = input(6, title="Length Fast", group=I2)
var misc = '●═════ MISC ═════●'
reverse = input.bool(false, title='Trade reverse', group=misc)
var timePeriodHeader = '●═════ Time Start ═════●'
d = input.int(1, title='From Day', minval=1, maxval=31, group=timePeriodHeader)
m = input.int(1, title='From Month', minval=1, maxval=12, group=timePeriodHeader)
y = input.int(2005, title='From Year', minval=0, group=timePeriodHeader)
StartTrade = time > timestamp(y, m, d, 00, 00) ? true : false
posEMA20 = EMA20(Length)
prePosAC = AC(nLengthSlow,nLengthFast)
iff_1 = posEMA20 == -1 and prePosAC == -1 and StartTrade ? -1 : 0
pos = posEMA20 == 1 and prePosAC == 1 and StartTrade ? 1 : iff_1
iff_2 = reverse and pos == -1 ? 1 : pos
possig = reverse and pos == 1 ? -1 : iff_2
if possig == 1
strategy.entry('Long', strategy.long)
if possig == -1
strategy.entry('Short', strategy.short)
if possig == 0
strategy.close_all()
barcolor(possig == -1 ? #b50404 : possig == 1 ? #079605 : #0536b3)