Chiến lược theo xu hướng dựa trên chỉ số EMA và AC kép

Tác giả:ChaoZhang, Ngày: 2024-01-15 12:02:54
Tags:

img

Tổng quan

Chiến lược này được thiết kế dựa trên các chỉ số dao động gia tốc EMA và AC kép. 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 để lọc hiệu ứng. Chiến lược này kết hợp cả hai chức năng theo xu hướng và lọc tín hiệu để cải thiện chất lượng tín hiệu và lợi nhuận từ xu hướng.

Chiến lược logic

Chiến lược bao gồm hai mô-đun:

  1. Mô-đun EMA kép

    • Xây dựng một chỉ số EMA kép bằng cách sử dụng EMA 2 ngày và EMA 20 ngày. Một tín hiệu mua được tạo ra khi giá vượt qua EMA 2 ngày. Một tín hiệu bán được tạo ra khi giá vượt qua EMA 20 ngày.

    • Mô-đun này xác định hướng xu hướng ngắn hạn và trung hạn để theo xu hướng cơ bản.

  2. Mô-đun AC

    • Sử dụng các giá trị dương và âm của dao động gia tốc AC để xác nhận tín hiệu xu hướng.

    • Mô-đun này lọc ra các tín hiệu sai và cải thiện độ tin cậy.

Tóm lại, chiến lược này tích hợp EMA kép để phát hiện các xu hướng chính và chỉ số AC để lọc các sự đột phá sai, hình thành một xu hướng có hệ thống theo phương pháp.

Phân tích lợi thế

Những lợi thế của chiến lược này là:

  1. EMA kép theo dõi xu hướng trung bình dài hạn trong khi AC lọc ra tiếng ồn ngắn hạn, hiệu ứng kết hợp tuyệt vời.

  2. Hiệu ứng lọc tuyệt vời để tránh bán sau khi lợi nhuận dài hoặc mua sau khi lợi nhuận ngắn.

  3. Điều chỉnh tham số linh hoạt thích nghi với các sản phẩm và môi trường thị trường khác nhau.

  4. Logic chiến lược rõ ràng, dễ hiểu, tối ưu hóa và cải thiện.

  5. Xu hướng hợp lý sau tiềm năng lợi nhuận cho các sản phẩm xu hướng.

Phân tích rủi ro

Có một số rủi ro trong chiến lược này:

  1. Việc thiết lập tham số EMA kép không chính xác có thể bỏ lỡ xu hướng ngắn hơn hoặc tạo ra các giao dịch dư thừa.

  2. Cài đặt tham số AC không chính xác có thể lọc ra các tín hiệu hợp lệ nhưng yếu hơn hoặc không lọc đủ tiếng ồn.

  3. Không thể thích nghi với những thị trường thay đổi nhanh chóng, như những vụ tai nạn đột ngột.

  4. Không đủ lợi nhuận trong các thị trường khác nhau, nên được sử dụng như một chiến lược theo xu hướng.

Hướng dẫn tối ưu hóa

Chiến lược có thể được tối ưu hóa trong các khía cạnh sau:

  1. Kiểm tra nhiều kết hợp tham số hơn để tìm các tham số tối ưu phù hợp với các đặc điểm sản phẩm khác nhau.

  2. Thêm mô-đun dừng lỗ để thoát khỏi lỗ quá lớn.

  3. Chăm sóc tín hiệu bằng nhiều chỉ số hơn.

  4. Phát triển các chiến lược combo dài ngắn để theo dõi xu hướng trung bình dài hạn, sử dụng các giao dịch ngắn hạn để giảm hoặc thêm các vị trí dọc theo xu hướng.

Kết luận

Ý tưởng kết hợp EMA kép cho xu hướng và AC để lọc tiếng ồn là đáng để học. Chiến lược này có tín hiệu chất lượng và độ tin cậy, phù hợp với việc theo dõi các sản phẩm xu hướng. Với điều chỉnh tham số thích hợp, có thể đạt được lợi nhuận lớn bằng cách sử dụng xu hướng sử dụng chiến lược này.


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

Thêm nữa