This strategy trades based on the midnight candle color with a 1-hour delay, by analyzing the color of previous day’s midnight 0 o’clock candle to determine the trading direction at 1 o’clock next day. It goes long when 0 o’clock candle is green and goes short when 0 o’clock candle is red. Stop loss and take profit levels are also set.
The core logic of this strategy is based on the “midnight effect” in markets, where the color of 0 o’clock candle from previous day represents overall market sentiment and can be used to determine market direction after next day’s open.
Specifically, the strategy first judges if the current candle is 0 o’clock candle. If yes, record it as green if close is higher than open, otherwise red. On the next bar at 1 o’clock, go long/short according to the 0 o’clock candle color from previous day, with stop loss and take profit set.
By delaying entry for 1 hour, it prevents the volatile price at midnight affecting market entrance.
The strategy has clear and simple logic, judging next day direction by 0 o’clock candle color and controlling risks with stop loss/take profit. It is a beginner-friendly short-term trading strategy. But there are still some uncertainties, requiring continuous optimization and validation in live trading.
/*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)