
Chiến lược này chủ yếu đánh giá các điểm biến động tiềm năng của thị trường bằng cách xác định một hình dạng K-line cụ thể - Pin Bar. Pin Bar là hình dạng K-line bao gồm các đường dài và các thực thể nhỏ, cho thấy thị trường có biến động lớn tại điểm đó, nhưng cuối cùng giá rút lui, cho thấy điểm đó có thể là điểm hỗ trợ hoặc kháng cự. Chiến lược này sử dụng đường trung bình di chuyển đơn giản 50 chu kỳ ((SMA) để đánh giá xu hướng hiện tại và sử dụng 20 chu kỳ SMA như một điều kiện lọc khối lượng giao dịch, chỉ khi khối lượng giao dịch lớn hơn đường trung bình này xuất hiện Pin Bar được coi là tín hiệu hiệu quả. Ngoài ra, chiến lược này cũng tính toán chỉ số tương đối mạnh ((RSI), nhưng không được sử dụng trực tiếp trong điều kiện vào và ra sân, nhưng được chọn làm điều kiện cho tín hiệu có thể được lọc thêm.
Chiến lược đảo ngược Pin Bar sử dụng một cách đơn giản và hiệu quả để cải thiện độ chính xác nhận tín hiệu thông qua việc lọc xu hướng và lọc khối lượng giao dịch. Mặc dù hiện tại vẫn còn một số nơi có thể cải thiện, nhưng tư duy tổng thể là khả thi và đáng để kiểm tra tối ưu hóa hơn nữa. Pin Bar là một hình thức giá cổ điển, có thể được sử dụng kết hợp với các chỉ số hoặc tín hiệu khác để có được một hệ thống giao dịch ổn định 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)