Chiến lược xu hướng tăng giá đa EMA

Tác giả:ChaoZhang, Ngày: 2024-01-22 12:04:05
Tags:

img

Tổng quan

Chiến lược xu hướng tăng đa EMA là một chiến lược theo xu hướng dựa trên nhiều đường trung bình động theo cấp số nhân (EMA) của các giai đoạn khác nhau để xác định xu hướng. Nó đi dài khi giá vượt quá đường EMA 10 ngày và các đường EMA dài hơn khác đang được sắp xếp theo hướng tăng; và sử dụng mức dừng lỗ 8% để khóa lợi nhuận.

Chiến lược logic

Chiến lược này sử dụng 6 EMA của các giai đoạn 10, 20, 50, 100, 150 và 200 ngày. Các EMA này được sử dụng để xác định giai đoạn chu kỳ hiện tại của thị trường. Khi các EMA ngắn hơn (ví dụ 10 ngày) vượt qua các EMA dài hơn (ví dụ 20-, 50 ngày), nó báo hiệu thị trường đã bước vào giai đoạn đánh dấu của xu hướng tăng.

Cụ thể, chiến lược sẽ kéo dài khi đáp ứng các điều kiện sau:

  1. EMA 10 ngày cao hơn EMA 20 ngày
  2. EMA 20 ngày cao hơn EMA 50 ngày
  3. EMA 100 ngày cao hơn EMA 150 ngày
  4. EMA 150 ngày cao hơn EMA 200 ngày
  5. Giá đóng vượt qua đường EMA 10 ngày

Sau khi mở vị trí dài, lệnh dừng lỗ 8% được sử dụng để khóa lợi nhuận. Điều đó có nghĩa là vị trí sẽ được giữ mở miễn là giá không giảm hơn 8% so với giá nhập cảnh. Một khi mức rút vượt quá 8%, vị trí sẽ được đóng để dừng lỗ.

Tóm lại, ý tưởng chính của chiến lược này là bước vào xu hướng tăng khi được xác nhận bởi sự sắp xếp EMA nhiều lần, và sử dụng dừng lỗ để khóa lợi nhuận.

Phân tích lợi thế

Chiến lược xu hướng tăng giá Multi-EMA có những điểm mạnh chính sau:

  1. Nó có thể lọc hiệu quả các vụ phá vỡ giả và đảm bảo bắt các chu kỳ đánh giá, giảm các giao dịch không cần thiết.
  2. Nhiều bộ lọc EMA làm giảm khả năng dừng lỗ bị tấn công, cho phép giữ các vị trí an toàn hơn.
  3. Việc dừng lỗ 8% không quá chặt chẽ cũng không quá lỏng lẻo, cân bằng lấy lợi nhuận và dừng lỗ.
  4. Chiến lược cho phép điều chỉnh tham số linh hoạt để tối ưu hóa trên các sản phẩm khác nhau.

Phân tích rủi ro

Ngoài ra còn có một số rủi ro cần lưu ý cho chiến lược này:

  1. Dòng EMA không thể đảm bảo hướng xu hướng cho 100% trường hợp, một số whipsaws vẫn có thể xảy ra.
  2. Việc dừng lại 8% có thể từ bỏ một số lợi nhuận trong các xu hướng lớn.
  3. Các hệ thống EMA có sự chậm trễ vốn có, xác nhận các điểm chuyển đổi có thể bị trì hoãn một chút.

Để đối phó với những rủi ro này, chúng ta có thể tối ưu hóa bằng cách điều chỉnh các khoảng thời gian EMA hoặc kết hợp các chỉ số phụ để cải thiện phán đoán.

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

Xem xét các đặc điểm của chiến lược này, việc tối ưu hóa trong tương lai có thể tập trung vào các khía cạnh sau:

  1. Kiểm tra các kết hợp EMA khác nhau và các tập hợp thời gian để tìm các thông số tối ưu.
  2. Thêm các chỉ số chỉ số biến động để đánh giá sức mạnh xu hướng để tránh các mục không cần thiết.
  3. Bao gồm nhiều chỉ số lọc như MACD, KDJ để xác nhận sự liên kết tăng.
  4. Sử dụng các thuật toán học máy để thực hiện stop loss động.

Kết luận

Nhìn chung, Chiến lược xu hướng bò đa EMA là một hệ thống theo xu hướng mạnh mẽ và đáng tin cậy, cân bằng xác định xu hướng và kiểm soát rủi ro. Vẫn có tiềm năng cải thiện lớn thông qua điều chỉnh tham số và tối ưu hóa thuật toán. Đây là một chiến lược hiệu quả đáng thử và nghiên cứu.


/*backtest
start: 2023-01-15 00:00:00
end: 2024-01-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('SirSeff\'s EMA Rainbow', overlay=true)
// Testing Start dates
testStartYear = input(2000, 'Backtest Start Year')
testStartMonth = input(1, 'Backtest Start Month')
testStartDay = input(1, 'Backtest Start Day')
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0)
//Stop date if you want to use a specific range of dates
testStopYear = input(2100, 'Backtest Stop Year')
testStopMonth = input(12, 'Backtest Stop Month')
testStopDay = input(30, 'Backtest Stop Day')
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)

testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
// Component Code Stop

//TSP
trailStop = input.float(title='Long Trailing Stop (%)', minval=0.0, step=0.1, defval=8) * 0.01

longStopPrice = 0.0
longStopPrice := if strategy.position_size > 0
    stopValue = close * (1 - trailStop)
    math.max(stopValue, longStopPrice[1])
else
    0

//PLOTS
plot(series=strategy.position_size > 0 ? longStopPrice : na, color=color.new(color.red, 0), style=plot.style_linebr, linewidth=1, title='Long Trail Stop', offset=1, title='Long Trail Stop')
plot(ta.ema(close, 20))
plot(ta.ema(close, 50))
plot(ta.ema(close, 100))
plot(ta.ema(close, 150))
plot(ta.ema(close, 200))

//OPEN
longCondition =  ta.ema(close, 10) > ta.ema(close, 20) and ta.ema(close, 20) > ta.ema(close, 50) and ta.ema(close, 100) > ta.ema(close, 150) and ta.ema(close, 150) > ta.ema(close, 200)
if longCondition and ta.crossover(close,ta.ema(close,10)) and testPeriod()
    strategy.entry("BUY1", strategy.long)
    
if longCondition and ta.crossover(ta.ema(close,10),ta.ema(close,20)) and testPeriod()
    strategy.entry("BUY2'", strategy.long)

//CLOSE @ TSL
if strategy.position_size > 0 and testPeriod()
    strategy.exit(id='TSP', stop=longStopPrice)
    


Thêm nữa