Chiến lược theo dõi xu hướng tín hiệu kép


Ngày tạo: 2023-11-02 17:02:06 sửa đổi lần cuối: 2023-11-02 17:02:06
sao chép: 0 Số nhấp chuột: 588
1
tập trung vào
1617
Người theo dõi

Chiến lược theo dõi xu hướng tín hiệu kép

Tổng quan

Chiến lược này sử dụng hai chỉ số EMA và Awesome Oscillator kết hợp để xác định và theo dõi xu hướng. Trong đó, EMA nhanh chóng đánh giá hướng xu hướng gần đây, và bộ lọc của Awesome Oscillator cung cấp thời gian nhập cảnh. Tên chiến lược: Chiến lược theo dõi xu hướng tín hiệu kép Có thể tóm tắt chính xác các chức năng chính của chiến lược.

Nguyên tắc chiến lược

Chiến lược này chủ yếu sử dụng hai chỉ số kỹ thuật EMA và Awesome Oscillator để lọc tín hiệu, logic cụ thể như sau:

  1. Tính toán EMA 2 chu kỳ và 20 chu kỳ, khi EMA 2 chu kỳ phá vỡ 20 chu kỳ EMA từ dưới lên, đánh giá là xu hướng tăng; khi EMA 2 chu kỳ phá vỡ 20 chu kỳ EMA từ lên xuống, đánh giá là xu hướng giảm.

  2. Tính toán Awesome Oscillator, nó được lấy từ đường trung bình di chuyển nhanh trừ đường trung bình di chuyển chậm, sau đó lấy đường trung bình di chuyển nhanh trừ đường MACD để có được đường sườn sườn sườn.

  3. Chỉ khi EMA hiển thị xu hướng tăng và AO hiển thị tín hiệu mua đồng thời, tín hiệu mua cuối cùng được tạo ra; Chỉ khi EMA hiển thị xu hướng giảm và AO hiển thị tín hiệu bán đồng thời, tín hiệu bán cuối cùng được tạo ra.

  4. Thông qua cơ chế lọc hai tín hiệu, bạn có thể giảm hiệu quả các hoạt động phá vỡ giả và theo dõi hướng trung bình của xu hướng.

Phân tích lợi thế

Chiến lược này có những ưu điểm sau:

  1. Bộ lọc kết hợp hai dây, có thể làm giảm giao dịch sai do tiếng ồn. EMA xác định hướng xu hướng lớn, bộ lọc AO vào thời gian, kết hợp với nhau có thể làm tăng độ tin cậy của tín hiệu.

  2. Phản ứng Sensitivity Rất nhanh, có thể kịp thời nắm bắt sự đảo ngược xu hướng trong thời gian ngắn. EMA chu kỳ 2 rất nhạy cảm với đột phá, có thể nhanh chóng đánh giá liệu xu hướng có thay đổi trong thời gian gần đây hay không.

  3. Awesome Oscillator lọc lại MACD, có thể xác định hiệu quả các đột phá giả trong xu hướng và tránh các hoạt động đảo ngược không cần thiết.

  4. Định hướng chiến lược, theo dõi xu hướng trung hạn. EMA xác định xu hướng cơ bản, AO lọc thêm để đảm bảo giao dịch phù hợp với xu hướng lớn, có thể tiếp tục nắm bắt xu hướng trung hạn.

  5. Các tham số chiến lược được lựa chọn hợp lý, 2 chu kỳ và 20 chu kỳ EMA để nắm bắt sự thay đổi giá của các chu kỳ khác nhau, 5 chu kỳ và 34 chu kỳ tham số AO được tối ưu hóa để có thể nhận biết tốt hơn các đặc điểm hình dạng trong thời gian ngắn.

Phân tích rủi ro

Chiến lược này cũng có một số rủi ro:

  1. Trong trường hợp xung đột, EMA và AO có thể phát ra nhiều tín hiệu sai, dẫn đến giao dịch không cần thiết. Bạn có thể giảm nguy cơ sai lầm bằng cách điều chỉnh tham số chu kỳ EMA.

  2. AO trong một số trường hợp có thể bị trễ EMA, dẫn đến sự khác biệt thời gian của tín hiệu, các tham số AO có thể được tối ưu hóa thích hợp để đáp ứng nhanh hơn với đột phá.

  3. Cài đặt các tham số EMA và AO cho các đặc điểm ngắn và trung hạn, yêu cầu về chất lượng dữ liệu và sức mạnh tính toán cao hơn, cần điều chỉnh theo các đặc điểm khác nhau.

  4. Giao dịch thường xuyên sẽ tạo ra nhiều phí xử lý và chi phí điểm trượt hơn. Có thể nới lỏng các tiêu chuẩn Exit của chiến lược một cách thích hợp, kéo dài thời gian nắm giữ.

  5. Chiến lược không tính đến xu hướng chu kỳ lớn và các mức kháng cự hỗ trợ quan trọng, nên kết hợp nhiều yếu tố hơn để đảm bảo hướng giao dịch đúng.

Hướng tối ưu hóa

Chiến lược này có thể được tối ưu hóa bằng cách:

  1. Tiếp theo, EMA sẽ đưa ra các chỉ số định hướng xu hướng, hỗ trợ EMA trong việc định hướng xu hướng lớn, chẳng hạn như các chỉ số bổ sung của các băng tần trung bình di chuyển, ATR và các chỉ số khác.

  2. Thêm cơ chế nhận diện điểm kháng cự hỗ trợ quan trọng, chẳng hạn như đường rút Fibonacci, chỉ phát tín hiệu gần điểm quan trọng. ◯ Tránh đặt hàng ở vị trí bất lợi.

  3. Tối ưu hóa sự kết hợp của các tham số EMA và AO để tăng hiệu quả kết hợp cả hai. Ví dụ: sử dụng thuật toán di truyền lớp để tự động tìm kiếm các cặp tham số tốt nhất.

  4. Tăng cơ chế Exit Stop Loss. Khi giá vượt qua Swing High / Low gần đây, hãy dừng lỗ và kiểm soát lỗ đơn.

  5. Kiểm tra hiệu quả của chiến lược sử dụng dữ liệu lịch sử. Kiểm tra xem có thể ổn định lợi nhuận hay không và kết quả kiểm tra lại có phù hợp với mong đợi hay không.

  6. Đàn đĩa mô phỏng điều chỉnh tham số, dần dần điều chỉnh tham số để cải thiện hiệu quả của chỉ số thực. Chứng minh sức mạnh của tham số, để có được sự kết hợp tham số ổn định tốt hơn.

Tóm tắt

Chiến lược này có ý tưởng tổng thể rõ ràng, sử dụng hai chỉ số để xác định định hướng của xu hướng lớn của EMA, kết hợp các tín hiệu lọc AO để kiểm tra hai lần. Có thể xác định xu hướng hiệu quả, theo dõi hành vi trung hạn. Nhưng cũng có một số rủi ro và thiếu sót, cần tiếp tục tối ưu hóa thử nghiệm để tăng sự ổn định. Điều quan trọng là chọn loại và tham số phù hợp, kết hợp với phong cách và luật của nhà giao dịch để áp dụng.

Mã nguồn chiến lược
/*backtest
start: 2022-10-26 00:00:00
end: 2023-11-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 27/04/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
//    This indicator plots the oscillator as a histogram where blue denotes 
//    periods suited for buying and red . for selling. If the current value 
//    of AO (Awesome Oscillator) is above previous, the period is considered 
//    suited for buying and the period is marked blue. If the AO value is not 
//    above previous, the period is considered suited for selling and the 
//    indicator marks it as red.
//
// 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,nLengthMA,nLengthEMA,nLengthWMA,bShowWMA,bShowMA,bShowEMA) =>
    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
    xResWMA = ta.wma(nRes, nLengthWMA)
    xResMA = ta.sma(nRes, nLengthMA)
    xResEMA = ta.ema(nRes, nLengthEMA)
    xSignalSeries = bShowWMA ? xResWMA :
                     bShowMA ? xResMA : 
                      bShowEMA ? xResEMA : na
    pos :=  xSignalSeries[2] < 0 and xSignalSeries[1] > 0? 1:
    	     xSignalSeries[2] > 0 and xSignalSeries[1] < 0 ? -1 : nz(pos[1], 0)
    pos

strategy(title='Combo 2/20 EMA & Bill  Awesome Oscillator (AC)', shorttitle='Combo', overlay=true)
var I1 = '●═════ 2/20 EMA ═════●'
Length = input.int(14, minval=1, group=I1)
var I2 = '●═════  Awesome Oscillator (AC) ═════●'
nLengthSlow = input.int(34, minval=1, title="Length Slow", group=I2)
nLengthFast = input.int(5, minval=1, title="Length Fast", group=I2)
nLengthMA = input.int(15, minval=1, title="MA", group=I2)
nLengthEMA = input.int(15, minval=1, title="EMA", group=I2)
nLengthWMA = input.int(15, minval=1, title="WMA", group=I2)
bShowWMA = input.bool( defval=true, title="trading WMA", group=I2)
bShowMA = input.bool( defval=false, title="trading MA", group=I2)
bShowEMA = input.bool( defval=false, title="trading EMA", 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,nLengthMA,nLengthEMA,nLengthWMA,bShowWMA,bShowMA,bShowEMA)
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)