Chiến lược này giao dịch dựa trên màu nến nửa đêm với sự chậm trễ 1 giờ, bằng cách phân tích màu nến nửa đêm 0 giờ của ngày trước để xác định hướng giao dịch lúc 1 giờ ngày hôm sau. Nó đi dài khi nến 0 giờ màu xanh lá cây và đi ngắn khi nến 0 giờ màu đỏ.
Lý thuyết cốt lõi của chiến lược này dựa trên hiệu ứng nửa đêm trên thị trường, nơi màu của nến 0 giờ từ ngày trước đại diện cho tâm lý thị trường tổng thể và có thể được sử dụng để xác định hướng thị trường sau khi ngày tiếp theo mở cửa.
Cụ thể, chiến lược đầu tiên đánh giá liệu nến hiện tại là nến 0 giờ. Nếu có, ghi lại màu xanh lá cây nếu đóng cao hơn mở, nếu không màu đỏ. Trên thanh tiếp theo lúc 1 giờ, mua dài / ngắn theo màu nến 0 giờ từ ngày trước, với lệnh dừng lỗ và lấy lợi nhuận.
Bằng cách trì hoãn nhập 1 giờ, nó ngăn chặn giá biến động vào nửa đêm ảnh hưởng đến việc nhập thị trường.
Chiến lược có logic rõ ràng và đơn giản, đánh giá hướng ngày hôm sau bằng màu nến 0 giờ và kiểm soát rủi ro bằng cách dừng lỗ / lấy lợi nhuận.
/*backtest start: 2023-12-28 00:00:00 end: 2024-01-04 00:00:00 period: 3m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Midnight Candle Color Strategy with 1-Hour Delay and SL/TP", shorttitle="12AM +1H SL/TP Strat", overlay=true) // Adjust for New York time (UTC-5 or UTC-4 for Daylight Saving Time) // Assuming UTC-5 for now; adjust as necessary for Daylight Saving Time nyHour(hour) => (hour - 5) % 24 // Function to check if the current bar is the 12:00 AM New York time bar isMidnightBar() => nyHour(hour) == 0 and minute == 0 // Function to check if the current bar is the 1:00 AM New York time bar (1 hour after midnight) is1AMBar() => nyHour(hour) == 1 and minute == 0 // Variable to store the color of the previous day's midnight candle var color midnightCandleColorPrevDay = na // Determine the color of the previous day's midnight candle if isMidnightBar() midnightCandleColorPrevDay := close[1] > open[1] ? color.green : color.red // Strategy execution at 1:00 AM based on the color of the previous day's midnight candle if is1AMBar() if midnightCandleColorPrevDay == color.green strategy.entry("Long", strategy.long) strategy.exit("Take Profit", "Long", limit=close + 57 * syminfo.mintick, stop=close - 200 * syminfo.mintick) if midnightCandleColorPrevDay == color.red strategy.entry("Short", strategy.short) strategy.exit("Take Profit", "Short", limit=close - 50 * syminfo.mintick, stop=close + 200 * syminfo.mintick) // Optional: Plot a marker for visualization plotshape(series=isMidnightBar(), style=shape.triangleup, location=location.belowbar, color=color.new(midnightCandleColorPrevDay, 90), size=size.small) plotshape(series=is1AMBar(), style=shape.triangledown, location=location.abovebar, color=color.blue, size=size.small)