
Chiến lược này là hệ thống giao dịch đột phá dựa trên nhiều mức giá quan trọng. Nó chủ yếu theo dõi sáu điểm chính: mức cao trong ngày (HOD), mức thấp trong ngày (LOD), mức cao trước thị trường (PMH), mức thấp trước thị trường (PML), mức cao ngày hôm trước (PDH) và mức thấp ngày hôm trước (PDL). Giá các mức độ, tín hiệu giao dịch được tạo ra khi giá phá vỡ các mức này. Chiến lược này sử dụng giao dịch tự động để thực hiện các hoạt động mua và bán dựa trên mức giá giao nhau ở các mức quan trọng.
Logic cốt lõi của chiến lược bao gồm những phần chính sau:
Chiến lược này nắm bắt cơ hội thị trường bằng cách theo dõi và sử dụng nhiều mức giá quan trọng, được đặc trưng bởi logic rõ ràng và mức độ tự động hóa cao. Nhưng cũng có những rủi ro nhất định cần được tối ưu hóa bằng cách bổ sung bộ lọc chỉ báo kỹ thuật, cải thiện cơ chế quản lý rủi ro, v.v. Ưu điểm cốt lõi của chiến lược này nằm ở hệ thống tham chiếu giá đa chiều, cho phép nắm bắt tốt hơn xu hướng thị trường, nhưng trong ứng dụng thực tế, cần phải điều chỉnh các thông số mục tiêu theo các môi trường 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")