
이것은 하루 동안의 가격의 높고 낮은 지점을 돌파하는 것을 기반으로 한 거래 전략이며, ATR 지표와 결합하여 중지 및 수익 목표를 동적으로 조정합니다. 이 전략은 이전 거래 날과 현재 거래 날의 최고 가격과 최저 가격을 모니터링하여 가격이 이러한 중요한 수준을 돌파 할 때 거래합니다. 이 전략은 또한 가짜 신호를 줄이기 위해 버퍼 영역 개념을 도입하고 ATR 배수를 사용하여 동적인 위험 관리 매개 변수를 설정합니다.
이 전략의 핵심 논리는 가격 돌파 전의 고저를 기반으로 거래하는 것이다. 구체적으로:
이것은 합리적이고 논리적으로 명확하게 설계된 돌파구 거래 전략이다. ATR 지표와 버퍼 구역 개념을 결합하여 거래 기회와 위험 통제를 효과적으로 균형을 맞추고 있다. 전략의 시각화와 자동화 수준이 높으며, 일일 거래자의 사용에 적합하다. 그러나 사용자는 시장 환경에 대한 적응성에 주의를 기울이고 실제 거래 효과에 따라 매개 변수 설정을 조정해야 한다. 제안된 최적화 방향에 따라 전략에 추가적인 개선이 가능하다.
/*backtest
start: 2025-02-13 00:00:00
end: 2025-02-14 01:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("Previous/Current Day High-Low Breakout Strategy", overlay=true)
// === INPUTS ===
buffer = input(10, title="Buffer Points Above/Below Day High/Low") // 0-10 point buffer
atrMultiplier = input.float(1.5, title="ATR Multiplier for SL/TP") // ATR-based SL & TP
// === DETECT A NEW DAY CORRECTLY ===
dayChange = ta.change(time("D")) != 0 // Returns true when a new day starts
// === FETCH PREVIOUS DAY HIGH & LOW CORRECTLY ===
var float prevDayHigh = na
var float prevDayLow = na
if dayChange
prevDayHigh := high[1] // Store previous day's high
prevDayLow := low[1] // Store previous day's low
// === TRACK CURRENT DAY HIGH & LOW ===
todayHigh = ta.highest(high, ta.barssince(dayChange)) // Highest price so far today
todayLow = ta.lowest(low, ta.barssince(dayChange)) // Lowest price so far today
// === FINAL HIGH/LOW SELECTION (Whichever Happens First) ===
finalHigh = math.max(prevDayHigh, todayHigh) // Use the highest value
finalLow = math.min(prevDayLow, todayLow) // Use the lowest value
// === ENTRY CONDITIONS ===
// 🔹 BUY (LONG) Condition: Closes below final low - buffer
longCondition = close <= (finalLow - buffer)
// 🔻 SELL (SHORT) Condition: Closes above final high + buffer
shortCondition = close >= (finalHigh + buffer)
// === ATR STOP-LOSS & TAKE-PROFIT ===
atr = ta.atr(14)
longSL = close - (atr * atrMultiplier) // Stop-Loss for Long
longTP = close + (atr * atrMultiplier * 2) // Take-Profit for Long
shortSL = close + (atr * atrMultiplier) // Stop-Loss for Short
shortTP = close - (atr * atrMultiplier * 2) // Take-Profit for Short
// === EXECUTE LONG (BUY) TRADE ===
if longCondition
strategy.entry("BUY", strategy.long, comment="🔹 BUY Signal")
strategy.exit("SELL TP", from_entry="BUY", stop=longSL, limit=longTP)
// === EXECUTE SHORT (SELL) TRADE ===
if shortCondition
strategy.entry("SELL", strategy.short, comment="🔻 SELL Signal")
strategy.exit("BUY TP", from_entry="SELL", stop=shortSL, limit=shortTP)
// === PLOT LINES FOR VISUALIZATION ===
plot(finalHigh, title="Breakout High (Prev/Today)", color=color.new(color.blue, 60), linewidth=2, style=plot.style_stepline)
plot(finalLow, title="Breakout Low (Prev/Today)", color=color.new(color.red, 60), linewidth=2, style=plot.style_stepline)
// === ALERT CONDITIONS ===
alertcondition(longCondition, title="🔔 Buy Signal", message="BUY triggered 🚀")
alertcondition(shortCondition, title="🔔 Sell Signal", message="SELL triggered 📉")