Chiến lược theo xu hướng dựa trên đường MA


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

Chiến lược theo xu hướng dựa trên đường MA

Tổng quan

Chiến lược này tính toán các đường trung bình di chuyển MA của các chu kỳ khác nhau để xác định xu hướng của thị trường, làm nhiều hơn khi xu hướng tăng và làm trắng khi xu hướng giảm, để theo dõi xu hướng.

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

  1. Tính toán đường MA 20 chu kỳ, 60 chu kỳ và 120 chu kỳ
  2. So sánh mối quan hệ kích thước của MA20, MA60 và MA120 để đánh giá xu hướng hiện tại
    • Nếu MA20>MA60>MA120, đó là xu hướng tăng.
    • Nếu MA20
  3. Thêm vào thị trường khi mặc MA60 trên MA20 và tháo vào thị trường khi mặc MA60 dưới MA20
  4. Sử dụng đường MA60 làm đường tham chiếu để dừng lỗ
    • 3 lần so với MA60
    • Vòng trục trục không đầu là 0,9 lần của MA60

Phân tích lợi thế

  1. Sử dụng các cặp MA của các chu kỳ khác nhau để đánh giá xu hướng, tránh whipsaws
  2. Chỉ tham gia vào điểm thay đổi xu hướng, tăng tỷ lệ chiến thắng
  3. Có quy tắc dừng lỗ rõ ràng, giảm rủi ro

Phân tích rủi ro

  1. Trong các trường hợp chấn động, đường MA có thể giao nhau thường xuyên, dẫn đến giao dịch quá thường xuyên
  2. Các tham số dừng lỗ cần được tối ưu hóa, nếu không có thể dừng lỗ quá sớm hoặc không đủ dừng

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

  1. Tăng các chỉ số đánh giá cho sự biến động, tránh giao dịch thường xuyên trong thị trường biến động
  2. Tối ưu hóa các tham số của vòng MA để tìm tham số tối ưu
  3. Kiểm tra và tối ưu hóa hệ số dừng lỗ để đảm bảo sự cân bằng giữa tối đa hóa lợi nhuận và giảm rủi ro

Tóm tắt

Chiến lược này có ý tưởng tổng thể rất rõ ràng, sử dụng MA để đánh giá xu hướng rất cổ điển, 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 dõi xu hướng rất thực tế.

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