Пробой первого часа

Смотреть видео

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 не используются.

Стандартные блоки:

  • CompressAdvanced

  • Decompres

  • High

  • Low

  • Close

  • SMA

  • ConstGen

  • OpenPositionIfGreaterItem

  • OpenPositionIfLessItem

  • ClosePositionByMarketItem

  • ClosePositionByStopItem

  • RelativeCommission

Параметры:

  • offsetPoints = 20

  • avgDayRangeDaily.Period = 10

  • commission.CommissionPct = 0.05

13. Диапазоны параметров для оптимизации

В граф добавлены диапазоны оптимизации:

  • offsetPoints: 1..200, шаг 1

  • avgDayRangeDaily.Period: 3..30, шаг 1

  • CommissionPct: 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, поставщик Кешированныеданные1

  • SessionEndTime = 184000

  • netProfit = -3491.375 руб

  • netProfitPct = -3.26%

  • allTrades = 125

  • profitFactor = 0.9231

  • winTradesPct = 32.80%

  • maxDrawdownPct = -6.83%

  • fixedRecoveryFactor = -0.4782

Стратегия структурно работает и исполняется, но по просадке её ещё нельзя считать доведённой до финального торгового качества.

Загрузка скрипта в программу

Способ 1. Загрузка с сервера

  1. Откройте ЛабСкрипты.

  2. На боковой панели нажмите Загрузить скрипт с сервера.

  3. В дереве папок раскройте Академия TSLabПримеры скриптов Kaufman. Выберите скрипт Пробой первого часа и нажмите Download.

Способ 2. Загрузка из файла

  1. Скачайте файл скрипта:

  2. Откройте ЛабСкрипты.

  3. На боковой панели нажмите Загрузить из файла и выберите скачанный файл.

Скрипт появится в списке окна Скрипты.