Перейти к содержимому
Все стратегии

Стратегии

ETH Spot: лонговая лимитная сетка со скользящим якорем, фиксацией прибыли +2% на каждый лот и жёстким стопом по нижней границе сетки (переработка FMZ «Python Simple Grid»; ETHUSDT.BINANCE_SPOT, исполнение на свечах 1H, без плеча)

Итог: Отменено

EthSpotTrailingAnchorLotGrid1H

Сводка по итогам

Стратегия переработала сетку с фиксированной лестницей FMZ в спотовую сетку ETH с привязанным к моменту времени якорем, геометрическим шагом 2% (примерно 10x от полного кругового спотового трейда 0.20%), фиксацией прибыли по каждому лоту и стопом по нижней границе, ограничивающим убытки при пробое. До конца проверки она не дошла. Во всех 3 итерациях бэктест песочницы Layer-3 превышал лимит в 300 с на окне длиной 833 дней и 1 часов. В заметках разработчика по итерации-3 указано, что стоимость обработки каждого бара уже была O(n_nodes); тайм-ауты в тот же день связывались с поиском по ParquetDataCatalog в раннере на сильно загруженном хосте. Запуск прекратили; метрик бэктеста нет, дальнейшие этапы не проводились.

Гипотеза

Здесь сетка автора изложена с нуля; это не точный перенос (L167). Скрипт FMZ строит абсолютную лестницу FIXED (BTC 5000-8000, шаг $20). Он размещает лимитный BUY на узле непосредственно ниже рынка. Когда эта покупка исполняется, он размещает лимитный SELL на узле + $50; после исполнения продажи узел снова свободен для постановки ордера. Стопа нет, ордера никогда не отменяются. Три элемента исходника нельзя использовать как написано. (1) Фиксированный диапазон 5000-8000 выбран задним числом, то есть с……Показать большеСвернуть

Здесь сетка автора изложена с нуля; это не точный перенос (L167). Скрипт FMZ строит абсолютную лестницу FIXED (BTC 5000-8000, шаг $20). Он размещает лимитный BUY на узле непосредственно ниже рынка. Когда эта покупка исполняется, он размещает лимитный SELL на узле + $50; после исполнения продажи узел снова свободен для постановки ордера. Стопа нет, ордера никогда не отменяются. Три элемента исходника нельзя использовать как написано. (1) Фиксированный диапазон 5000-8000 выбран задним числом, то есть с заглядыванием в будущее. (2) Шаг $20/$50 (~0.25%/0.7%) меньше или близок к текущим издержкам полного кругового спотового трейда 0.20%. (3) Без стопа при пробое вниз книга бесконечно удерживает всю лестницу с убытком. Новая версия сохраняет механизм (независимые лоты на каждом узле, каждый со своей фиксацией прибыли; повторная постановка после закрытия) и исправляет все три недостатка. Лестница привязана POINT-IN-TIME к цене закрытия в момент привязки. Шаг геометрический, 2.0%, что составляет 10x от полного кругового трейда. Жёсткий стоп по нижней границе закрывает книгу при пробое. Выбор площадки: лонг без плеча подходит для BINANCE_SPOT (10.8% против целевого значения >=15%). На споте также нет расходов на финансирование позиции, которые при лонговой сетке на бессрочных фьючерсах составили бы ~10%/год. У ETH самая ликвидная спотовая книга среди площадок без BTC (L136), а нижняя граница просадки на споте — ограничивающее условие риска. Механизм в одном предложении, без инструмента и таймфрейма: «держать независимые лимитные лоты фиксированного размера на геометрических уровнях ниже скользящего якоря и закрывать каждый лот по собственной фиксированной цели прибыли на один шаг выше цены исполнения». Это NOT заброшенный ребалансировщик, поддерживающий позицию фиксированной стоимости DOGE. В той схеме (a) вход происходил только после просадки >=35%, (b) единая объединённая позиция возвращалась к фиксированной сумме в долларах, и (c) не было стопа по нижней границе. Здесь сетка всегда активна рядом с рынком, каждый лот закрывается отдельно, а убытки при пробое ограничены.

Итерация 3 устраняет сбой Layer-3 sandbox_timeout только за счёт производительности; торговая логика идентична v2. Работа на каждом баре уже имела сложность O(n_nodes<=10), без буферов истории, дополнительных данных и с поиском ордеров O(1). В тот же день завершились тайм-аутом и другие стратегии O(1) (LtcMomentumMeanReversionRegression_v3, ConnorsRsi2IndexEtfPullbackUseq_v3); профилирование этих запусков показало, что время уходило на поиск по ParquetDataCatalog в раннере среди примерно 126 тыс. каталогов баров. Средняя нагрузка хоста — ~33. Путь обработки каждого бара всё же сокращён: имена атрибутов вычисляются заранее, без f-строк для каждого поля, а собственный капитал счёта считывается только когда нужно активировать ожидающий узел. Согласно уроку L155(c), здесь исключена стоимость обработки каждого бара, растущая вместе с периодом. Поэтому повторный тайм-аут будет указывать на проблему песочницы или каталога, а не на дефект кода.

verification_loop: sandbox_timeout: проверка не пройдена (Layer 3 — бэктест в песочнице): дымовой тест превысил лимит в 300 с по реальному времени на окне примерно в 20000 баров (833 дней, ETHUSDT.BINANCE_SPOT-1-HOUR-LAST-EXTERNAL). Почти всегда это означает, что работа на каждом баре растёт вместе с историей — например, полностью сканируется ряд финансирования или дополнительных данных либо внутри calculate_signal()/on_bar() на каждом баре заново строится список и вызывается min()/sorted(). Заранее вычисли отсортированные массивы временных меток ONCE в __init__ и используй bisect либо кэшируй поиск по временной метке: тогда сложность обработки каждого бара будет O(log n), а не O(n).

Реализация

Только длинная ETH спотовая геометрическая лимитная сетка на барах 1H. Опорная точка — цена закрытия в момент привязки. Она смещается вверх, только пока позиции нет, и не меняется, пока удерживаются лоты. Узлы k=1..5 размещают GTC лимитных ордеров BUY на уровнях anchor*(1-2%)^k, каждый на 18% капитала. Для каждого исполненного лота выставляется отдельный лимитный ордер SELL на уровне fill*(1+2%). Узел активируется снова после исполнения этого ордера на продажу. Если бар закрывается ниже нижней границы сетки (последний узел минус один шаг), стратегия отменяет все ордера, продаёт весь актив по рынку и приостанавливается на 24 ч перед привязкой новой опорной точки.

Результаты верификации

sandbox_timeout: проверка не пройдена (Layer 3 — бэктест в песочнице): дымовой тест превысил лимит в 300 с по реальному времени на окне примерно в 20000 баров (833 дней, ETHUSDT.BINANCE_SPOT-1-HOUR-LAST-EXTERNAL). Почти всегда это означает, что работа на каждом баре растёт вместе с историей — например, полностью сканируется ряд финансирования или дополнительных данных либо внутри calculate_signal()/on_bar() на каждом баре заново строится список и вызывается min()/sorted(). Заранее вычисли отсортированные массивы временных меток ONCE в __init__ и используй bisect либо кэшируй поиск по временной метке: тогда сложность обработки каждого бара будет O(log n), а не O(n).

Сводка по итогам

Сокращение кода стратегии на каждом баре не устранит тайм-аут песочницы, если его вероятная причина находится вне этого кода (в заметках по итерации-3 причиной назван поиск по каталогу в раннере на перегруженном хосте). Прежде чем тратить итерации на изменения кода, следует подтвердить, что тайм-аут вызван инфраструктурой, и передать проблему на эскалацию.

После 3 итераций от стратегии отказались на этапе проверки: бэктест в песочнице Layer-3 превысил лимит реального времени в 300 с для окна длиной ~20,000 свечей (833 дней) ETHUSDT.BINANCE_SPOT 1 часов. До анализа результатов бэктеста, проверки аналитиком и оценки рисков дело не дошло.

Лонговая спотовая лимитная сетка без плеча на ETHUSDT, BINANCE_SPOT (разрешение исполнения 1H): независимые лимитные лоты на покупку фиксированного размера на геометрических шагах 2% ниже привязанного к моменту времени скользящего якоря; каждый закрывается собственной целью прибыли в +1 шага. Жёсткий стоп по нижней границе сетки ликвидирует книгу при пробое. Это переработка FMZ «Python Simple Grid» без выбранного задним числом диапазона, шага ниже комиссий и отсутствующего стопа.

Данных о доходности нет: отчёт о бэктесте пуст, отчёта об оптимизации нет, поэтому стратегия не выдала ни доходность, ни коэффициент Шарпа, ни число сделок.

Stratmill — это инструмент для исследований и бумажной торговли, а не финансовая консультация или брокер. Результаты бэктестов и бумажной торговли являются гипотетическими. Торговля сопряжена с риском убытков.