该策略基于1小时延迟的午夜蜡烛颜色进行交易,通过分析前一天午夜0点蜡烛的颜色来判断第二天1点时的交易方向。当0点蜡烛为绿色时做多,为红色时做空。同时设置了止损和止盈位。
该策略的核心逻辑基于市场中“午夜之魅”的效应,即前一天午夜0点蜡烛颜色代表了当天整体市场氛围,可以用于判断次日开盘后的市场方向。
具体来说,策略首先判断当前K线是否是0点蜡烛,如果是,则记录其收盘价高于开盘价为绿色,否则为红色。在next bar即1点K线,根据前一天0点蜡烛的颜色进行相应方向的做多做空,并设置止损止盈位。
通过这个延迟开仓的方式,可以避免0点时的剧烈波动对入场的影响。
该策略整体思路清晰简单,通过0点蜡烛颜色判断次日方向,并设置止损止盈控制风险,是一种适合新手的入门短线策略。但也存在一定的不确定性,需要后续不断地优化和验证,才能真正实战。
/*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)