Chiến lược này chủ yếu nhằm mục đích xác định các điểm đảo ngược tiềm năng của thị trường bằng cách nhận ra một mô hình nến cụ thể được gọi là Pin Bar. Pin Bar được đặc trưng bởi một cái bóng dài và một cơ thể nhỏ, cho thấy sự biến động thị trường đáng kể ở mức giá đó, nhưng cuối cùng giá lại, cho thấy mức có thể hoạt động như một hỗ trợ hoặc kháng cự. Chiến lược sử dụng một trung bình di chuyển đơn giản 50 giai đoạn (SMA) để xác định hướng xu hướng hiện tại và một SMA khối lượng 20 giai đoạn như một bộ lọc, yêu cầu khối lượng phải trên mức trung bình này để tín hiệu Pin Bar được coi là hợp lệ. Ngoài ra, Chỉ số Sức mạnh Tương đối (RSI) được tính toán nhưng không được sử dụng trực tiếp trong điều kiện nhập / ra, thay vào đó phục vụ như một điều kiện lọc tùy chọn hơn nữa.
Chiến lược đảo ngược Pin Bar này sử dụng một cách tiếp cận đơn giản và hiệu quả, sử dụng lọc xu hướng và lọc khối lượng để cải thiện độ chính xác nhận dạng tín hiệu. Mặc dù có chỗ để cải thiện, khái niệm tổng thể là khả thi và xứng đáng được tối ưu hóa và thử nghiệm thêm. Là một mô hình giá cổ điển, Pin Bar cũng có thể được kết hợp với các chỉ số hoặc tín hiệu khác để đạt được một hệ thống giao dịch mạnh mẽ hơn.
/*backtest start: 2024-05-01 00:00:00 end: 2024-05-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Filtered Pin Bar Strategy with Relaxed Volume", overlay=true) // Define the size of the pin bar's wick and body wickSize = 0.6 bodySize = 0.3 // Calculate the size of the wicks and body upperWick = high - math.max(open, close) lowerWick = math.min(open, close) - low body = math.abs(close - open) // Define a simple moving average to determine the trend smaLength = 50 sma = ta.sma(close, smaLength) // Define a more relaxed volume threshold volumeThreshold = ta.sma(volume, 20) * 1.0 // Define RSI parameters rsiLength = 14 rsiOverbought = 70 rsiOversold = 30 rsi = ta.rsi(close, rsiLength) // Define the conditions for a bullish pin bar bullishPinBar = (lowerWick > (wickSize * (high - low))) and (body < (bodySize * (high - low))) and (close > open) and (close > sma) and (volume > volumeThreshold) // Define the conditions for a bearish pin bar bearishPinBar = (upperWick > (wickSize * (high - low))) and (body < (bodySize * (high - low))) and (close < open) and (close < sma) and (volume > volumeThreshold) // Plot the bullish and bearish pin bars on the chart plotshape(series=bullishPinBar, title="Bullish Pin Bar", location=location.belowbar, color=color.green, style=shape.labelup, text="PB") plotshape(series=bearishPinBar, title="Bearish Pin Bar", location=location.abovebar, color=color.red, style=shape.labeldown, text="PB") // Entry and exit rules if (bullishPinBar) strategy.entry("Bullish Pin Bar", strategy.long) if (bearishPinBar) strategy.entry("Bearish Pin Bar", strategy.short) // Optional: Set stop loss and take profit stopLoss = 2 * body takeProfit = 3 * body strategy.exit("Exit Long", from_entry="Bullish Pin Bar", stop=low - stopLoss, limit=high + takeProfit) strategy.exit("Exit Short", from_entry="Bearish Pin Bar", stop=high + stopLoss, limit=low - takeProfit)