
Стратегия основана на торговле цветами полуночи с задержкой на 1 час, и определяет направление торговли на следующий день в 1 час, анализируя цвет полуночи 0 часов утра. Когда полуночь была зеленой, было много, а когда была красной, было пусто.
Основная логика этой стратегии основана на эффекте привлекательности рынка в полночь, то есть цвет 0 часов ночи в полночь предыдущего дня представляет собой общую атмосферу рынка в этот день, которая может быть использована для определения направления рынка после открытия следующего дня.
В частности, стратегия сначала определяет, является ли текущая K-линия нулевой кривой, и если да, то записывает ее закрытую цену выше открытой цены в зеленый цвет, а в противном случае - в красный. На следующей баре, то есть на 1-й K-линии, производится дополнительное прохождение в соответствующем направлении в зависимости от цвета 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)