Chiến lược này là một hệ thống giao dịch đột phá dựa trên nhiều mức giá chính. Nó chủ yếu theo dõi sáu mức giá quan trọng: Tối cao của ngày (HOD), Tối thấp của ngày (LOD), Tối cao của thị trường (PMH), Tối thấp của thị trường (PML), Tối cao của ngày trước (PDH), và Tối thấp của ngày trước (PDL).
Logic cốt lõi bao gồm một số thành phần chính:
Chiến lược này nắm bắt các cơ hội thị trường bằng cách theo dõi và sử dụng nhiều mức giá chính, có logic rõ ràng và tự động hóa cao. Tuy nhiên, nó cũng mang lại một số rủi ro cần phải được giải quyết thông qua các bộ lọc chỉ số kỹ thuật và cơ chế quản lý rủi ro được cải thiện. Ưu điểm chính của chiến lược nằm trong hệ thống tham chiếu giá đa chiều, cho phép nắm bắt xu hướng thị trường tốt hơn, nhưng ứng dụng thực tế đòi hỏi điều chỉnh tham số cụ thể dựa trên các điều kiện thị trường khác nhau.
/*backtest start: 2024-12-06 00:00:00 end: 2025-01-04 08:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © tradingbauhaus //@version=6 strategy("HOD/LOD/PMH/PML/PDH/PDL Strategy by tradingbauhaus ", shorttitle="HOD/LOD Strategy", overlay=true) // Daily high and low dailyhigh = request.security(syminfo.tickerid, 'D', high) dailylow = request.security(syminfo.tickerid, 'D', low) // Previous day high and low var float previousdayhigh = na var float previousdaylow = na high1 = request.security(syminfo.tickerid, 'D', high[1]) low1 = request.security(syminfo.tickerid, 'D', low[1]) high0 = request.security(syminfo.tickerid, 'D', high[0]) low0 = request.security(syminfo.tickerid, 'D', low[0]) // Yesterday high and low if (hour == 9 and minute > 30) or hour > 10 previousdayhigh := high1 previousdaylow := low1 else previousdayhigh := high0 previousdaylow := low0 // Premarket high and low t = time("1440", "0000-0930") // 1440 is the number of minutes in a whole day. is_first = na(t[1]) and not na(t) or t[1] < t ending_hour = 9 ending_minute = 30 var float pm_high = na var float pm_low = na if is_first and barstate.isnew and ((hour < ending_hour or hour >= 16) or (hour == ending_hour and minute < ending_minute)) pm_high := high pm_low := low else pm_high := pm_high[1] pm_low := pm_low[1] if high > pm_high and ((hour < ending_hour or hour >= 16) or (hour == ending_hour and minute < ending_minute)) pm_high := high if low < pm_low and ((hour < ending_hour or hour >= 16) or (hour == ending_hour and minute < ending_minute)) pm_low := low // Plotting levels plot(dailyhigh, style=plot.style_line, title="Daily high", color=color.white, linewidth=1, trackprice=true) plot(dailylow, style=plot.style_line, title="Daily low", color=color.purple, linewidth=1, trackprice=true) plot(previousdayhigh, style=plot.style_line, title="Previous Day high", color=color.orange, linewidth=1, trackprice=true) plot(previousdaylow, style=plot.style_line, title="Previous Day low", color=color.blue, linewidth=1, trackprice=true) plot(pm_high, style=plot.style_line, title="Premarket high", color=color.green, linewidth=1, trackprice=true) plot(pm_low, style=plot.style_line, title="Premarket low", color=color.red, linewidth=1, trackprice=true) // Strategy logic // Long entry: Price crosses above PMH or PDH if (ta.crossover(close, pm_high) or ta.crossover(close, previousdayhigh)) and strategy.opentrades == 0 strategy.entry("Long", strategy.long) // Short entry: Price crosses below PML or PDL if (ta.crossunder(close, pm_low) or ta.crossunder(close, previousdaylow)) and strategy.opentrades == 0 strategy.entry("Short", strategy.short) // Exit long: Price reaches HOD if strategy.position_size > 0 and ta.crossover(close, dailyhigh) strategy.close("Long") // Exit short: Price reaches LOD if strategy.position_size < 0 and ta.crossunder(close, dailylow) strategy.close("Short")