
Chiến lược nhận diện điểm đảo chiều đa chu kỳ và chiến lược giao dịch tự động là một hệ thống giao dịch định lượng dựa trên mô hình Magic-9⁄13 và nhận diện điểm đảo chiều hướng (DRP). Chiến lược này nắm bắt các tín hiệu đảo chiều của thị trường bằng cách nhận ra mô hình giá liên tục và điểm thay đổi động lực và tự động thực hiện giao dịch.
Các nguyên tắc cốt lõi của chiến lược này dựa trên hai chỉ số kỹ thuật chính: mô hình Magic-9⁄13 và điểm đảo chiều hướng ((DRP) }}.
Nhận dạng mô hình Magic-9⁄13:
Tính toán DRP:
Tạo tín hiệu giao dịch:
Cơ chế quản lý rủi ro:
Chức năng phụ trợ:
Nhận biết sớm sự đảo ngược thị trườngPhương pháp Magic-9⁄13 kết hợp với điểm đảo chiều hướng, có thể nắm bắt tín hiệu trong giai đoạn đầu của thị trường đảo ngược, cung cấp thời gian đầu vào tốt hơn.
Cơ chế xác nhận đa dạngChiến lược yêu cầu đáp ứng hai điều kiện độc lập cùng một lúc ((Magic mode và direction reversal crossing), giảm khả năng tín hiệu giả và nâng cao chất lượng giao dịch.
Kiểm soát rủi ro tự độngCác tính năng này có thể được sử dụng để kiểm soát rủi ro của một giao dịch và ngăn chặn các quyết định giao dịch cảm xúc.
Tín hiệu giao dịch trực quanGhi chú: Các tín hiệu giao dịch được hiển thị trực quan bằng cách thay đổi màu sắc của các thẻ và phác thảo, giúp các nhà giao dịch nhanh chóng nhận ra các cơ hội giao dịch tiềm năng.
Thể điều chỉnh tham sốChiến lược cung cấp các tùy chọn điều chỉnh hai tham số quan trọng là độ dài và độ dài hồi quy, cho phép các nhà giao dịch tối ưu hóa cho các môi trường thị trường và các loại giao dịch khác nhau.
Tính bền vững của xử lý dữ liệu: bao gồm cơ chế xử lý giá trị NA, tăng cường sự ổn định của chiến lược trong nhiều điều kiện dữ liệu khác nhau.
Tính thích nghi theo chu kỳChiến lược có thể được áp dụng cho các biểu đồ theo chu kỳ thời gian khác nhau, từ biểu đồ phút đến biểu đồ ngày, cung cấp tùy chọn khung thời gian giao dịch linh hoạt.
Độ nhạy tham sốHành động chiến lược phụ thuộc rất nhiều vào thiết lập các tham số về chiều dài và chiều dài ngược, các môi trường thị trường khác nhau có thể yêu cầu các kết hợp tham số khác nhau, thiết lập tham số sai có thể dẫn đến giao dịch quá mức hoặc bỏ lỡ cơ hội giao dịch. Giải pháp: Thực hiện truy lại lịch sử toàn diện, xây dựng ma trận tối ưu hóa tham số cho các điều kiện thị trường khác nhau.
Rủi ro biến động thị trườngTrong thị trường biến động cao, thiết lập điểm dừng là 10 điểm cố định có thể quá nhỏ, dẫn đến việc kích hoạt thường xuyên; trong thị trường biến động thấp, thiết lập này có thể quá lớn. Giải pháp: thiết lập điểm dừng dựa trên giá trị động của biến động thị trường (như ATR), chứ không phải là số điểm cố định.
Xu hướng thị trườngPhương pháp giải quyết: Thêm bộ lọc xu hướng, chỉ kích hoạt tín hiệu giao dịch khi xác nhận thị trường không ở trạng thái xu hướng mạnh.
Điểm trượt và rủi ro tính thanh khoảnGiải pháp: Tăng điều kiện lọc thanh khoản hoặc xem xét các yếu tố trượt khi thực hiện lệnh.
Rủi ro quá phù hợpChiến lược sử dụng nhiều điều kiện và tham số, có thể có nguy cơ quá phù hợp với dữ liệu lịch sử. Cách giải quyết: Sử dụng thử nghiệm ngoài mẫu và thử nghiệm phía trước để xác minh tính ổn định của chiến lược.
Tích hợp tín hiệu liên tụcTrong một số điều kiện thị trường, có thể liên tục tạo ra nhiều tín hiệu theo cùng một hướng, dẫn đến vị trí quá mức. Giải pháp: Thực hiện cơ chế lọc tín hiệu, hạn chế số lần thực hiện tín hiệu theo cùng một hướng trong một thời gian ngắn.
Hạn chế lỗ dừng cố địnhGiải pháp: Thực hiện các cơ chế dừng dừng động động dựa trên biến động của thị trường, hoặc sử dụng chiến lược theo dõi dừng lỗ.
Điều chỉnh tham số động:
Thêm bộ lọc xu hướng:
Tối ưu hóa cơ chế dừng lỗ và chốt lời:
Tăng lượng lọc giao dịch:
Thực hiện lọc thời gian:
Thêm chức năng quản lý vị trí:
Đánh giá cường độ tín hiệu:
Thêm xác nhận thị trường liên quan:
Chiến lược nhận diện và giao dịch tự động đa chu kỳ là một hệ thống giao dịch định lượng dựa trên một danh mục các chỉ số kỹ thuật, kết hợp với phân tích chuyển đổi hướng thông qua nhận dạng mô hình Magic-9⁄13, để nắm bắt cơ hội biến đổi thị trường tiềm năng. Điểm mạnh cốt lõi của chiến lược này là cơ chế xác nhận nhiều lần và chức năng quản lý rủi ro tích hợp, có thể cung cấp tín hiệu giao dịch tương đối đáng tin cậy trong giai đoạn đầu của biến đổi thị trường, đồng thời kiểm soát rủi ro bằng cách tự động hóa điểm dừng lỗ.
Tuy nhiên, chiến lược này cũng phải đối mặt với những hạn chế như độ nhạy cảm của tham số, khả năng thích ứng với môi trường thị trường và các trạm dừng cố định. Các biện pháp tối ưu hóa như điều chỉnh tham số động, thêm bộ lọc xu hướng, tối ưu hóa cơ chế dừng lỗ và tăng xác nhận khối lượng giao dịch có thể cải thiện đáng kể khả năng thích ứng và ổn định hiệu suất của chiến lược.
Đối với các nhà giao dịch, chiến lược này cung cấp một khuôn khổ để nắm bắt một cách có hệ thống các điểm biến động của thị trường, nhưng vẫn cần điều chỉnh và tối ưu hóa các tham số hợp lý kết hợp với sở thích rủi ro cá nhân và sự hiểu biết về thị trường. Trong quá trình ứng dụng thực tế, khuyến nghị thử nghiệm đầy đủ trước tiên trong môi trường mô phỏng để hiểu về đặc điểm hoạt động của chiến lược trong các môi trường thị trường khác nhau, sau đó dần dần áp dụng cho giao dịch thực.
/*backtest
start: 2025-06-05 00:00:00
end: 2025-06-05 15:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy('L3 Magic-9/13 Strategy', overlay=true, max_bars_back=4000, max_labels_count=500)
// 输入参数
length_input = input.int(title='Length', defval=9, minval=1)
lookback_length = input.int(title='Lookback Length', defval=4, minval=1)
// 获取第一个非 NA 值的函数
get_first_non_na_value(values, length) =>
result = float(na)
if length >= 1
for i = 0 to length - 1
if na(result) or not na(values[i])
result := values[i]
result
// 计算连续条件出现次数的函数
count_consecutive_occurrences(condition, length) =>
count = 0
for i = 1 to length
if condition[i - 1]
count += 1
count
// 检查条件是否在给定周期内出现的函数
check_condition_occurrence(condition, length) =>
occurrence = count_consecutive_occurrences(condition, length) != 0 ? 1 : 0
occurrence
// 基于回溯周期过滤出现次数的函数
filter_occurrences(condition, lookback_period) =>
output = 0.0
temp = 0
for i = lookback_period to 0
if temp > 0
output := 0.0
temp := temp[1] - 1
else
if not condition[i]
output := 0.0
else
output := 1.0
temp := lookback_period + 1
output_bool = output == 1 ? true : false
output_bool
// Magic-9/13 逻辑
high_9 = count_consecutive_occurrences(close > get_first_non_na_value(close, 4), 9) == 9 and count_consecutive_occurrences(close > get_first_non_na_value(close, 4), 10) == 9
low_9 = count_consecutive_occurrences(close < get_first_non_na_value(close, 4), 9) == 9 and count_consecutive_occurrences(close < get_first_non_na_value(close, 4), 10) == 9
// 计算方向反转点
up_count = 0
down_count = 0
for i = 0 to length_input - 1
up_count += (nz(close[i]) > nz(close[i + lookback_length]) ? 1 : 0)
down_count += (nz(close[i]) < nz(close[i + lookback_length]) ? 1 : 0)
directional_reversal_point = down_count == length_input ? 1 : up_count == length_input ? -1 : 0
// 定义交易信号
buy_signal = check_condition_occurrence(low_9, 2) and ta.crossover(directional_reversal_point, 0)
sell_signal = check_condition_occurrence(high_9, 2) and ta.crossunder(directional_reversal_point, 0)
// 执行交易
if (buy_signal)
strategy.entry("Buy", strategy.long)
strategy.exit("Take Profit", "Buy", limit=close + 10 * syminfo.pointvalue, stop=close - 10 * syminfo.pointvalue)
if (sell_signal)
strategy.entry("Sell", strategy.short)
strategy.exit("Take Profit", "Sell", limit=close - 10 * syminfo.pointvalue, stop=close + 10 * syminfo.pointvalue)
// 绘制标签
labels = buy_signal ? label.new(bar_index, low, 'B', color=color.new(color.red, 40), textcolor=color.white, style=label.style_label_up, yloc=yloc.price, size=size.small) : sell_signal ? label.new(bar_index, high, 'S', color=color.new(color.lime, 40), textcolor=color.white, style=label.style_label_down, yloc=yloc.price, size=size.small) : na
// 绘制蜡烛图颜色
signal = directional_reversal_point > 0 or up_count > down_count ? 1 : directional_reversal_point < 0 or down_count > up_count ? -1 : 0
drp_color = signal > 0 ? color.green : signal < 0 ? color.red : color.black
barcolor(drp_color)