Адаптивный внутридневной пробой 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-01→2026-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 closeopenShortв тот же логический момент открывает short, еслиcurrentPosition >= 0
Выход из шорта
Отдельного авторского buy to cover-правила в исходнике нет, но по смыслу EasyLanguage short-позиция закрывается при появлении long-сигнала, когда стратегия делает реверс в long.
В текущей TSLab-реализации это собрано явно:
closeShortOnLongзакрывает short по рынкуon closeopenLongв тот же логический момент открывает long, еслиcurrentPosition <= 0
Защитные выходы
Дополнительные защитные выходы в граф сейчас не добавлены.
11. Манименеджмент и размер позиции
В авторском тексте используется фиксированный размер 1 contract.
Текущая серверная реализация сохраняет этот подход:
TradeQty = 1
Отдельный расчет риска на сделку не подключался. Общий проектный стандарт при необходимости описан в файле:
[Расчет риска](C:\Users\TSLab\Desktop\ai-agent\KaufmanStrategies\Стратегии\Расчет риска.md)
12. Используемые индикаторы и параметры
Пользовательские индикаторы из папки Indicators не используются.
Стандартные блоки:
HighLowCloseAverageTrueRangeNewHighestLowestConstGenRelativeCommissionOpenPositionByMarketItemClosePositionByMarketItemAgentCurrentPosition
Формульные блоки:
highRangelowRangenhrnlrlongSignalshortSignalentryLongAllowedentryShortAllowed
Параметры:
period = 10apower = 0.75highthreshold = 0.50lowthreshold = 1.05TradeQty = 1CommissionPct = 0.05MarginPct = 0
13. Диапазоны параметров для оптимизации
После repair-route сервер автоматически добавил optimization mappings для основных числовых параметров.
Практически осмысленно оптимизировать:
periodapowerhighthresholdlowthresholdatr.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 = 1netProfit = -6306.994124999994 BTCnetProfitPct = -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 - основные метрики или текущий блокер, если он остался Важно: - Не ограничивайтесь подготовкой или созданием пустого шаблона. - Не задавайте уточняющих вопросов, если можно разумно продолжать по локальным материалам. - Работайте до полного завершения реализации в текущем ходе.