Chiến lược giao cắt đường trung bình động


Ngày tạo: 2023-11-23 13:38:02 sửa đổi lần cuối: 2023-11-23 13:38:02
sao chép: 0 Số nhấp chuột: 631
1
tập trung vào
1617
Người theo dõi

Chiến lược giao cắt đường trung bình động

Tổng quan

Chiến lược chéo đường trung bình là một chiến lược giao dịch dựa trên đường trung bình di chuyển. Nó sử dụng chéo đường trung bình di chuyển nhanh và đường trung bình di chuyển chậm làm tín hiệu mua và bán.

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

Chính sách sử dụng hàm sma để tính toán trung bình di chuyển đơn giản cho các chu kỳ được chỉ định, như đường trung bình nhanh và đường trung bình chậm. Chu kỳ trung bình nhanh mặc định của chính sách là 18 ngày, có thể được điều chỉnh thông qua các tham số.

Khi đường trung bình nhanh phá vỡ đường trung bình chậm từ phía dưới, sử dụng hàm crossunder để phát hiện tín hiệu giao chéo, tạo ra tín hiệu mua. Khi đường trung bình nhanh giảm xuống từ phía trên, sử dụng hàm crossover để phát hiện tín hiệu giao chéo, tạo ra tín hiệu bán.

Chiến lược này thực hiện giao dịch tự động thông qua tín hiệu track và tín hiệu exit. Đánh giá đầu vào đa đầu được kích hoạt khi đường trung bình nhanh từ phía dưới phá vỡ đường trung bình chậm; Đánh giá đầu vào trống được kích hoạt khi đường trung bình nhanh từ phía trên phá vỡ đường trung bình chậm.

Phân tích lợi thế

  • Sử dụng đường trung bình di chuyển có khả năng theo dõi xu hướng mạnh mẽ, có thể nắm bắt xu hướng giá một cách hiệu quả
  • Chiến lược đường trung bình đơn giản, trực tiếp, logic rõ ràng, dễ hiểu thực hiện
  • Có thể tối ưu hóa chiến lược cho các môi trường thị trường khác nhau bằng cách điều chỉnh các tham số đường trung bình
  • Chiến lược để tự động hóa giao dịch, không cần sự can thiệp của con người và giảm chi phí vận hành

Rủi ro và giải pháp

  • Khi giá ở trong vùng dao động, sẽ có nhiều tín hiệu chéo không hiệu quả, dẫn đến nguy cơ giao dịch thường xuyên. Điều này có thể được tránh bằng cách thêm các điều kiện lọc.
  • Cần chú ý đến vấn đề tối ưu hóa tham số, các tham số khác nhau có ảnh hưởng lớn đến hiệu suất của chiến lược. Bạn có thể tối ưu hóa tham số bằng cách phản hồi hoặc giới thiệu đường trung bình thích ứng.
  • Có một số nguy cơ bị mất tín hiệu, có thể kết hợp với các tín hiệu lọc của các chỉ số khác hoặc như một điều kiện phụ trợ.
  • Có thể giới thiệu chiến lược dừng lỗ để kiểm soát tổn thất đơn lẻ.

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

  • Có thể giới thiệu các tham số đường trung bình tự điều chỉnh hoặc tối ưu hóa động để tham số đường trung bình được điều chỉnh động và theo dõi thị trường tốt hơn.
  • Các điều kiện lọc có thể được thêm vào để tránh các tín hiệu sai khi giá dao động hoặc xu hướng không rõ ràng. Ví dụ: giới thiệu bộ lọc khối lượng giao dịch.
  • Có thể kết hợp với các chỉ số khác, chẳng hạn như Brin Belt làm bộ lọc hoặc điều kiện hỗ trợ cho nhập cảnh, để cải thiện hiệu suất chiến lược.
  • Có thể đưa ra chiến lược dừng lỗ để kiểm soát tổn thất đơn lẻ trong phạm vi khả thi.

Tóm tắt

Chiến lược chéo đồng tuyến là một chiến lược theo dõi xu hướng cổ điển và đơn giản hơn. Nó chủ yếu sử dụng chéo đồng tuyến làm tín hiệu giao dịch, nguyên tắc đơn giản, dễ hiểu, có thể điều chỉnh thông qua tham số để thích ứng với thị trường. Nhưng cũng có một số nhược điểm, chẳng hạn như dễ bị ảnh hưởng bởi biến động và chuyển hướng xu hướng, tín hiệu thường xuyên.

Mã nguồn chiến lược
/*backtest
start: 2023-11-15 00:00:00
end: 2023-11-17 04:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "MA Close Strategy", shorttitle = "MA Close",calc_on_order_fills=true,calc_on_every_tick =true, initial_capital=21000,commission_value=.25,overlay = true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

MASource   = input(defval = open, title = "MA Source")
MaLength   = input(defval = 18, title = "MA Period", minval = 1)

StartYear = input(2018, "Backtest Start Year")
StartMonth = input(1, "Backtest Start Month")
StartDay = input(1, "Backtest Start Day")
UseStopLoss = input(true,"UseStopLoss")
stopLoss = input(50, title = "Stop loss percentage(0.1%)") 

window() => time >=  timestamp(StartYear, StartMonth, StartDay,00,00) ? true : false

MA = sma(MASource,MaLength)

plot(MA, title = "Fast MA", color = green, linewidth = 2, style = line, transp = 50)

long = crossunder(MA, close)
short = crossover(MA, close)

if (long)
    strategy.entry("LongId", strategy.long, when = long)
    strategy.exit("ExitLong", from_entry = "LongId", when = short)

if (short)
    strategy.entry("ShortId", strategy.short, when = short)
    strategy.exit("ExitShort", from_entry = "ShortId", when = long)

if (UseStopLoss)
    strategy.exit("StopLoss", "LongId", loss = close * stopLoss / 1000 / syminfo.mintick)
    strategy.exit("StopLoss", "ShortId", loss = close * stopLoss / 1000 / syminfo.mintick)