Xu hướng sau chiến lược dựa trên đường MA

Tác giả:ChaoZhang, Ngày: 2024-02-22 17:24:02
Tags:

img

Tổng quan

Chiến lược này tính toán trung bình động (MA) của các giai đoạn khác nhau để xác định hướng xu hướng thị trường.

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

  1. Tính toán các MPA 20 giai đoạn, 60 giai đoạn và 120 giai đoạn
  2. So sánh mối quan hệ cường độ giữa MA20, MA60 và MA120 để xác định hướng xu hướng hiện tại
    • Nếu MA20> MA60> MA120, đánh giá xu hướng tăng
    • Nếu MA20
  3. Đi dài khi MA20 vượt qua MA60, và đi ngắn khi MA20 vượt dưới MA60
  4. Sử dụng MA60 làm đường tham chiếu cho lấy lợi nhuận và dừng lỗ
    • Mức lợi nhuận cho vị trí dài là 3 lần MA60
    • Mức lợi nhuận cho vị trí ngắn là 0,9 lần MA60

Phân tích lợi thế

  1. Sử dụng MA combos của các giai đoạn khác nhau để xác định xu hướng để tránh whipsaws
  2. Chỉ nhập vào các điểm đảo ngược xu hướng để tăng tỷ lệ thắng
  3. Có các quy tắc rõ ràng cho lợi nhuận và dừng lỗ để giảm rủi ro

Phân tích rủi ro

  1. Trong các thị trường giới hạn phạm vi, MA crossover có thể xảy ra thường xuyên, gây ra giao dịch quá thường xuyên
  2. Các tham số cho lợi nhuận và dừng lỗ cần được tối ưu hóa, nếu không vị trí có thể được dừng lại sớm hoặc lấy lợi nhuận là không đủ

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

  1. Thêm các chỉ số để xác định thị trường giới hạn phạm vi để tránh giao dịch quá mức
  2. Tối ưu hóa các kết hợp thời gian MA để tìm các thông số tốt nhất
  3. Kiểm tra và tối ưu hóa tỷ lệ lợi nhuận và dừng lỗ để cân bằng tối đa hóa lợi nhuận và giảm thiểu rủi ro

Tóm lại

Chiến lược có một logic rõ ràng về việc sử dụng MAs để xác định xu hướng. Sau khi tối ưu hóa tham số và tối ưu hóa chỉ số, nó có thể trở thành một chiến lược theo xu hướng rất thực tế.


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

//@version=5
strategy("MA60上多下空", overlay=true)

// 计算MA20/60/120
ma20 = ta.sma(close, 20)
ma60 = ta.sma(close, 60)
ma120 = ta.sma(close, 120)

// 判断MA的趋势
maUpTrend = ma20 > ma60 and ma60 > ma120
maDownTrend = ma20 < ma60 and ma60 < ma120

// 画竖直线标记MA趋势转折点
plotshape(maUpTrend and ta.crossover(ma20, ma60), style=shape.triangledown, location=location.abovebar, color=color.green, size=size.small)
plotshape(maDownTrend and ta.crossunder(ma20, ma60), style=shape.triangleup, location=location.belowbar, color=color.red, size=size.small)

// 画背景标记MA趋势
bgcolor(maUpTrend ? color.new(color.green, 90) : na)
bgcolor(maDownTrend ? color.new(color.red, 90) : na)

// 建立多头仓位的条件
longCondition = ta.crossover(close, ma60)

// 建立空头仓位的条件
shortCondition = ta.crossunder(close, ma60)

// 在穿过MA60时,根据条件建立相应的多头或空头仓位
if (longCondition)
    strategy.entry("Long", strategy.long)

if (shortCondition)
    strategy.entry("Short", strategy.short)

// 止盈止损规则
calculateReturns() =>
    close / strategy.position_avg_price - 1

takeProfitCondition = calculateReturns() >= 3  // 仓位盈利达到300%
stopLossCondition = calculateReturns() <= -0.1  // 仓位亏损达到10%

if (takeProfitCondition)
    strategy.close("Long", comment="Take Profit")
    strategy.close("Short", comment="Take Profit")

if (stopLossCondition)
    strategy.close("Long", comment="Stop Loss")
    strategy.close("Short", comment="Stop Loss")


Thêm nữa