Chiến lược Phá vỡ Động lực đảo ngược là một chiến lược giao dịch định lượng tạo ra các tín hiệu giao dịch bằng cách sử dụng các chỉ số đảo ngược giá và động lực. Dựa trên lý thuyết
Lý thuyết cốt lõi của chiến lược này là xác định các điểm đảo ngược thị trường bằng cách tính toán giá cao nhất và thấp nhất trong một cửa sổ nhìn lại cụ thể (ví dụ: 20 ngày).
Tính toán giá cao nhất (window_high) và giá thấp nhất (window_low) trong 20 ngày qua.
Nếu mức cao nhất ngày hôm nay cao hơn mức cao nhất trong 20 ngày qua (tốc độ cao nhất 20 ngày mới), nhập thời gian theo dõi đảo ngược cao và đặt bộ đếm thành 5 ngày.
Nếu không có mức cao mới xảy ra, khấu trừ số bằng 1 mỗi ngày. Khi số đạt 0, thời gian theo dõi đảo ngược cao kết thúc.
Lý thuyết đánh giá cho giá thấp nhất tương tự. Nếu một mức thấp mới xảy ra, hãy nhập thời gian theo dõi đảo ngược thấp.
Các tín hiệu đảo ngược gần các điểm đảo ngược chính cho phép nắm bắt các động thái lớn hơn.
Chiến lược cũng thiết lập thời gian bắt đầu giao dịch để tránh tạo ra tín hiệu trên dữ liệu lịch sử.
Chiến lược phá vỡ đà đảo ngược có những lợi thế chính sau:
Thu thập các cơ hội đảo ngược, phù hợp với xu hướng đảo ngược. Thị trường thường cho thấy một số mức độ đảo ngược sau một xu hướng tăng hoặc giảm bền vững. Chiến lược này nhằm mục đích nắm bắt các điểm chuyển đổi này.
Theo dõi giá cao nhất và thấp nhất trong một cửa sổ có thể xác định một cách nhạy cảm xu hướng đảo ngược giá và thời gian.
Thời gian theo dõi đảo ngược tránh các tín hiệu sai. Các tín hiệu chỉ được tạo ra xung quanh các điểm đảo ngược chính, lọc một số tiếng ồn.
Cho phép các vị trí dài và ngắn. thay thế giữa dài và ngắn theo hướng thị trường.
Khá đơn giản, dễ thực hiện, dựa vào giá cả và chỉ số động lực đơn giản, dễ lập trình.
Những rủi ro chính của chiến lược này bao gồm:
Dự đoán đảo ngược không chính xác. Chiến lược có thể gây ra tổn thất nếu thị trường có xu hướng theo hướng.
Các xu hướng thị trường nói chung không được xem xét. Sự đảo ngược cổ phiếu cá nhân không nhất thiết đại diện cho sự đảo ngược thị trường. Phân tích thị trường nên được kết hợp.
Khả năng rút tiền lớn, rút tiền có thể mở rộng mà không có sự đảo ngược thực tế.
Tính lệch phù hợp dữ liệu. Hiệu suất có thể khác nhau đáng kể so với backtests.
Độ nhạy của tham số. Thời gian cửa sổ, tham số đếm vv ảnh hưởng đến sự ổn định.
Các phương pháp kiểm soát rủi ro tương ứng bao gồm tối ưu hóa dừng lỗ, kết hợp các yếu tố thị trường, điều chỉnh các kết hợp tham số và xác minh sự ổn định.
Các hướng tối ưu hóa chính bao gồm:
Bao gồm các chỉ số thị trường. Đánh giá sức mạnh thị trường để tránh môi trường hình ảnh lớn không thuận lợi.
Chọn cổ phiếu với cơ bản vững chắc và định giá quá cao.
Tối ưu hóa tham số. Điều chỉnh thời gian cửa sổ và tham số đếm để tìm kết hợp tham số tối ưu.
Thêm các chiến lược dừng lỗ, ví dụ như dừng kéo dài, dừng biến động để kiểm soát giảm tối đa.
Tăng độ chính xác dự đoán của máy học về sự đảo ngược giá.
Chiến lược Breakout Động lực đảo ngược xác định cơ hội đảo ngược bằng cách theo dõi giá và động lực. Nó phản ứng nhạy cảm và xác định xu hướng đảo ngược và thời gian. Nhưng nó có rủi ro đòi hỏi tối ưu hóa và kiểm soát rủi ro thích hợp. Nhìn chung, khi được hiểu và tối ưu hóa kỹ lưỡng, nó có thể tạo thành một thành phần hiệu quả của một hệ thống giao dịch định lượng.
/*backtest start: 2023-02-16 00:00:00 end: 2024-02-22 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("New Highs and Lows Momentum Strategy", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100) window = input.int(20, title="New Highs and Lows Window", minval=1) decay = input.int(5, title="Decay", minval=1) startDate = input(timestamp("1 Jan 2023"), title = "Start Date") allowShort = input.bool(false, title = "Allow shorting") var int highDecayCounter = 0 var bool isHighPeriod = false var int lowDecayCounter = 0 var bool isLowPeriod = false inTradeWindow = true window_high = ta.highest(close, window) window_low = ta.lowest(low, window) // Logic for Highs if window_high > ta.highest(close, window)[1] highDecayCounter := decay isHighPeriod := true else if highDecayCounter > 0 highDecayCounter := highDecayCounter - 1 else isHighPeriod := false // Logic for Lows if window_low < ta.lowest(low, window)[1] lowDecayCounter := decay isLowPeriod := true else if lowDecayCounter > 0 lowDecayCounter := lowDecayCounter - 1 else isLowPeriod := false // Strategy Execution if inTradeWindow if isHighPeriod and highDecayCounter == decay strategy.entry("Long", strategy.long) if isHighPeriod and highDecayCounter == 0 strategy.close("Long") if isLowPeriod and lowDecayCounter == decay and allowShort strategy.entry("Short", strategy.short) if isLowPeriod and lowDecayCounter == 0 and allowShort strategy.close("Short") // Plotting plot(window_high, color=color.green) plot(window_low, color=color.red)