
Chiến lược giao dịch định lượng trong khu vực xu hướng động cao là một hệ thống theo dõi xu hướng dựa trên phạm vi biến động động giá, ý tưởng cốt lõi là tính toán phạm vi mịn của khung thời gian kép, xây dựng cơ chế lọc giá thích ứng, xác định hiệu quả sự thay đổi xu hướng thị trường và tạo ra tín hiệu giao dịch. Chiến lược này sử dụng chỉ số di chuyển trung bình của chu kỳ thời gian nhanh và chậm để tính toán phạm vi biến động giá và tạo ra biên giới giữa khu vực xu hướng bằng thuật toán lọc phạm vi độc đáo.
Nguyên tắc cốt lõi của chiến lược này là xây dựng bộ lọc xu hướng động bằng cách tính toán phạm vi mịn của biến động giá. Các bước thực hiện cụ thể như sau:
Tính toán phạm vi képChiến lược: Sử dụng hai chu kỳ thời gian ((nhanh và chậm) để tính toán phạm vi biến động giá. Đầu tiên tính toán sự thay đổi tuyệt đối của giá, sau đó áp dụng chỉ số di chuyển trung bình ((EMA) để xử lý trơn tru, và cuối cùng điều chỉnh kích thước phạm vi bằng cách nhân tùy chỉnh.
Ứng dụng bộ lọc phạm viQuyết định:apply_range_filterChức năng này sẽ tính toán phạm vi mịn được áp dụng cho giá, đảm bảo rằng giá lọc mới không bị lệch quá xa so với giá lọc trước đó, do đó giảm tín hiệu giả.
Xác định xu hướngChiến lược: Theo dõi số lần giá lọc tăng hoặc giảm liên tục để định lượng cường độ và tính bền vững của xu hướng.
Xây dựng ranh giớiCác đường viền này sẽ được điều chỉnh theo động lực của hành vi giá lịch sử, tạo thành bộ lọc phạm vi xu hướng.
Tạo tín hiệuCác tín hiệu này được sử dụng trực tiếp để thực hiện các quyết định vào và ra khỏi chiến lược giao dịch.
Từ thực hiện mã, chiến lược sử dụng logic điều kiện được đặt nhiều lớp để xác định giá trị của bộ lọc phạm vi xu hướng, điều này cho phép bộ lọc thích ứng với các điều kiện thị trường khác nhau, tăng độ tin cậy của tín hiệu. Bộ lọc phạm vi xu hướng về bản chất là một đường hỗ trợ và kháng cự động tự thích ứng, có thể tự động điều chỉnh độ nhạy của nó theo biến động thị trường.
Một phân tích sâu hơn về cách thực hiện mã của chiến lược này cho thấy những ưu điểm đáng chú ý sau:
Khả năng thích nghiChiến lược được tính toán thông qua phạm vi của hai khung thời gian: chu kỳ nhanh và chậm, cho phép bộ lọc tự động thích ứng với sự thay đổi biến động trong các điều kiện thị trường khác nhau. Tính năng tự thích ứng này cho phép chiến lược duy trì hiệu suất tương đối ổn định trong các môi trường thị trường khác nhau.
Năng lực lọc tiếng ồnBằng cách tính toán phạm vi trơn tru và cơ chế lọc điều kiện, chiến lược có thể giảm hiệu quả ảnh hưởng của tiếng ồn thị trường đối với quyết định giao dịch và giảm tần suất phát sinh tín hiệu giả.
Tính năng định lượngChiến lược: Bằng cách theo dõi số lần giá lọc liên tục tăng hoặc giảm, cung cấp cho các nhà giao dịch một chỉ số định lượng về cường độ của xu hướng, giúp đánh giá độ tin cậy của xu hướng hiện tại.
Nhận thức trực quanChiến lược đánh dấu các tín hiệu mua và bán trên biểu đồ và lấp đầy các khu vực xu hướng khác nhau bằng màu sắc, làm tăng đáng kể hiệu quả nhận diện trực quan các cơ hội giao dịch.
Thể điều chỉnh tham sốChiến lược cung cấp nhiều tham số đầu vào có thể điều chỉnh (như chu kỳ nhanh / chậm, nhân phạm vi, v.v.) cho phép các nhà giao dịch tối ưu hóa hiệu suất chiến lược cho các loại giao dịch và khung thời gian khác nhau.
Thiết kế mã có cấu trúcChiến lược sử dụng thiết kế mô-đun, bao gồm các logic tính toán cốt lõi bằng các hàm tùy chỉnh, làm cho mã dễ hiểu và bảo trì hơn, đồng thời cũng dễ mở rộng và tối ưu hóa sau này.
Mặc dù có nhiều ưu điểm, chiến lược này cũng có một số rủi ro và hạn chế tiềm ẩn:
Độ nhạy tham sốHiệu suất chiến lược phụ thuộc rất nhiều vào sự lựa chọn các tham số đầu vào. Các chu kỳ thời gian khác nhau và các thiết lập nhân có thể dẫn đến kết quả giao dịch hoàn toàn khác nhau. Các nhà giao dịch cần thực hiện đầy đủ phản hồi và tối ưu hóa để tìm ra sự kết hợp tham số tốt nhất cho thị trường cụ thể.
Rủi ro của sự chậm trễDo chiến lược sử dụng EMA để xử lý trơn tru, một số độ trễ sẽ được đưa ra một cách không thể tránh khỏi, đặc biệt là khi thị trường biến động mạnh hoặc đảo ngược nhanh, có thể dẫn đến sự chậm trễ của tín hiệu vào hoặc ra.
Rủi ro đột phá giả: Trong thị trường thoả thuận hoặc biến động thấp, giá có thể xuyên qua bộ lọc xu hướng thường xuyên, tạo ra nhiều tín hiệu giả, dẫn đến giao dịch thường xuyên và tăng chi phí giao dịch.
Thiếu cơ chế ngăn chặn thiệt hại: Không có cơ chế dừng lỗ rõ ràng trong thực hiện chiến lược hiện tại, có thể phải đối mặt với tổn thất lớn hơn trong trường hợp xu hướng đột ngột đảo ngược.
Nguồn tín hiệu duy nhấtChiến lược chỉ dựa vào sự giao thoa của bộ lọc giá và phạm vi xu hướng để tạo ra tín hiệu, thiếu xác nhận hỗ trợ của các chỉ số xác nhận khác có thể dẫn đến tín hiệu không đáng tin cậy.
Để giảm thiểu các rủi ro này, các nhà giao dịch có thể xem xét thêm các điều kiện lọc bổ sung, chẳng hạn như xác nhận tín hiệu kết hợp với các chỉ số kỹ thuật khác (như RSI, MACD, v.v.), đồng thời thực hiện các chiến lược quản lý tiền và dừng lỗ nghiêm ngặt.
Một số hướng tối ưu hóa tiềm năng được đưa ra bằng cách phân tích sâu về việc thực hiện mã:
Cơ chế xác nhận đa dạng: giới thiệu thêm các chỉ số kỹ thuật hoặc điều kiện để xác nhận tín hiệu, chẳng hạn như kết hợp với khối lượng giao dịch, chỉ số động lực hoặc phân tích cấu trúc thị trường, để tăng độ tin cậy tín hiệu. Điều này có thể làm giảm tín hiệu giả, giao dịch chỉ được thực hiện khi nhiều điều kiện được đáp ứng cùng một lúc.
Điều chỉnh tham số động: Thực hiện cơ chế tối ưu hóa tự động các tham số, cho phép chiến lược tự động điều chỉnh chu kỳ nhanh / chậm và nhân số theo biến đổi của điều kiện thị trường. Ví dụ: có thể dựa trên các chỉ số biến động thị trường (như ATR) để điều chỉnh động phạm vi nhân số.
Tăng cường quản lý rủi ro: Thêm các cơ chế dừng lỗ và kết thúc lợi nhuận, chẳng hạn như dừng động dựa trên thiết lập ATR, hoặc sử dụng chéo ngược của bộ lọc phạm vi xu hướng như tín hiệu thoát. Quản lý rủi ro tốt có thể cải thiện đáng kể tỷ lệ lợi nhuận của chiến lược.
Bộ lọc thời gianTăng bộ lọc cửa sổ thời gian giao dịch, tránh các thời điểm có biến động cao như mở cửa, đóng cửa thị trường hoặc công bố dữ liệu kinh tế quan trọng, giảm tín hiệu giả do biến động bất thường.
Trình lọc cường độ xu hướng: Sử dụng đếm xu hướng tăng/giảm đã được tính toán, đặt ngưỡng hạn mức cường độ xu hướng tối thiểu, chỉ tạo tín hiệu giao dịch khi xu hướng đủ mạnh, tránh giao dịch quá mức trong xu hướng yếu hoặc thị trường tổng hợp.
Tối ưu hóa học máy: Xem xét việc đưa ra các thuật toán học máy để tối ưu hóa lựa chọn tham số hoặc nâng cao độ chính xác nhận dạng tín hiệu thông qua mô hình đào tạo dữ liệu lịch sử. Ví dụ, có thể sử dụng rừng ngẫu nhiên hoặc hỗ trợ máy vector để dự đoán độ tin cậy của tín hiệu.
Việc thực hiện các hướng tối ưu hóa này có thể cải thiện đáng kể tính ổn định và lợi nhuận của chiến lược, cho phép nó duy trì hiệu suất tốt trong các môi trường thị trường khác nhau.
Chiến lược giao dịch lọc số lượng trong khu vực xu hướng động cao là một hệ thống theo dõi xu hướng dựa trên phạm vi động của giá, xây dựng cơ chế nhận diện xu hướng linh hoạt thông qua tính toán phạm vi thích ứng của khung thời gian kép. Ưu điểm cốt lõi của chiến lược này là khả năng thích ứng mạnh mẽ và khả năng lọc tiếng ồn, có thể nhận diện hiệu quả sự thay đổi xu hướng và tạo tín hiệu giao dịch trong các điều kiện thị trường khác nhau.
Chiến lược này thiết lập các biên giới giữa các khu vực xu hướng động bằng cách tính toán các phạm vi trơn tru của các chu kỳ thời gian nhanh và chậm, kết hợp với thuật toán lọc phạm vi độc đáo. Khi giá vượt qua các biên giới này, hệ thống sẽ tự động tạo ra tín hiệu mua hoặc bán, giúp thương nhân nắm bắt các điểm biến xu hướng.
Mặc dù chiến lược này có nhiều ưu điểm, nhưng cũng phải đối mặt với các rủi ro như nhạy cảm, chậm trễ và đột phá giả. Các biện pháp tối ưu hóa như giới thiệu cơ chế xác nhận nhiều lần, điều chỉnh tham số động và tăng cường quản lý rủi ro có thể nâng cao hơn nữa sự ổn định và lợi nhuận của chiến lược.
Nhìn chung, đây là một chiến lược giao dịch định lượng được thiết kế hợp lý, thực hiện tốt, phù hợp với các nhà giao dịch có kinh nghiệm để áp dụng cho giao dịch thực tế sau khi kiểm tra đầy đủ và tối ưu hóa các tham số. Đây là một lựa chọn chiến lược đáng xem xét cho các nhà giao dịch tìm kiếm theo dõi xu hướng và thích ứng với sự thay đổi của thị trường.
/*backtest
start: 2025-01-01 00:00:00
end: 2025-06-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("L3 Twin Range Filter Pro Strategy", overlay=true)
// 输入参数
price_source = input(defval=close, title='Price Source')
show_trade_signals = input(title='Show Buy/Sell Signals ?', defval=true)
fast_period = input.int(defval=9, minval=1, title='Fast period')
fast_range_multiplier = input.float(defval=1.6, minval=0.1, title='Fast range multiplier')
slow_period = input.int(defval=34, minval=1, title='Slow period')
slow_range_multiplier = input.float(defval=2, minval=0.1, title='Slow range multiplier')
// 自定义函数
calculate_smooth_range(price, period, multiplier) =>
window_period = period * 2 - 1
average_range = ta.ema(math.abs(price - price[1]), period)
smooth_range = ta.ema(average_range, window_period) * multiplier
smooth_range
apply_range_filter(price, range_value) =>
range_filtered_price = price
range_filtered_price := price > nz(range_filtered_price[1]) ? price - range_value < nz(range_filtered_price[1]) ? nz(range_filtered_price[1]) : price - range_value : price + range_value > nz(range_filtered_price[1]) ? nz(range_filtered_price[1]) : price + range_value
range_filtered_price
// 计算过程
fast_smooth_range = calculate_smooth_range(price_source, fast_period, fast_range_multiplier)
slow_smooth_range = calculate_smooth_range(price_source, slow_period, slow_range_multiplier)
average_smooth_range = (fast_smooth_range + slow_smooth_range) / 2
filtered_price = apply_range_filter(price_source, average_smooth_range)
upward_trend = 0.0
upward_trend := filtered_price > filtered_price[1] ? nz(upward_trend[1]) + 1 : filtered_price < filtered_price[1] ? 0 : nz(upward_trend[1])
downward_trend = 0.0
downward_trend := filtered_price < filtered_price[1] ? nz(downward_trend[1]) + 1 : filtered_price > filtered_price[1] ? 0 : nz(downward_trend[1])
upper_range_boundary = filtered_price + average_smooth_range
lower_range_boundary = filtered_price - average_smooth_range
upper_bound = 0.0
upper_bound := upper_range_boundary < nz(upper_bound[1]) or close[1] > nz(upper_bound[1]) ? upper_range_boundary : nz(upper_bound[1])
lower_bound = 0.0
lower_bound := lower_range_boundary > nz(lower_bound[1]) or close[1] < nz(lower_bound[1]) ? lower_range_boundary : nz(lower_bound[1])
trend_range_filter = 0.0
trend_range_filter := nz(trend_range_filter[1]) == upper_bound[1] and close <= upper_bound ? upper_bound : nz(trend_range_filter[1]) == upper_bound[1] and close >= upper_bound ? lower_bound : nz(trend_range_filter[1]) == lower_bound[1] and close >= lower_bound ? lower_bound : nz(trend_range_filter[1]) == lower_bound[1] and close <= lower_bound ? upper_bound : upper_bound
// 定义交易信号
buy_signal = ta.crossover(close, trend_range_filter)
sell_signal = ta.crossunder(close, trend_range_filter)
// 执行交易
if (buy_signal)
strategy.entry("Buy", strategy.long)
if (sell_signal)
strategy.entry("Sell", strategy.short)
// 绘制标签
if (show_trade_signals and buy_signal)
label.new(bar_index, trend_range_filter, "BUY", color=color.new(color.green, 0), style=label.style_label_up)
if (show_trade_signals and sell_signal)
label.new(bar_index, trend_range_filter, "SELL", color=color.new(color.red, 0), style=label.style_label_down)
// 绘制图表元素
trend_range_filter_plot = plot(trend_range_filter, color=close > trend_range_filter ? color.new(color.lime, 10) : close < trend_range_filter ? color.new(color.red, 10) : na, title="Trend Range Filter")
price_plot = plot(ohlc4, title='', style=plot.style_circles, linewidth=0)
up_trend_color = close > trend_range_filter ? color.new(color.lime, 80) : na
down_trend_color = close < trend_range_filter ? color.new(color.red, 80) : na
fill(price_plot, trend_range_filter_plot, title='UpTrend Highlighter', color=up_trend_color, transp=90)
fill(price_plot, trend_range_filter_plot, title='DownTrend Highlighter', color=down_trend_color, transp=90)