Đâ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: Khi giá đóng trên mức cao của ngày trước, hệ thống tạo ra tín hiệu dài; khi giá đóng dưới mức thấp của ngày trước, hệ thống tạo ra tín hiệu ngắn. 2. Kiểm soát tần số giao dịch: Chiến lược sử dụng cờ để đảm bảo chỉ có một giao dịch mỗi hướng mỗi ngày. 3. Quản lý rủi ro: Mỗi giao dịch có mức lợi nhuận và dừng lỗ cố định 50 điểm, cung cấp quản lý rủi ro đối xứng có hiệu quả kiểm soát rủi ro giao dịch duy nhất. Cơ chế Reset hàng ngày: Hệ thống đặt lại cờ giao dịch vào đầu mỗi ngày giao dịch, chuẩn bị cho các cơ hội giao dịch mới.
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")