
Đây là một chiến lược giao dịch phá vỡ khoảng cách dựa trên mức cao hoặc thấp của ngày giao dịch trước đó. Chiến lược này tìm kiếm cơ hội giao dịch bằng cách xác định mức cao hoặc thấp của ngày trước khi giá phá vỡ hoặc giảm, mỗi lần phá vỡ hoặc giảm chỉ thực hiện một giao dịch. Chiến lược sử dụng thiết lập dừng lỗ 50 điểm cố định và đặt lại dấu hiệu giao dịch khi bắt đầu mỗi ngày giao dịch để đảm bảo giao dịch được tiến hành một cách có trật tự.
Lập luận cốt lõi của chiến lược bao gồm:
Chiến lược này là một hệ thống giao dịch cổ điển dựa trên phá vỡ khoảng thời gian mặt trời, phù hợp với việc theo dõi xu hướng một chiều của thị trường thông qua quản lý giao dịch và kiểm soát rủi ro nghiêm ngặt. Mặc dù có một số rủi ro vốn có, nhưng bằng cách tối ưu hóa và cải tiến hợp lý, bạn có thể nâng cao tính ổn định và khả năng sinh lợi của chiến lược.
/*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")