Chiến lược giao dịch thoái lui trung bình động đa khung thời gian


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

Chiến lược giao dịch thoái lui trung bình động đa khung thời gian

Tổng quan

Chiến lược này sử dụng phương pháp đường trung bình của nhiều khung thời gian, sử dụng đường trung bình dài để xác định hướng xu hướng lớn, đường trung bình ngắn hạn để xác định hướng xu hướng ngắn hạn, khi đường dài và đường ngắn xác nhận xu hướng, nhập vào nhiều / trống; Khi đường ngắn quay trở lại gần đường dài, xác định tạo cơ hội nhập vào điều chỉnh ngắn hạn, lúc này thực hiện hoạt động ngược. Chiến lược này chủ yếu áp dụng cho các cổ phiếu xu hướng đường dài trung bình.

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

Chiến lược này sử dụng đường trung bình di chuyển đơn giản 200 ngày để xác định hướng xu hướng dài hạn, sử dụng đường trung bình di chuyển đơn giản 10 ngày để xác định hướng xu hướng ngắn hạn. Khi giá cổ phiếu cao hơn đường trung bình 200 ngày và thấp hơn đường trung bình 10 ngày, điều này cho thấy hiện tại đang ở giai đoạn tăng đường dài và điều chỉnh đường ngắn.

Cụ thể, khi đáp ứng các điều kiện sau, hãy nhập nhiều hơn: giá đóng cửa> đường trung bình 200 ngày và giá đóng cửa < đường trung bình 10 ngày; khi đáp ứng các điều kiện sau, hãy nhập lỗ: giá đóng cửa < đường trung bình 200 ngày và giá đóng cửa> đường trung bình 10 ngày.

Thiết lập cơ chế dừng lỗ sau khi vào, dừng lỗ khi rút hơn 10% từ giá mua. Đồng thời, nếu thiết lập tùy chọn i_lowerClose, sẽ chờ đến khi giá đóng cửa thấp hơn xuất hiện, điều này có thể tránh dừng lỗ quá nhạy cảm.

Phân tích lợi thế

Chiến lược này kết hợp với đường trung bình nhiều khung thời gian, có thể nắm bắt hướng của xu hướng đường trung và dài với xác suất cao hơn. Chiến lượcutsch cung cấp thời gian nhập cảnh tốt hơn khi đường trung bình ngắn hạn quay trở lại đường trung bình dài hạn.

Chiến lược này có thể kiểm soát rủi ro. Cài đặt tỷ lệ dừng 10% để kiểm soát tổn thất; đồng thời thiết lập các điều kiện lọc thời gian để tránh giao dịch trong một khoảng thời gian nhất định.

Phân tích rủi ro

Chiến lược này vẫn có nguy cơ bị đặt. Khi điều chỉnh đường ngắn quá dài hoặc điều chỉnh quá lớn, có thể kích hoạt dừng lỗ và được đặt ra. Khi đó có nguy cơ bị mất mát.

Chiến lược này không phù hợp với các loại giao dịch. Đối với các cổ phiếu có biến động lớn và thời gian điều chỉnh dài, chiến lược này dễ bị dừng lỗ và không hiệu quả.

Chiến lược này cũng có thể chịu tổn thất lớn khi thị trường thay đổi đáng kể. Ví dụ, chiến lược này có thể khó kiếm được lợi nhuận trong cuộc khủng hoảng tài chính.

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

Có thể giới thiệu nhiều hệ thống đường trung bình hơn, tạo ra nhiều cơ chế lọc. Ví dụ, tham gia đường trung bình 50 ngày, chỉ được xem xét khi giá đóng cửa nằm giữa đường trung bình 50 ngày và đường trung bình 200 ngày. Điều này có thể lọc thêm các giống có xu hướng tốt.

Bạn có thể thiết lập dừng động. Cụ thể, sau khi vào thị trường, bạn có thể thiết lập mức dừng động có thể thay đổi theo phạm vi biến động của cổ phiếu, thay vì dừng cố định 10%. Điều này có thể làm giảm khả năng dừng không cần thiết được kích hoạt.

Có thể kết hợp với các chỉ số khác để đánh giá tình trạng thị trường. Ví dụ: MACD, khi MACD cho thấy thị trường thoát ra, bạn có thể tạm dừng chiến lược này để tránh thua lỗ. Điều này có thể kiểm soát việc khởi động và đóng chiến lược dựa trên phán đoán của thị trường lớn.

Tóm tắt

Chiến lược này nói chung là một chiến lược đường trung bình đa khung thời gian điển hình. Nó kết hợp với đường trung bình ngắn hạn dài, có khả năng nắm bắt xu hướng đường dài trung bình và nắm bắt cơ hội điều chỉnh đường ngắn. Rủi ro của chiến lược cũng có thể được kiểm soát.

Mã nguồn chiến lược
/*backtest
start: 2024-01-29 00:00:00
end: 2024-02-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © irfanp056
// @version=5

strategy("Simple Pullback Strategy", 
     overlay=true) // Interactive Brokers rate

// Get user input
i_ma1           = input.int(title="MA 1 Length", defval=200, step=10, group="Strategy Parameters", tooltip="Long-term MA")
i_ma2           = input.int(title="MA 2 Length", defval=10, step=10, group="Strategy Parameters", tooltip="Short-term MA")
i_stopPercent   = input.float(title="Stop Loss Percent", defval=0.10, step=0.1, group="Strategy Parameters", tooltip="Failsafe Stop Loss Percent Decline")
i_lowerClose    = input.bool(title="Exit On Lower Close", defval=false, group="Strategy Parameters", tooltip="Wait for a lower-close before exiting above MA2")
i_startTime     = input(title="Start Filter", defval=timestamp("01 Jan 1995 13:30 +0000"), group="Time Filter", tooltip="Start date & time to begin searching for setups")
i_endTime       = input(title="End Filter", defval=timestamp("1 Jan 2099 19:30 +0000"), group="Time Filter", tooltip="End date & time to stop searching for setups")

// Get indicator values
ma1 = ta.sma(close, i_ma1)
ma2 = ta.sma(close, i_ma2)

// Check filter(s)
f_dateFilter = true

// Check buy/sell conditions
var float buyPrice = 0
buyCondition    = close > ma1 and close < ma2 and strategy.position_size == 0 and f_dateFilter
sellCondition   = close > ma2 and strategy.position_size > 0 and (not i_lowerClose or close < low[1])
stopDistance    = strategy.position_size > 0 ? ((buyPrice - close) / close) : na
stopPrice       = strategy.position_size > 0 ? buyPrice - (buyPrice * i_stopPercent) : na
stopCondition   = strategy.position_size > 0 and stopDistance > i_stopPercent

// Enter positions
if buyCondition
    strategy.entry(id="Long", direction=strategy.long)

if buyCondition[1]
    buyPrice := open

// Exit positions
if sellCondition or stopCondition
    strategy.close(id="Long", comment="Exit" + (stopCondition ? "SL=true" : ""))
    buyPrice := na

// Draw pretty colors
plot(buyPrice, color=color.lime, style=plot.style_linebr)
plot(stopPrice, color=color.red, style=plot.style_linebr, offset=-1)
plot(ma1, color=color.blue)
plot(ma2, color=color.orange)