Chiến lược này dựa trên các mô hình đảo ngược (cụm, nuốt và doji) và mức hỗ trợ và kháng cự trong phân tích kỹ thuật, giao dịch trên biểu đồ 1 giờ. Chiến lược xác định các điểm đảo ngược thị trường tiềm năng và thực hiện giao dịch với mức lợi nhuận và dừng lỗ được xác định trước.
Ý tưởng chính của chiến lược là vào một vị trí dài khi một mô hình đảo ngược tăng (như búa, ngập tăng hoặc doji) xuất hiện gần mức hỗ trợ, và vào một vị trí ngắn khi một mô hình đảo ngược giảm (như búa, ngập giảm hoặc doji) xuất hiện gần mức kháng cự.
Giải pháp:
Chiến lược này nắm bắt các cơ hội giao dịch tiềm năng bằng cách xác định các mô hình đảo ngược gần mức hỗ trợ và kháng cự. Nó rất đơn giản để sử dụng và áp dụng cho các môi trường thị trường khác nhau. Tuy nhiên, sự thành công của chiến lược phụ thuộc vào việc xác định chính xác các mô hình đảo ngược và mức hỗ trợ và kháng cự. Bằng cách tối ưu hóa các điều kiện xác nhận của tín hiệu giao dịch, kết hợp các chỉ số kỹ thuật khác và điều chỉnh năng động mức lợi nhuận và dừng lỗ, hiệu suất của chiến lược có thể được cải thiện hơn nữa.
/*backtest start: 2024-05-07 00:00:00 end: 2024-06-06 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Kingcoinmilioner //@version=5 strategy("Reversal Patterns at Support and Resistance", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100) // Parameters support_resistance_lookback = input.int(50, title="Support/Resistance Lookback Period") reversal_tolerance = input.float(0.01, title="Reversal Tolerance (percent)", step=0.01) / 100 take_profit_percent = input.float(3, title="Take Profit (%)") / 100 stop_loss_percent = input.float(1, title="Stop Loss (%)") / 100 // Functions to identify key support and resistance levels findSupport() => ta.lowest(low, support_resistance_lookback) findResistance() => ta.highest(high, support_resistance_lookback) // Identify reversal patterns isHammer() => body = math.abs(close - open) lowerWick = open > close ? (low < close ? close - low : open - low) : (low < open ? open - low : close - low) upperWick = high - math.max(open, close) lowerWick > body * 2 and upperWick < body isEngulfing() => (close[1] < open[1] and close > open and close > open[1] and open < close[1]) (close[1] > open[1] and close < open and close < open[1] and open > close[1]) isDoji() => math.abs(open - close) <= (high - low) * 0.1 // Identify support and resistance levels support = findSupport() resistance = findResistance() // Check for reversal patterns at support and resistance hammerAtSupport = isHammer() and (low <= support * (1 + reversal_tolerance)) engulfingAtSupport = isEngulfing() and (low <= support * (1 + reversal_tolerance)) dojiAtSupport = isDoji() and (low <= support * (1 + reversal_tolerance)) hammerAtResistance = isHammer() and (high >= resistance * (1 - reversal_tolerance)) engulfingAtResistance = isEngulfing() and (high >= resistance * (1 - reversal_tolerance)) dojiAtResistance = isDoji() and (high >= resistance * (1 - reversal_tolerance)) // Trading logic if (hammerAtSupport or engulfingAtSupport or dojiAtSupport) strategy.entry("Long", strategy.long) stop_level = low * (1 - stop_loss_percent) take_profit_level = close * (1 + take_profit_percent) strategy.exit("Take Profit/Stop Loss", from_entry="Long", stop=stop_level, limit=take_profit_level) if (hammerAtResistance or engulfingAtResistance or dojiAtResistance) strategy.entry("Short", strategy.short) stop_level = high * (1 + stop_loss_percent) take_profit_level = close * (1 - take_profit_percent) strategy.exit("Take Profit/Stop Loss", from_entry="Short", stop=stop_level, limit=take_profit_level) // Plot support and resistance levels for visualization plot(support, color=color.green, linewidth=1, title="Support Level") plot(resistance, color=color.red, linewidth=1, title="Resistance Level") // Plot reversal patterns on the chart for visualization plotshape(series=hammerAtSupport, location=location.belowbar, color=color.green, style=shape.labelup, text="Hammer at Support") plotshape(series=engulfingAtSupport, location=location.belowbar, color=color.green, style=shape.labelup, text="Engulfing at Support") plotshape(series=dojiAtSupport, location=location.belowbar, color=color.green, style=shape.labelup, text="Doji at Support") plotshape(series=hammerAtResistance, location=location.abovebar, color=color.red, style=shape.labeldown, text="Hammer at Resistance") plotshape(series=engulfingAtResistance, location=location.abovebar, color=color.red, style=shape.labeldown, text="Engulfing at Resistance") plotshape(series=dojiAtResistance, location=location.abovebar, color=color.red, style=shape.labeldown, text="Doji at Resistance")