
Strategi ini didasarkan pada bentuk pembalikan dalam analisis teknikal ((tajuk, bentuk penelan, dan bintang salib) serta kedudukan sokongan dan rintangan, dan berdagang pada carta 1 jam. Strategi ini melakukan perdagangan dengan mengenal pasti titik pembalikan pasaran yang berpotensi dan melakukan perdagangan pada tahap hentian dan hentian yang dirancang.
Strategi utama strategi ini adalah untuk membuka lebih banyak kedudukan apabila terdapat bentuk pembalikan bullish berhampiran kedudukan sokongan (seperti garis kepala, bentuk penelan bullish atau bintang salib), dan membuka posisi kosong apabila terdapat bentuk pembalikan bullish berhampiran kedudukan rintangan (seperti garis kepala, bentuk penelan bullish atau bintang salib). Pada masa yang sama, menetapkan tahap berhenti dan berhenti untuk mengawal risiko dan mengunci keuntungan.
Penyelesaian:
Strategi ini menangkap peluang perdagangan yang berpotensi dengan mengenal pasti bentuk pembalikan berhampiran tahap sokongan dan rintangan. Ia mudah digunakan dan sesuai untuk keadaan pasaran yang berbeza. Walau bagaimanapun, kejayaan strategi bergantung pada penilaian yang tepat mengenai bentuk pembalikan dan tahap rintangan sokongan.
/*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")