Пробой первого часа
Смотреть видео
YouTube: https://youtu.be/ufnmTSYuisU
RuTube: https://rutube.ru/video/5bd87aa6ce0b5f9ddc299068d6e59fb3/
TSM 1st Hour Breakout (S)
1. Название стратегии
Русское название: Пробой первого часа
Оригинальное название:
1st Hour Breakout
2. Автор и источник
Автор: Перри Кауфман
Адаптация идеи: M. McNutt,
First Hour Breakout System, Technical Analysis of Stocks & Commodities, July 1994Исходный файл проекта:
TSM 1st Hour Breakout (S)
3. Краткая идея стратегии
Это внутридневная пробойная стратегия. Первый 60-минутный бар торгового дня задает рабочий диапазон. Если цена затем пробивает верхнюю границу диапазона с дополнительным смещением, стратегия открывает лонг. Если цена пробивает нижнюю границу диапазона со смещением, стратегия открывает шорт.
Средний дневной диапазон используется для уровней выхода, чтобы закрывать позицию после существенного хода относительно диапазона первого часа.
4. Используемые данные и таймфрейм
Текущая серверная реализация в TSLab:
источник данных:
BingXSpotинструмент:
BTC-USDTбазовый таймфрейм:
M10ветка первого часа: сжатие в
60минут черезCompressAdvancedдневная ветка: сжатие в
1день черезCompressAdvancedдиапазон проверочного запуска: с
2024-12-18 10:50по2026-04-24 00:00
5. Рассчитываемые индикаторы и ряды
firstHourHigh
Максимум первого 60-минутного бара дня. Рассчитывается на сжатой 60-минутной серии и возвращается в базовую 10-минутную серию через Decompres.
firstHourLow
Минимум первого 60-минутного бара дня. Рассчитывается аналогично firstHourHigh.
dayRange
Дневной диапазон:
HighDaily - LowDaily
avgDayRange
SMA дневного диапазона за 10 дней. Это перенос исходного:
average(high of data3 - low of data3, length)
longEntry
Цена стоп-входа в лонг:
firstHourHigh + offsetPoints
shortEntry
Цена стоп-входа в шорт:
firstHourLow - offsetPoints
longExitLevel
Уровень рыночного выхода из лонга:
firstHourLow + avgDayRange
shortExitLevel
Уровень рыночного выхода из шорта:
firstHourHigh - avgDayRange
6. Правила входа в длинную позицию
Лонг открывается блоком OpenPositionIfGreaterItem.
Условия:
предыдущий
CloseнижеfirstHourHigh;цена пробивает
longEntry;размер позиции:
1.
7. Правила входа в короткую позицию
Шорт открывается блоком OpenPositionIfLessItem.
Условия:
предыдущий
CloseвышеfirstHourLow;цена пробивает
shortEntry;размер позиции:
1.
8. Начальный стоп-лосс
В исходнике отдельный начальный стоп не задан. В текущей TSLab-реализации добавлены защитные стопы как инженерное требование проекта:
для лонга: стоп на
firstHourLow;для шорта: стоп на
firstHourHigh.
9. Сопровождение позиции
Трейлинг-стоп, перенос в безубыток и частичные выходы в исходнике не указаны и в текущей реализации не добавлялись.
10. Правила выхода
Выход из лонга
Лонг закрывается рыночным блоком ClosePositionByMarketItem, когда:
High >= longExitLevel
Выход из шорта
Шорт закрывается рыночным блоком ClosePositionByMarketItem, когда:
Low <= shortExitLevel
Защитные выходы
Дополнительно присутствуют защитные ClosePositionByStopItem:
protectLongStop;protectShortStop.
11. Манименеджмент и размер позиции
Авторский манименеджмент в исходнике отсутствует, кроме 1 contract и запрета повторных входов в одном направлении. В текущем графе используется фиксированный размер 1.
12. Используемые индикаторы и параметры
Пользовательские индикаторы из папки Indicators не используются.
Стандартные блоки:
CompressAdvancedDecompresHighLowCloseSMAConstGenOpenPositionIfGreaterItemOpenPositionIfLessItemClosePositionByMarketItemClosePositionByStopItemRelativeCommission
Параметры:
offsetPoints = 20avgDayRangeDaily.Period = 10commission.CommissionPct = 0.05
13. Диапазоны параметров для оптимизации
В граф добавлены диапазоны оптимизации:
offsetPoints:1..200, шаг1avgDayRangeDaily.Period:3..30, шаг1CommissionPct:0..0.2, шаг0.01
14. Неоднозначности и места для проверки
В исходнике используется
Sess1FirstBarTimeиSess1EndTime; в текущей реализации первый час пока трактуется как первый 60-минутный бар дня, а конец торгового окна вынесен в один параметрSessionEndTimeв форматеЧЧММСС.SessionEndTimeиспользуется как практический аналогSess1EndTime: после этого времени новые входы запрещаются, а открытые позиции закрываются по рынку.Для определения первого часа на 60-минутной ветке используется счетчик баров
i % 24 == 0; это предполагает корректную дневную привязку сжатых 60-минутных баров.Исходный выход из лонга использует
Sess1FirstBarLow[1]. В текущей реализации применен текущий декомпрессированныйfirstHourLow; это инженерное решение нужно учитывать при сравнении с исходной платформой.Защитные стопы на противоположной границе первого часа добавлены как проектное требование, а не как прямое авторское правило исходника.
Проверка текущей реализации
Серверный скрипт:
AI/KaufmanStrategies/TSM 1st Hour Breakout (S)
Проверочный цикл:
validate: успешноbuild: успешноload: успешноrun: успешноauthoring-quality: без блокирующих проблем, осталась только необязательнаяMissingControlPane
Метрики последнего запуска:
Инструмент текущего запуска:
RIZ5, поставщикКешированныеданные1SessionEndTime = 184000netProfit = -3491.375 рубnetProfitPct = -3.26%allTrades = 125profitFactor = 0.9231winTradesPct = 32.80%maxDrawdownPct = -6.83%fixedRecoveryFactor = -0.4782
Стратегия структурно работает и исполняется, но по просадке её ещё нельзя считать доведённой до финального торгового качества.
Загрузка скрипта в программу
Способ 1. Загрузка с сервера
Откройте Лаб → Скрипты.
На боковой панели нажмите Загрузить скрипт с сервера.
В дереве папок раскройте Академия TSLab → Примеры скриптов Kaufman. Выберите скрипт Пробой первого часа и нажмите Download.

Способ 2. Загрузка из файла
Скачайте файл скрипта:
Откройте Лаб → Скрипты.
На боковой панели нажмите Загрузить из файла и выберите скачанный файл.
Скрипт появится в списке окна Скрипты.