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