
Chiến lược này là một hệ thống giao dịch thông minh kết hợp các phương pháp phân tích kỹ thuật cổ điển của phân tích kỹ thuật. Chiến lược phân tích mối quan hệ giữa các đường K và các thực thể, kết hợp với tín hiệu giao nhau hai phương pháp, để nắm bắt chính xác các điểm biến đổi xu hướng thị trường. Hệ thống không chỉ quan tâm đến xu hướng giá cả, mà còn tính toán các tham số giao dịch động bằng cách tính toán sóng trung bình, cải thiện khả năng thích ứng của chiến lược.
Lập luận cốt lõi của chiến lược được chia thành hai phần chính:
Mô-đun nhận dạng hình dạng K-line nhận ra tín hiệu đảo ngược tiềm năng bằng cách tính toán tỷ lệ của đường viền trên và dưới với thực thể. Hệ thống đặt tham số nhân viền viền có thể điều chỉnh (wickMultiplier) và tham số phần trăm thực thể (bodyPercentage) để tối ưu hóa chất lượng tín hiệu.
Hệ thống giao chéo hai đường đều sử dụng đường trung bình di chuyển đơn giản (SMA) 14 chu kỳ và 28 chu kỳ làm chỉ số xu hướng. Hệ thống tạo ra tín hiệu đa khi đường trung bình ngắn hạn đi lên vượt qua đường trung bình dài hạn; hệ thống tạo ra tín hiệu hẹp khi đường trung bình ngắn hạn đi xuống vượt qua đường trung bình dài hạn.
Chiến lược này được xây dựng một khung quyết định giao dịch tương đối toàn diện bằng cách kết hợp nhận dạng hình dạng K-line và hệ thống chéo đồng nhất. Ưu điểm của chiến lược là cơ chế lọc tín hiệu nghiêm ngặt và khả năng điều chỉnh tham số linh hoạt, nhưng cũng cần chú ý đến các vấn đề về tối ưu hóa tham số và khả năng thích ứng với môi trường thị trường. Bằng cách tối ưu hóa và hoàn thiện liên tục, chiến lược này có khả năng duy trì hiệu suất ổn định trong các môi trường thị trường khác nhau.
/*backtest
start: 2024-10-28 00:00:00
end: 2024-11-27 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5 indicator("Wick Reversal Setup", overlay=true)
// Input parameters
wickMultiplier = input.float(3.5, title="Wick Multiplier", minval=0.5, maxval=20)
bodyPercentage = input.float(0.25, title="Body Percentage", minval=0.1, maxval=1.0)
// Calculate the average range over 50 periods
avgRange = ta.sma(high - low, 50)
// Define the lengths of wicks and bodies
bodyLength = math.abs(close - open)
upperWickLength = high - math.max(close, open)
lowerWickLength = math.min(close, open) - low
totalRange = high - low
// Long signal conditions
longSignal = (close > open and upperWickLength >= bodyLength * wickMultiplier and upperWickLength <= totalRange * bodyPercentage) or
(close < open and lowerWickLength >= bodyLength * wickMultiplier and upperWickLength <= totalRange * bodyPercentage) or
(close == open and close != high and upperWickLength >= bodyLength * wickMultiplier and upperWickLength <= totalRange * bodyPercentage) or
(open == high and close == high and totalRange >= avgRange)
// Short signal conditions
shortSignal = (close < open and (high - open) >= bodyLength * wickMultiplier and lowerWickLength <= totalRange * bodyPercentage) or
(close > open and (high - close) >= bodyLength * wickMultiplier and lowerWickLength <= totalRange * bodyPercentage) or
(close == open and close != low and lowerWickLength >= bodyLength * wickMultiplier and lowerWickLength <= totalRange * bodyPercentage) or
(open == low and close == low and totalRange >= avgRange)
// Plot signals
plotshape(series=longSignal, location=location.belowbar, color=color.green, style=shape.labelup, text="Long")
plotshape(series=shortSignal, location=location.abovebar, color=color.red, style=shape.labeldown, text="Short")
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Sahaj_Beriwal
//@version=5
strategy("My strategy", overlay=true, margin_long=100, margin_short=100)
longCondition = ta.crossover(ta.sma(close, 14), ta.sma(close, 28))
if (longCondition)
strategy.entry("L", strategy.long)
shortCondition = ta.crossunder(ta.sma(close, 14), ta.sma(close, 28))
if (shortCondition)
strategy.entry("S", strategy.short)