
이것은 이전 거래일 고하의 상위/저하를 기반으로 한 간격파괴 거래 전략이다. 이 전략은 가격의 상위/저하를 식별하여 거래 기회를 찾고, 각각의 상위/저하 방향에 대해 단 한 번의 거래만 수행한다. 이 전략은 고정된 50점의 스톱로스 설정을 채택하고, 각 거래일 초에 거래 마크를 재설치하여 거래의 질서를 보장한다. 이 전략의 핵심은 하루 내의 가격의 일방적인 상위 상황을 포착하고, 엄격한 거래 관리를 통해 위험을 통제하는 것이다.
이 전략의 핵심 논리는 다음과 같습니다.
이 전략은 일선 간격 돌파를 기반으로 한 고전 거래 시스템으로, 엄격한 거래 관리 및 위험 통제를 통해 시장의 일방적인 추세 상황을 추적하는 데 적합합니다. 일부 고유한 위험이 존재하지만, 합리적인 최적화 및 개선을 통해 전략의 안정성과 수익성을 높일 수 있습니다. 전략의 성공에 핵심은 가짜 돌파 위험을 올바르게 처리하고, 합리적으로 스톱로스를 설정하고, 다양한 시장 환경에서 전략의 적응성을 유지하는 데 있습니다.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-09 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("US 30 Daily Breakout Strategy (Single Trade Per Breakout/Breakdown, New York Time)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, trim_orders = true)
// Set pip size for US 30 (1 pip = 1 point)
var float pip = 1.0
// Set take profit and stop loss in points (1 pip = 1 point)
take_profit_pips = 50
stop_loss_pips = 50
// Calculate the previous day's high and low (assumes chart timezone is set to New York)
prevDayHigh = request.security(syminfo.tickerid, "D", high[1])
prevDayLow = request.security(syminfo.tickerid, "D", low[1])
// Initialize flags to track if a breakout/breakdown trade has been taken
var bool breakout_traded = false
var bool breakdown_traded = false
// Reset flags at the start of a new day in New York timezone (as per chart setting)
if (ta.change(time("D")))
breakout_traded := false
breakdown_traded := false
// Condition for a long entry: candle closes above the previous day's high and no breakout trade has been taken
longCondition = close > prevDayHigh and strategy.opentrades == 0 and not breakout_traded
// Condition for a short entry: candle closes below the previous day's low and no breakdown trade has been taken
shortCondition = close < prevDayLow and strategy.opentrades == 0 and not breakdown_traded
// Execute long trade if the condition is met, and set the breakout flag
if (longCondition)
strategy.entry("Long", strategy.long)
strategy.exit("Take Profit/Stop Loss", "Long", limit=close + take_profit_pips * pip, stop=close - stop_loss_pips * pip)
breakout_traded := true // Set breakout flag
// Execute short trade if the condition is met, and set the breakdown flag
if (shortCondition)
strategy.entry("Short", strategy.short)
strategy.exit("Take Profit/Stop Loss", "Short", limit=close - take_profit_pips * pip, stop=close + stop_loss_pips * pip)
breakdown_traded := true // Set breakdown flag
// Plotting the previous day's high and low for visualization
plot(prevDayHigh, color=color.green, linewidth=1, title="Previous Day High")
plot(prevDayLow, color=color.red, linewidth=1, title="Previous Day Low")