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


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

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

Tổng quan

Ý tưởng chính của chiến lược này là giao dịch rút ngắn theo hướng xu hướng dài hạn. Cụ thể, 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.

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 và đường trung bình di chuyển đơn giản 10 ngày để đánh giá xu hướng thị trường. Trong thị trường đa đầu, nếu giá giảm xuống gần đường trung bình 200 ngày, nó được coi là vào thị trường không đầu. Trong thị trường đa đầu, nếu giá giảm xuống gần đường trung bình 10 ngày, nó được coi là điều chỉnh ngắn hạn.

Cụ thể, khi đáp ứng các điều kiện sau đây, nhập thêm vào sân: giá cao hơn đường 200 ngày, giá thấp hơn đường 10 ngày, trước đó không có vị trí giữ. Khi đáp ứng các điều kiện sau đây, thoát khỏi vị trí bằng phẳng: giá cao hơn đường 10 ngày, trước đây giữ vị trí nhiều đầu. Để ngăn chặn tổn thất lớn, dừng FAILSAFE đã được thiết lập, nếu rút lui từ điểm cao nhất vượt quá 10%.

Có thể thấy rằng logic giao dịch của chiến lược này chủ yếu dựa trên đường trung bình, mua và dừng theo dõi xu hướng trên đường xu hướng sau khi đánh giá đường trung bình ngắn, thuộc về chiến lược theo dõi xu hướng điển hình.

Phân tích lợi thế

Lợi thế lớn nhất của chiến lược này là theo dõi xu hướng với chi phí vốn thấp, theo đuổi lợi nhuận vượt trội. Các lợi thế cụ thể như sau:

  1. Sử dụng kết hợp đường trung bình ngắn hạn để đánh giá xu hướng của các cấp chính, bạn có thể khóa hiệu quả các cơ hội xu hướng đường dài trung bình và tránh bị sai lệch bởi thị trường ngắn hạn.

  2. Sử dụng phương pháp rút ngắn hạn, bạn có thể giảm tối đa chi phí mua hàng, do đó có thể có được lợi nhuận cao hơn.

  3. Thiết lập FAILSAFE để kiểm soát hiệu quả tổn thất đơn lẻ và bảo vệ tài khoản.

  4. Cho phép theo dõi các đợt rút lui, khai thác đầy đủ các cơ hội xu hướng đường dài trung bình, và có được Alpha vượt trội.

  5. Việc sử dụng các giao dịch hoàn toàn tự động, tránh tác động của cảm xúc chủ quan, giúp chiến lược dễ thực hiện hơn.

Phân tích rủi ro

Chiến lược này có những rủi ro:

  1. Rủi ro phù hợp với dữ liệu phản hồi. Các điều kiện thị trường thực tế có thể khác với dữ liệu lịch sử, dẫn đến giảm hiệu quả giao dịch trên sàn giao dịch thực.

  2. Rủi ro phá vỡ giả. Giá chỉ chạm vào đường trung bình có khả năng đảo ngược điều chỉnh cao hơn, dễ gây ra tổn thất tích lũy nhỏ.

  3. Rủi ro đảo ngược xu hướng. Xu hướng đường dài trung bình thường bị đảo ngược đột ngột, khi đó việc giữ vị trí có thể gây ra tổn thất lớn.

Phản ứng như sau:

  1. Tăng số lượng mẫu, sử dụng nhiều dữ liệu lịch sử hơn để xác minh tính ổn định, đảm bảo kết quả đáng tin cậy.

  2. Tối ưu hóa các tham số, điều chỉnh các tham số của hệ thống trung bình, đảm bảo chất lượng tín hiệu giao dịch.

  3. Giới hạn mức lỗ hổng thích hợp, cho phép giá có một khoảng trống để điều chỉnh lại và tránh lỗ hổng quá nhạy cảm.

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

Chiến lược này có thể được tối ưu hóa thêm bằng cách:

  1. Việc bổ sung các điều kiện lọc như lọc khối lượng giao dịch có thể giảm hiệu quả các giao dịch không cần thiết do phá vỡ giả.

  2. Kết hợp với các chỉ số khác, như KDJ, MACD, v.v., tạo thành một bảng chỉ số, có thể cải thiện chất lượng tín hiệu giao dịch.

  3. Kiểm tra thời gian giữ vị trí khác nhau, tối ưu hóa chiến lược dừng và dừng lỗ, và tiếp tục nâng cao tỷ lệ Sharp.

  4. Điều chỉnh các tham số động theo tình hình thị trường, tạo ra cơ chế tối ưu hóa tham số thích ứng, làm cho chiến lược trở nên mạnh mẽ hơn.

  5. Thêm mô-đun giao dịch thuật toán, sử dụng các phương pháp học máy để tự động tạo tín hiệu giao dịch, giảm can thiệp của con người.

Tóm tắt

Chiến lược tổng thể của chiến lược này rõ ràng, dễ thực hiện, theo dõi xu hướng đường dài trung bình với chi phí thấp, có thể có được Alpha ổn định. Nhưng cũng có một số rủi ro được đánh giá, cần được tối ưu hóa hơn nữa để tăng sự ổn định. Nói chung, chiến lược này được thiết kế từ góc độ theo dõi xu hướng, đáng để nghiên cứu và ứng dụng thêm. Nếu tham số được điều chỉnh thích hợp, sẽ có hiệu quả thực tế tốt.

Mã nguồn chiến lược
/*backtest
start: 2024-01-21 00:00:00
end: 2024-02-20 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, 
     initial_capital=100000,
     default_qty_type=strategy.percent_of_equity, 
     default_qty_value=1000, // 100% of balance invested on each trade
     commission_type=strategy.commission.cash_per_contract, 
     commission_value=0.005) // 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)