Стратегии
BTC-ETH Дневная ротация по относительной силе, только лонг, с фильтром тренда
Итог: Отменено
BtcTakerAggressionFlowReversalZScore1H
BTC-ETH Дневная ротация по относительной силе, только лонг, с фильтром тренда
Гипотеза
Реализация
Возврат к среднему лонг-шорт по барам 1H бессрочного контракта BTCUSDT.BINANCE USD-M, основанный только на дополнительном потоке taker_ratio. Для каждого бара берётся последнее наблюдение покупки/продажи тейкеров на момент времени бара или раньше, преобразуется в логарифмический дисбаланс покупок и продаж, а затем вычисляется z-оценка сглаженного значения за 4 часов относительно его скользящего распределения примерно за 30 дней. z, равная или выше +entry_z, означает, что агрессивные покупки иссякли, поэтому стратегия играет против них SHORT; z, равная или ниже -entry_z, означает, что панические продажи иссякли, поэтому стратегия открывает позицию LONG. Выход происходит, когда дисбаланс возвращается в диапазон +/- exit_z, срабатывает стоп-лосс 3%, тейк-профит 4% или стоп по времени через 24 баров. Размер позиции составляет 15% капитала, при этом риск на капитал ограничен 1.5% относительно расстояния до стопа. Без пригодных данных о тейкерах портфель остаётся без позиции — запасного преимущества, основанного только на цене, нет.
Результаты верификации
История итераций
Проверка не пройдена (уровень 2 — синтетические сценарии): Использованные параметры: ['z_min', 'exit_z', 'tp_pct', 'entry_z', 'risk_pct', 'stop_pct', 'smooth_bars', 'window_bars', 'min_notional', 'notional_pct', 'max_hold_bars', 'taker_tolerance_s'] Проверь, что __init__ задаёт все атрибуты через self.parameters.get(). - steady_uptrend: TypeError: FactoryStrategy._bar_ts() принимает 1 позиционный аргумент, но передано 2 (время бара: 1735689840000) - steady_downtrend: TypeError: FactoryStrategy._bar_ts() принимает 1 позиционный аргумент, но передано 2 (время бара: 1735689840000) - flat_ranging: TypeError: FactoryStrategy._bar_ts() принимает 1 позиционный аргумент, но передано 2 (время бара: 1735689840000) - volatility_spike: TypeError: FactoryStrategy._bar_ts() принимает 1 позиционный аргумент, но передано 2 (время бара: 1735689840000) - zero_volume: TypeError: FactoryStrategy._bar_ts() принимает 1 позиционный аргумент, но передано 2 (время бара: 1735689840000) - price_gap: TypeError: FactoryStrategy._bar_ts() принимает 1 позиционный аргумент, но передано 2 (время бара: 1735689840000)
Проверка не пройдена (уровень 1 — статический анализ): - Использование будущих данных: дополнительное наблюдение выбирается по расстоянию ABSOLUTE до времени бара, из-за чего возвращается наблюдение NEXT, когда оно ближе предыдущего. Используй self.supp_as_of(key) (последнее значение на момент бара или раньше) либо явный фильтр `ts <= bar.ts_init` — никогда не используй abs(). (строка None)
Проверка не пройдена (уровень 3 — бэктест в изолированной среде): сделок нет Использованный тип бара: BTCUSDT.BINANCE-1-HOUR-LAST-EXTERNAL, обработано баров: 56856 Диагностика: should_enter() возвращала сторону 0 раз за 56852 проверенных баров -> твоя логика ENTRY CONDITION ни разу не сработала. Ослабь условия входа или пороговые значения. Убедись, что стратегия совершает сделки на предоставленных данных и параметрах.
Проверка не пройдена (leverage_set_but_unused): конфигурация задаёт плечо=3.0, но стратегия не использует плечо при расчёте размера позиции. Рассчитывай размер позиции с его учётом — номинал = капитал * доля * плечо / цена (читай self.config.leverage) — или установи плечо=1.0. В текущем виде плечо не влияет на результат, и бэктест идентичен 1x.
Причина отказа
Stratmill — это инструмент для исследований и бумажной торговли, а не финансовая консультация или брокер. Результаты бэктестов и бумажной торговли являются гипотетическими. Торговля сопряжена с риском убытков.