Адаптивный внутридневной пробой TSM

1. Название стратегии

  • Русское название: Адаптивный внутридневной пробой TSM

  • Оригинальное название: TSM Adaptive Intraday Breakout (S)

2. Автор и источник

  • Автор идеи: Dennis Meyers

  • Источник: Range Roving, Active Trade, March 2003

  • Автор адаптации/публикации в наборе TSM: Perry J. Kaufman

  • Исходный файл проекта: TSM Adaptive Intraday Breakout (S).txt

3. Краткая идея стратегии

Стратегия измеряет вынос цены вверх и вниз относительно окна period, нормализует эти выносы на волатильность через ATR(period) и степенную поправку period^apower, затем сравнивает экстремумы этих нормализованных рядов с порогами. При сильном верхнем выносе возникает long-сигнал, при слабом верхнем и достаточно сильном нижнем выносе возникает short-сигнал.

4. Используемые данные и таймфрейм

Текущая серверная реализация в TSLab:

  • источник данных: BingXSpot

  • инструмент: BTC-USDT

  • базовый таймфрейм: M10

  • рабочее проверочное окно для запуска: 2025-01-012026-01-01

Источник и таймфрейм в исходнике явно не заданы, поэтому в проектной реализации был выбран разумный внутридневной дефолт для текущего workspace.

5. Рассчитываемые индикаторы и ряды

highRange

high - low[i-period]

Показывает силу текущего выноса вверх относительно минимума period баров назад.

lowRange

low - high[i-period]

Показывает силу текущего выноса вниз относительно максимума period баров назад.

atr

ATR(period) стандартным блоком AverageTrueRangeNew.

nhr

highRange / Math.Pow(period, apower) / atr

Нормализованный верхний диапазон.

nlr

lowRange / Math.Pow(period, apower) / atr

Нормализованный нижний диапазон.

hrmax

Highest(nhr, period)

Максимум нормализованного верхнего диапазона за окно period.

lrmin

Lowest(nlr, period)

Минимум нормализованного нижнего диапазона за окно period.

longSignal

(hrmax > highthreshold) && (lrmin < lowthreshold)

shortSignal

(hrmax < highthreshold) && (lrmin > lowthreshold)

6. Правила входа в длинную позицию

Лонг открывается блоком OpenPositionByMarketItem, когда:

longSignal = true && currentPosition <= 0

Это соответствует авторскому buy 1 contract this bar on close:

  • размер позиции: TradeQty = 1

  • исполнение рыночного блока: on close

  • повторный вход в уже открытую long-позицию запрещен

  • реверс из short в long разрешен

7. Правила входа в короткую позицию

Шорт открывается блоком OpenPositionByMarketItem с параметром Long = false, когда:

shortSignal = true && currentPosition >= 0

Это соответствует авторскому sell short 1 contract this bar on close:

  • размер позиции: TradeQty = 1

  • исполнение рыночного блока: on close

  • повторный вход в уже открытую short-позицию запрещен

  • реверс из long в short разрешен

8. Начальный стоп-лосс

Авторский начальный стоп в исходнике не задан.

В текущей TSLab-реализации отдельный инженерный стоп убран. Граф не содержит ClosePositionByStopItem.

9. Сопровождение позиции

Трейлинг, перевод в безубыток и частичный выход не реализованы, потому что в исходном тексте они отсутствуют.

Позиция сопровождается:

  • только логикой реверса по противоположному сигналу, без отдельного авторского или инженерного стоп-блока.

10. Правила выхода

Выход из лонга

Отдельного авторского sell-правила в исходнике нет, но по смыслу EasyLanguage long-позиция закрывается при появлении short-сигнала, когда стратегия делает реверс в short.

В текущей TSLab-реализации это собрано явно:

  • closeLongOnShort закрывает long по рынку on close

  • openShort в тот же логический момент открывает short, если currentPosition >= 0

Выход из шорта

Отдельного авторского buy to cover-правила в исходнике нет, но по смыслу EasyLanguage short-позиция закрывается при появлении long-сигнала, когда стратегия делает реверс в long.

В текущей TSLab-реализации это собрано явно:

  • closeShortOnLong закрывает short по рынку on close

  • openLong в тот же логический момент открывает long, если currentPosition <= 0

Защитные выходы

Дополнительные защитные выходы в граф сейчас не добавлены.

11. Манименеджмент и размер позиции

В авторском тексте используется фиксированный размер 1 contract.

Текущая серверная реализация сохраняет этот подход:

  • TradeQty = 1

Отдельный расчет риска на сделку не подключался. Общий проектный стандарт при необходимости описан в файле:

[Расчет риска](C:\Users\TSLab\Desktop\ai-agent\KaufmanStrategies\Стратегии\Расчет риска.md)

12. Используемые индикаторы и параметры

Пользовательские индикаторы из папки Indicators не используются.

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

  • High

  • Low

  • Close

  • AverageTrueRangeNew

  • Highest

  • Lowest

  • ConstGen

  • RelativeCommission

  • OpenPositionByMarketItem

  • ClosePositionByMarketItem

  • AgentCurrentPosition

Формульные блоки:

  • highRange

  • lowRange

  • nhr

  • nlr

  • longSignal

  • shortSignal

  • entryLongAllowed

  • entryShortAllowed

Параметры:

  • period = 10

  • apower = 0.75

  • highthreshold = 0.50

  • lowthreshold = 1.05

  • TradeQty = 1

  • CommissionPct = 0.05

  • MarginPct = 0

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

После repair-route сервер автоматически добавил optimization mappings для основных числовых параметров.

Практически осмысленно оптимизировать:

  • period

  • apower

  • highthreshold

  • lowthreshold

  • atr.Period

Точные рабочие диапазоны еще требуют отдельной проверки на готовом стабильном прогоне.

14. Неоднозначности и места для проверки

  • Суффикс (S) не совпадает с тем, что исходник содержит и long, и short.

  • Условие lrmin > lowthreshold для short-сигнала выглядит подозрительно и может давать очень редкие сделки.

  • Исходный текст не задает явных авторских стопов и правил сопровождения, а текущая серверная версия также не содержит отдельного защитного стоп-блока.

  • В текущей реализации выбран источник BingXSpot / BTC-USDT / M10, потому что исходник не задает рынок и таймфрейм.

  • После сверки с исходником и возврата реверсной логики без инженерного стопа run завершается штатно. На текущем тестовом окне short-входы остаются крайне редкими, что похоже связано уже с самой авторской формулой сигнала, а не с ошибкой переноса.

Проверка текущей реализации

Серверный скрипт:

AI/KaufmanStrategies/TSM Adaptive Intraday Breakout (S)

Подтверждено:

  • validate: успешно

  • build: успешно

  • load: успешно

  • run: успешно

  • authoring-quality: requiresRepair = false

  • инженерные стоп-блоки: удалены

  • рыночные блоки: используются в режиме on close

Ключевые метрики последнего прогона:

  • allTrades = 1

  • netProfit = -6306.994124999994 BTC

  • netProfitPct = -6.735345963444768%

  • maxDrawdownPct = -20.76713400670481%

  • winTradesPct = 0%

Итог

Стратегия полностью собрана как серверный граф в TSLab без новых кастомных индикаторов. Текущая версия уже не содержит инженерного стопа и проходит полный цикл validate/build/load/run, но по фактическому поведению требует дальнейшей доработки самих авторских правил выхода: сейчас на тестовом окне получается одна длинная сделка с удержанием почти на весь период.

Скрипт стратегии:

Файл Разбор стратегии

Промт:

Прочитайте файл: AGENT.md

Если кодировка где-то не читается, используйте сразу UTF8

Нужно полностью реализовать в TSLab стратегию.

Исходник стратегии здесь: C:\Users\TSLab\Desktop\ai-agent\KaufmanStrategies\Исходники\TSM Adaptive Intraday Breakout (S).txt Подготовка. Сначала нужно создать папку для стратегии. Подготовить материалы md в папке стратегии. Материалы должны содержать: 1. Файл "Названиестратегиивисходнике_разбор.md"

Этот файл должен содержать: - Что это за стратегия. Исходный код - Разбор по шагам: как считаются индикаторы, уровни и т.д.

Вход и правила, выходы из позиций, торговые команды. Что понятно уверенно.

Что остается не до конца очевидным. Торговый смысл формул и т.д. Итог. 2. Заметки по реализации стратегии в визуальном редакторе.

Файл содержит фиксацию выводов разбора стратегии.

Базовые принципы. Главная идея реализации.

Что будет делаться стандартными блоками. Что будет делаться в блоках формула. Какие правила для формул будут применяться. Какие индикаторы будут использованы из папки indicators. Какие индикаторы(handlers) будут сделаны впервые, перечисление с кратким описанием Входы индикатора. Что считает. Что отдает индикатор. Что не нужно выносить в кастомный индикатор. Принцип проектирования этой стратегии. При переносе этой стратегии в TSLab нужно сначала выделить: перечисление.

Принцип минимизации тяжелых расчетных блоков Принцип максимальной свободы для пользователя Принцип единообразия Практическое правило для нейросети и Итоговый текущий набор обязательных индикаторов. 3. Финальное описание стратегии.md Полное описание стратегии, которая получилась. Его можно написать, только после создания стратегии полностью. Есть скрипт в визуальном редакторе и человек подтвердил его работоспособность. (подсмотрите похожий файл в соседней стратегии, как правильно его заполнить) Файл создается после всех работ и является конечным результатом. После подготовки переходите к реализации. Реализация. Что нужно сделать:

1. Прочитать обязательные локальные инструкции и материалы по этой стратегии, которые вы напишите.

2. Если серверного скрипта еще нет, в папке AI/KaufmanStrategies создать скрипт с точным именем, как название в исходнике.

3. Не останавливаться на создании пустого скрипта.

4. Полностью собрать рабочий граф стратегии через Web API внутри этого exact-артефакта.

5. Не создавать лишние новые индикаторы, если можно обойтись стандартными блоками и формулами.

6. После каждой существенной мутации продолжать работу до конца, а не останавливаться на промежуточном результате.

7. Обязательно довести задачу до этапов: - настройка источника инструмента - сборка логики входов/выходов - комиссия - защитные выходы - визуализация - validate - build - load - run - metrics-summary

8. Если возникают ошибки API, не останавливайтесь на объяснении, а исправляйте граф и продолжайте в том же артефакте.

9. Финальным результатом должен быть не BlankGraph, а полностью созданный и проверенный серверный скрипт в TSLab.

10. В финальном ответе кратко сообщите: - что именно создано - где создано - прошли ли validate/build/load/run - основные метрики или текущий блокер, если он остался Важно: - Не ограничивайтесь подготовкой или созданием пустого шаблона. - Не задавайте уточняющих вопросов, если можно разумно продолжать по локальным материалам. - Работайте до полного завершения реализации в текущем ходе.