Chiến lược xu hướng tăng giá trung bình động nhiều lần


Ngày tạo: 2024-01-22 12:04:05 sửa đổi lần cuối: 2024-01-22 12:04:05
sao chép: 0 Số nhấp chuột: 661
1
tập trung vào
1617
Người theo dõi

Chiến lược xu hướng tăng giá trung bình động nhiều lần

Tổng quan

Chiến lược xu hướng đa đầu của nhiều đường trung bình là một chiến lược theo dõi xu hướng dựa trên việc xây dựng các phán đoán về đường trung bình di chuyển của chỉ số ((EMA) trên nhiều chu kỳ khác nhau. Nó sẽ làm nhiều hơn khi giá vượt qua đường EMA 10 ngày và các đường EMA khác có chu kỳ dài hơn; sau đó sử dụng lệnh dừng theo dõi 8% để khóa lợi nhuận.

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

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

Cụ thể, một chiến lược sẽ mở thêm khi đáp ứng các điều kiện sau:

  1. Đường EMA ngày 10 cao hơn đường EMA ngày 20
  2. Đường EMA 20 cao hơn đường EMA 50
  3. Đường EMA 100 ngày cao hơn 150 ngày
  4. Đường EMA 150 ngày cao hơn đường EMA 200 ngày
  5. Đường EMA 10 ngày trên giá đóng cửa

Sau khi mở thêm vị trí, chiến lược sẽ sử dụng 8% dừng lỗ để khóa lợi nhuận. Nói cách khác, miễn là giá cổ phiếu không giảm hơn 8% giá mua, thì sẽ tiếp tục giữ vị trí đó.

Nhìn chung, ý tưởng cốt lõi của chiến lược này là: sử dụng nhiều điều kiện lọc EMA để xác định xu hướng đa đầu, sau đó dừng lỗ để khóa lợi nhuận.

Phân tích lợi thế

Chiến lược này có một số ưu điểm chính:

  1. Có thể lọc hiệu quả các đột phá giả mạo, đảm bảo nắm bắt giai đoạn đánh dấu của chu kỳ giá, giảm số lần giao dịch không cần thiết.
  2. Việc lọc nhiều đường EMA có thể làm giảm khả năng phá vỡ lỗ hổng và giữ vị trí an toàn hơn.
  3. Lệnh dừng theo 8% không quá chặt hoặc quá lỏng, có thể khóa lợi nhuận tốt và tránh dừng quá thường xuyên.
  4. Chiến lược này có khả năng điều chỉnh các tham số linh hoạt để tìm ra sự kết hợp tham số tốt nhất cho các giống khác nhau.

Phân tích rủi ro

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

  1. Lệnh xếp hàng của EMA không thể xác định 100% xu hướng, và vẫn có thể có sự cố.
  2. 8% lỗ hổng theo dõi có thể làm mất một phần lợi nhuận trong một tình huống lớn.
  3. Hệ thống đường trung bình của EMA tự nó bị tụt hậu với sự thay đổi giá, và điểm biến đổi có thể bị tụt hậu một chút.

Đối với các rủi ro trên, chúng ta có thể tối ưu hóa và cải thiện bằng cách điều chỉnh thích hợp các tham số chu kỳ EMA hoặc giới thiệu các chỉ số khác như một phán đoán hỗ trợ.

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

Với những đặc điểm của chiến lược này, chúng ta có thể tối ưu hóa trong tương lai từ những khía cạnh sau:

  1. Kiểm tra các tham số khác nhau của EMA và chu kỳ để tìm tham số tối ưu.
  2. Thêm các chỉ số như chỉ số biến động để đánh giá cường độ của xu hướng, tránh đặt vị trí không cần thiết.
  3. Thêm thêm các chỉ số lọc như MACD, KDJ và các chỉ số khác để đánh giá nhiều hàng đầu.
  4. Tiến hành các thuật toán học máy để thực hiện dừng động.

Tóm tắt

Chiến lược xu hướng đa đầu đa trung bình là một chiến lược theo dõi xu hướng vững chắc và đáng tin cậy hơn. Nó đồng thời kết hợp phán đoán xu hướng và kiểm soát rủi ro. Có rất nhiều chỗ cải thiện thông qua điều chỉnh tham số và tối ưu hóa thuật toán. Nói chung, đây là một chiến lược hiệu quả đáng để thử và nghiên cứu.

Mã nguồn chiến lược
/*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)