
La estrategia se basa en el color del reloj de medianoche con un retraso de 1 hora y determina la dirección de la negociación a las 1 de la mañana siguiente mediante el análisis del color del reloj de medianoche 0 el día anterior. Hacer más cuando el reloj de 0 es verde y hacer vacío cuando es rojo.
La lógica central de esta estrategia se basa en el efecto de la atracción de la medianoche en el mercado, es decir, el color del rayo 0 a la medianoche del día anterior representa el ambiente general del mercado de ese día, que se puede usar para determinar la dirección del mercado después de la apertura del día siguiente.
En concreto, la estrategia primero determina si la línea K actual es de 0 puntos de venta, si es así, registra su precio de cierre más alto que el precio de apertura en verde, si no en rojo. En la siguiente barra, la línea K de 1 punto, se hace un exceso de vacío en la dirección correspondiente según el color de la línea de 0 puntos de venta del día anterior, y se establece un punto de parada de pérdidas.
Con esta forma de retrasar la apertura de la posición, se puede evitar el impacto de las fuertes fluctuaciones en la entrada a la hora 0.
La idea general de la estrategia es clara y simple, determina la dirección del día siguiente a través del color de la barra de cero puntos y establece el riesgo de control de la barra de parada, es una estrategia de línea corta de entrada adecuada para los principiantes. Pero también existe cierta incertidumbre, que requiere una optimización y verificación continuas para que sea una batalla real.
/*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)