Chiến lược theo xu hướng VWMA dựa trên góc với lệnh dừng lỗ động

VWMA EMA MA PVSRA Angle BIAS
Ngày tạo: 2025-02-18 13:42:01 sửa đổi lần cuối: 2025-02-18 13:42:01
sao chép: 2 Số nhấp chuột: 356
1
tập trung vào
1617
Người theo dõi

Chiến lược theo xu hướng VWMA dựa trên góc với lệnh dừng lỗ động

Tổng quan

Đây là một chiến lược theo dõi xu hướng dựa trên VWMA và EMA, kết hợp phân tích góc giá và cơ chế dừng theo dõi động. Chiến lược này chủ yếu xác định thời điểm vào cuộc bằng cách giám sát giao thoa của VWMA với đường trung bình di chuyển nhanh, kết hợp với các điều kiện góc của chuyển động giá, và sử dụng tỷ lệ phần trăm để theo dõi dừng để quản lý rủi ro.

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

Logic cốt lõi của chiến lược này dựa trên các thành phần chính sau:

  1. Sử dụng VWMA 25 chu kỳ làm chỉ số xu hướng chính
  2. VWMA 8 chu kỳ làm đường tín hiệu nhanh
  3. Sử dụng 50 chu kỳ EMA để xác định xu hướng dài hơn
  4. Tính góc của 50 chu kỳ EMA ((đặt threshold là 45 độ)
  5. Lựa chọn 200 chu kỳ EMA làm bộ lọc lệch thị trường Các tín hiệu đầu vào được kích hoạt khi đường trung bình di chuyển nhanh giao với đường trung bình VWMA chính và góc giá đáp ứng các điều kiện. Chiến lược bảo vệ lợi nhuận bằng cách theo dõi động từ 1% để dừng lỗ.

Lợi thế chiến lược

  1. Xác thực nhiều khung thời gian - Chiến lược hoạt động tốt trên H1 và khung thời gian M1
  2. Bộ lọc góc - Giảm đột phá giả bằng cách đưa ra điều kiện góc chuyển động giá
  3. Quản lý rủi ro hoàn hảo - sử dụng tỷ lệ phần trăm để theo dõi dừng lỗ, bảo vệ lợi nhuận động
  4. Khả năng thích ứng - có thể điều chỉnh theo các tham số để thích ứng với các điều kiện thị trường khác nhau
  5. Xác nhận xu hướng đầy đủ - Xác nhận xu hướng chéo bằng nhiều đường trung bình di chuyển

Rủi ro chiến lược

  1. Thị trường chấn động không hoạt động tốt - có thể tạo ra các tín hiệu sai lệch thường xuyên trong thị trường ngang
  2. Thời gian nhập cảnh bị trễ - Có thể bỏ lỡ một số cơ hội đầu tiên của xu hướng do sử dụng nhiều xác nhận
  3. M15 không hiệu quả - cần tránh sử dụng trong khung thời gian này
  4. Tính nhạy cảm của tham số - lựa chọn ngưỡng góc và chu kỳ trung bình di chuyển có ảnh hưởng lớn đến hiệu suất chiến lược
  5. Theo dõi dừng có thể xuất hiện quá sớm - có thể dẫn đến dừng quá sớm trong thị trường có nhiều biến động

Hướng tối ưu hóa chiến lược

  1. Tiến hành cơ chế tự điều chỉnh biến động - theo dõi tỷ lệ dừng lỗ theo biến động của thị trường
  2. Tăng bộ lọc khối lượng giao dịch - nâng cao chất lượng tín hiệu thông qua xác nhận khối lượng giao dịch
  3. Phương pháp tính toán góc tối ưu hóa - xem xét sử dụng ngưỡng góc thích ứng
  4. Tham gia nhận dạng trạng thái thị trường - Phát triển cơ chế nhận dạng thị trường xu hướng / chấn động
  5. Cải thiện cơ chế ra đi - kết hợp hình thức giá cả và các chỉ số động lực để tối ưu hóa thời gian ra đi

Tóm tắt

Đây là một chiến lược theo dõi xu hướng có cấu trúc tốt, có thể đạt được hiệu suất tốt hơn trong các xu hướng chính thông qua phân tích góc độ và kết hợp nhiều đường trung bình di chuyển. Mặc dù có một số vấn đề về độ trễ và độ nhạy cảm của tham số, chiến lược vẫn có thể được nâng cao thông qua hướng tối ưu hóa được đề xuất.

Mã nguồn chiến lược
/*backtest
start: 2024-02-18 00:00:00
end: 2024-10-16 00:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("PVSRA Trailing Strategy with Angle Condition (40-50 degrees)", overlay=true)

// === INPUTS ===
priceData = input.source(close, title="Price Data")
maLength  = input.int(25, title="Moving Average Length", minval=2)
useBias   = input.bool(false, title="Long/Short just above/below 200 EMA")
useTrailing = input.bool(true, title="Use Trailing Stop")
trailPerc  = input.float(1.0, title="Trailing Stop Percentage", minval=0.1)
anglePeriod = input.int(14, title="Period for Angle Calculation", minval=1)

// === CÁLCULOS ===
maValue = ta.vwma(priceData, maLength)
maLong  = ta.ema(high, 50)
maShort = ta.ema(low, 50)
maFast  = ta.vwma(close, 8)
bias    = ta.ema(close, 200)
longBias  = useBias ? close > bias : true
shortBias = useBias ? close < bias : true

// === CÁLCULO DO ÂNGULO DA MÉDIA MÓVEL DE 50 ===
ma50 = ta.ema(close, 50)
angle = math.atan((ma50 - ma50[anglePeriod]) / anglePeriod) * (180 / math.pi)  // Converte radianos para graus

// === CONDIÇÃO DE ÂNGULO ===
validAngleL = angle >= 45
validAngleS = angle <= 45

// === PLOTS ===
plot(maValue, color=color.orange, title="Moving Average")
plot(maFast, color=color.green, title="Fast MA")
plot(ma50, color=color.blue, title="50 EMA")

plotshape(series=(strategy.position_size > 0) ? maValue : na,
     color=color.red, style=shape.circle, location=location.absolute,
     title="Long Stop")

plotshape(series=(strategy.position_size < 0) ? maValue : na,
     color=color.red, style=shape.cross, location=location.absolute,
     title="Short Stop")

// === CONDIÇÕES DE ENTRADA ===
enterLong  = close > maValue and ta.crossover(maFast, maValue) and close > maLong and longBias and validAngleL
enterShort = close < maValue and ta.crossunder(maFast, maValue) and close < maShort and shortBias and validAngleS

// === CONDIÇÕES DE SAÍDA ===
exitLong  = ta.crossunder(maFast, maValue) and strategy.position_size > 0
exitShort = ta.crossover(maFast, maValue) and strategy.position_size < 0

// === EXECUÇÃO DA ESTRATÉGIA ===
if (enterLong)
    strategy.entry("EL", strategy.long)

if (enterShort)
    strategy.entry("ES", strategy.short)

if (exitLong or exitShort)
    strategy.close_all()

// === TRAILING STOP ===
if (useTrailing and strategy.position_size > 0)
    trailPrice = close * (1 - trailPerc / 100)
    strategy.exit("Trailing Long", from_entry="EL", stop=trailPrice)

if (useTrailing and strategy.position_size < 0)
    trailPrice = close * (1 + trailPerc / 100)
    strategy.exit("Trailing Short", from_entry="ES", stop=trailPrice)