Chiến lược này là một hệ thống giao dịch định lượng dựa trên phân tích kỹ thuật nến, chủ yếu xác định các cơ hội giao dịch tiềm năng bằng cách phân tích tổng chiều dài của các nến trên và dưới. Cơ chế cốt lõi so sánh tổng chiều dài nến được tính toán theo thời gian thực với một đường trung bình chuyển động điều chỉnh, tạo ra các tín hiệu dài khi chiều dài nến vượt qua đường trung bình chuyển động. Chiến lược tích hợp nhiều loại đường trung bình chuyển động, bao gồm Trung bình chuyển động đơn giản (SMA), Trung bình chuyển động nhân tố (EMA), Trung bình chuyển động cân nhắc (WMA) và Trung bình chuyển động cân nhắc khối lượng (VWMA), cung cấp cho các nhà giao dịch các tùy chọn lựa chọn tham số linh hoạt.
Logic cốt lõi bao gồm các bước chính sau:
Chiến lược này kết hợp các chỉ số kỹ thuật cổ điển của phân tích nến với các phương pháp giao dịch định lượng hiện đại, tạo ra một hệ thống giao dịch có logic rõ ràng và tính thực tế mạnh mẽ. Những lợi thế cốt lõi nằm trong tính linh hoạt của các tham số và kiểm soát rủi ro toàn diện, mặc dù những hạn chế bao gồm sự phụ thuộc mạnh mẽ vào môi trường thị trường và độ nhạy của các tham số. Có tiềm năng cải thiện đáng kể thông qua tích hợp chỉ số đa chiều và tối ưu hóa quản lý vị trí. Nhìn chung, nó đại diện cho một chiến lược giao dịch định lượng căn bản và hợp lý phù hợp cho sự phát triển và tối ưu hóa hơn nữa.
/*backtest start: 2019-12-23 08:00:00 end: 2025-01-04 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=6 strategy("Daytrading ES Wick Length Strategy", overlay=true) // Input parameters ma_length = input.int(20, title="Moving Average Length", minval=1) ma_type = input.string("VWMA", title="Type of Moving Average", options=["SMA", "EMA", "WMA", "VWMA"]) ma_offset = input.float(10, title="MA Offset (Points)", step=1) hold_periods = input.int(18, title="Holding Period (Bars)", minval=1) // Calculating upper and lower wick lengths upper_wick_length = high - math.max(close, open) lower_wick_length = math.min(close, open) - low // Total wick length (upper + lower) total_wick_length = upper_wick_length + lower_wick_length // Calculate the moving average based on the selected method ma = switch ma_type "SMA" => ta.sma(total_wick_length, ma_length) "EMA" => ta.ema(total_wick_length, ma_length) "WMA" => ta.wma(total_wick_length, ma_length) "VWMA" => ta.vwma(total_wick_length, ma_length) // Add the offset to the moving average ma_with_offset = ma + ma_offset // Entry condition: wick length exceeds MA with offset long_entry_condition = total_wick_length > ma_with_offset // Long entry if (long_entry_condition) strategy.entry("Long", strategy.long) // Automatic exit after holding period if strategy.position_size > 0 and bar_index - strategy.opentrades.entry_bar_index(strategy.opentrades - 1) >= hold_periods strategy.close("Long") // Plot the total wick length as a histogram plot(total_wick_length, color=color.blue, style=plot.style_histogram, linewidth=2, title="Total Wick Length") // Plot the moving average with offset plot(ma_with_offset, color=color.yellow, linewidth=2, title="MA of Wick Length (Offset)")