Chiến lược giao dịch định lượng dựa trên giá và sự giao nhau của SMA


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

Chiến lược giao dịch định lượng dựa trên giá và sự giao nhau của SMA

Tổng quan

Chiến lược này được gọi là chiến lược giao dịch định lượng dựa trên giá và đường giao dịch SMA, chủ yếu tạo ra tín hiệu giao dịch bằng cách tính toán SMA của các chu kỳ khác nhau và theo dõi giá và đường giao dịch SMA. Khi giá từ dưới lên phá vỡ SMA, tạo ra tín hiệu mua; Khi giá từ trên xuống phá vỡ SMA, tạo ra tín hiệu bán.

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

Lập luận cốt lõi của chiến lược này là theo dõi sự giao thoa của giá với đường trung bình di chuyển đơn giản 21 ngày (SMA). Đồng thời, chiến lược cũng tính toán đường SMA 50 ngày và đường SMA 200 ngày, giúp xác định xu hướng chung chung.

Cụ thể, chiến lược sẽ yêu cầu lấy giá đóng cửa của cổ phiếu trong phạm vi ngày nhất định, sau đó tính toán SMA khác nhau dựa trên chu kỳ SMA đầu vào. Nếu giá từ dưới lên vượt SMA ngày 21, sẽ thiết lập tín hiệu mua; Nếu giá từ trên xuống vượt SMA ngày 21, sẽ thiết lập tín hiệu bán.

Trong khi tính toán SMA và đánh giá chéo, chiến lược sẽ theo dõi tình trạng nắm giữ hiện tại. Khi tín hiệu mua được kích hoạt, chiến lược sẽ vào vị trí nắm giữ; Khi tín hiệu bán được kích hoạt, chiến lược sẽ thanh toán. Bằng cách này, hoàn thành giao dịch tự động dựa trên hệ thống chéo SMA.

Phân tích lợi thế

Ưu điểm lớn nhất của chiến lược này là đơn giản, dễ hiểu và thực hiện. SMA là một chỉ số phân tích kỹ thuật được sử dụng thường xuyên, giao dịch SMA là một trong những tín hiệu giao dịch phổ biến. Chiến lược dựa trên giao dịch giao dịch này có thể được áp dụng dễ dàng cho các cổ phiếu và khoảng thời gian khác nhau, phù hợp với giao dịch tự động.

Một lợi thế khác là chiến lược có thể được tối ưu hóa bằng cách điều chỉnh các tham số SMA. Ví dụ: có thể thử nghiệm các kết hợp chu kỳ SMA khác nhau để tìm tham số tốt nhất để phù hợp với quy luật biến động của một cổ phiếu cụ thể. Ngoài ra, chiến lược cũng có thể được xác nhận và tối ưu hóa bằng cách thêm các chỉ số khác.

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

Rủi ro lớn nhất của chiến lược này là các chiến lược chỉ số sẽ tạo ra nhiều tín hiệu sai. Ví dụ, trong giai đoạn biến động, giá có thể xuyên qua SMA dưới mặt đất thường xuyên, dẫn đến tín hiệu giao dịch không cần thiết.

Các giải pháp phổ biến bao gồm thiết lập dừng lỗ, điều chỉnh tham số, hoặc thêm các điều kiện lọc. Ví dụ: có thể thiết lập tỷ lệ mất mát tối đa để hạn chế rủi ro; hoặc điều chỉnh chu kỳ SMA, chọn một tổ hợp tham số ổn định hơn; hoặc thêm xác nhận của các chỉ số khác để lọc một phần tín hiệu.

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

Chiến lược này có thể được tối ưu hóa theo các hướng sau:

  1. Kiểm tra và chọn sự kết hợp tốt nhất của các tham số SMA. Bạn có thể tra lại các chiều dài SMA khác nhau để tìm chu kỳ phù hợp nhất.

  2. Thêm thêm các chỉ số FilterSignal confirmation, chẳng hạn như RSI, MACD, v.v. Điều này có thể lọc ra một số tín hiệu sai.

  3. Thêm logic dừng lỗ. Thiết lập lỗ tối đa hoặc di chuyển dừng lỗ có thể kiểm soát rủi ro.

  4. Tối ưu hóa thời gian nhập cảnh. Bạn có thể xem xét nhập cảnh gần các điểm đột phá quan trọng hơn là theo dõi chặt chẽ các giao SMA.

  5. Kiểm tra chiến lược tổng hợp. Có thể xem xét kết hợp với các loại chiến lược khác, chẳng hạn như theo dõi xu hướng.

Tóm tắt

Chiến lược này cho phép tự động hóa giao dịch thông qua giao dịch chỉ số SMA đơn giản. Ưu điểm là đơn giản, dễ thực hiện và dễ hiểu; Ưu điểm là tín hiệu thường xuyên và dễ bị đặt. Chúng ta có thể cải thiện hiệu quả của chiến lược bằng cách tối ưu hóa tham số, thêm bộ lọc, dừng lỗ, v.v.

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("Price Cross Above/Below SMA Strategy", shorttitle="Tressy Strat", overlay=true)

// Define start and end year inputs
start_year = input.int(2022, title="Start Year")
end_year = input.int(2022, title="End Year")

// Define start and end month inputs
start_month = input.int(1, title="Start Month", minval=1, maxval=12)
end_month = input.int(12, title="End Month", minval=1, maxval=12)

// Define SMA length inputs
sma_length = input.int(21, title="SMA Length")
sma_length_50 = input.int(50, title="50 SMA Length")
sma_length_200 = input.int(200, title="200 SMA Length")

// Filter data within the specified date range
filter_condition = true
filtered_close = request.security(syminfo.tickerid, "D", close[0], lookahead=barmerge.lookahead_on)

// Define SMAs using the input lengths
sma = ta.sma(filtered_close, sma_length)
sma_50 = ta.sma(filtered_close, sma_length_50)
sma_200 = ta.sma(filtered_close, sma_length_200)

// Initialize position
var bool in_position = false

// Condition for a price cross above SMA within the date range
cross_above = filter_condition and ta.crossover(filtered_close, sma)

// Condition for a price cross below SMA within the date range
cross_below = filter_condition and ta.crossunder(filtered_close, sma)

// Buy condition
if cross_above
    in_position := true

// Sell condition
if cross_below
    in_position := false

// Strategy entry and exit
if cross_above
    strategy.entry("Buy", strategy.long)
if cross_below
    strategy.close("Buy")

// Plot the SMAs on the chart
plot(sma, color=color.blue, title="21 SMA")
plot(sma_50, color=color.red, title="50 SMA")
plot(sma_200, color=color.orange, title="200 SMA")

// Plot the Buy and Sell signals with "tiny" size
plotshape(cross_above, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.tiny, title="Buy Signal")
plotshape(cross_below, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.tiny, title="Sell Signal")