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

Стратегии

Freqtrade 'Low_BB' от berlinguyinca (Thorsten), точный перенос: только длинные позиции, покупка на свече 1m при close <= 0.98 x нижней полосы Боллинджера(20,2); выходы ONLY через таблицу ROI {0:90%,1:5%,10:4%,15:50%} и фиксированный стоп-лосс -1.5%. Правила запускаются для каждой пары в корзине из 6 альткоинов Binance Spot.

Итог: Бэктестинг

LowBbFreqtradeSpotBasket

Freqtrade 'Low_BB' от berlinguyinca (Thorsten), точный перенос: только длинные позиции, покупка на свече 1m при close <= 0.98 x нижней полосы Боллинджера(20,2); выходы ONLY через таблицу ROI {0:90%,1:5%,10:4%,15:50%} и…

Гипотеза

Точный построчный перенос стратегии Freqtrade GPL-3.0 'Low_BB' от berlinguyinca (автор Thorsten), https://github.com/freqtrade/freqtrade-strategies/blob/f3340ce11f5bdf62f598522e64d1f5638eaa13f5/user_data/strategies/berlinguyinca/Low_BB.py. Автору принадлежит авторство. Заявленные в оригинале результаты не проверены; решающим будет наш бэктест с реальными комиссиями. Источник — настоящая торгуемая стратегия, а не утилита. INDICATORS: populate_indicators сначала вычисляет Bollinger(20, 2) по типичной цене и……Показать большеСвернуть

Точный построчный перенос стратегии Freqtrade GPL-3.0 'Low_BB' от berlinguyinca (автор Thorsten), https://github.com/freqtrade/freqtrade-strategies/blob/f3340ce11f5bdf62f598522e64d1f5638eaa13f5/user_data/strategies/berlinguyinca/Low_BB.py. Автору принадлежит авторство. Заявленные в оригинале результаты не проверены; решающим будет наш бэктест с реальными комиссиями. Источник — настоящая торгуемая стратегия, а не утилита. INDICATORS: populate_indicators сначала вычисляет Bollinger(20, 2) по типичной цене и MACD(12,26,9). Затем оба индикатора OVERWRITTEN или никогда не используются: блок «необходим для графика» заново вычисляет bb_lowerband/bb_middleband/bb_upperband на основе Bollinger(window=20, stds=2) по CLOSE, а MACD нигде не используется для входа или выхода. Поэтому разработчик должен использовать полосу на основе CLOSE, определённую так же, как в qtpylib: mid = скользящее среднее(close, 20), std = скользящее стандартное отклонение pandas(close, 20) с ddof=1 (выборочное стандартное отклонение), lower = mid - 2*std. MACD и полоса по типичной цене — неиспользуемый код; их нельзя реализовывать как сигналы. ENTRY: enter_long = 1, когда close <= 0.98 * bb_lowerband на закрытой свече 1m; других условий нет. Freqtrade исполняет ордера по цене открытия свечи NEXT, поэтому перенос отправляет рыночный ордер на покупку при закрытии сигнальной свечи (эквивалентность с точностью до одной свечи). EXIT SIGNAL: populate_exit_trend выполняет dataframe.loc[(), 'exit_long'] = 1. Проверка на pandas 2.3.3 показала, что эта инструкция создаёт столбец exit_long, но оставляет его полностью заполненным NaN, поэтому в стратегии нет сигнального выхода NO. Это соответствует описанию «продавать, если срабатывает (трейлинг-)стоп-лосс». trailing_stop не задан, значит стоп FIXED фиксированный, а не трейлинг. Позиции закрываются только так: (1) minimal_roi = {"0": 0.9, "1": 0.05, "10": 0.04, "15": 0.5}, ключи — минуты с момента входа. Применяется правило с наибольшим ключом, не превышающим длительность сделки: при длительности от 0 до <1 мин действует +90%, от 1 до <10 мин — +5%, от 10 до <15 мин — +4%, а от 15 мин — +50%, что на практике означает отсутствие ограничения. (2) stoploss = -0.015, фиксированная -1.5% от цены входа, всегда активна. Ограничения по времени и других выходов нет. VENUE/INSTRUMENTS: правила допускают только длинные позиции без кредитного плеча, поэтому их следует применять на BINANCE_SPOT (CASH); он также укладывается в квоту площадки 15% при значении 10.7%. Freqtrade запускает стратегию на списке пар, по одной сделке на пару, поэтому точный эквивалент на платформе независимо применяет те же правила к 6 ликвидным и волатильным альткоинам Binance Spot. Для каждого в каталоге доступна проверенная история за 1m с 2018-2020: DOGE, SOL, AVAX, ADA, XRP, LINK. BTC намеренно исключён. Закрытие свечи 1m 2% ниже нижней полосы на BTC случается редко и почти не даёт сделок, а ряд BTC уже чрезмерно исследован. SIZING: это заменяет stake_amount/max_open_trades в Freqtrade. На каждую сделку по паре выделяется фиксированная доля 1/6 капитала счёта (≈16.7% номинала, максимальная экспозиция на позицию), не более одной открытой позиции на пару, кредитное плечо 1.0. Поэтому стоп -1.5% несёт риск ≈0.25% капитала на сделку. FEES: комиссия тейкера Binance Spot 0.10% с каждой стороны, 0.20% за полный цикл.

Точный перенос: параметры взяты из исходника — BB(20,2) по close, множитель 0.98, ROI {0:0.9,1:0.05,10:0.04,15:0.5}, стоп-лосс -0.015. Используется BINANCE_SPOT, поскольку стратегия допускает только длинные позиции без кредитного плеча. Объём спотовой торговли ниже квоты 15%, а комиссия спот-торговли (0.20% RT) соответствует этой схеме. OKX_SPOT и BYBIT_SPOT добавили бы разнообразие площадок, но в их каталогах 1m есть лишь примерно неделя истории (проверено), поэтому использовать их нельзя. BTC исключён (чрезмерно исследованный и почти не даёт сигналов). Корзина из 6 альткоинов отражает список пар Freqtrade с отдельным расчётом по каждой паре и повышает число сделок выше частоты около 10/год на пару. В плане нет настраиваемых параметров, поскольку точный перенос нужно проверять без изменений.

Реализация

Точная реализация стратегии Freqtrade Low_BB от berlinguyinca (Thorsten). Те же правила независимо применяются к каждому из 6 альткоинов Binance Spot (DOGE, SOL, AVAX, ADA, XRP, LINK). Вход: рыночная покупка после закрытия свечи 1 мин., когда цена закрытия <= 0.98 x нижней полосы Боллинджера (20, 2, выборочное стандартное отклонение) по цене закрытия. Выходы задаются только биржевым брекетом: фиксированный стоп -1.5% и лимитный тейк-профит, цена которого корректируется до уровня minimal_roi с учётом возраста сделки 0:90%, 1:5%, 10:4%, 15:50%. На каждую пару выделяется 1/6 капитала, плечо 1.0, только длинные позиции.

Итерация 3 устраняет ошибку уровня 1.5: «optimization_plan фиксирует кредитное плечо на уровне 1.0». В параметрах отсутствовал фиксированный параметр плана `leverage` (float 1.0). Теперь он добавлен и считывается в self.leverage, как и config.leverage. Он умножает номинал на пару, что ничего не меняет при 1.0. Все остальные фиксированные параметры плана присутствуют и имеют нужные типы (bb_window — int 20, остальные — float). Торговая логика, сигнал, размер позиции и изменения производительности итерации-2 не изменились, поэтому прогнозируемое число сделок осталось прежним.

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

Если полный бэктест завершится по тайм-ауту, прежде чем менять правила, измерь оставшиеся затраты на обработку каждой свечи. Начни с запросов cache.positions_open/orders_open на каждой свече дополнительной пары. Не исключай пары и не меняй таймфрейм: это нарушит точность переноса.

Вычислительный бюджет (L176). Запуск загружает 6 инструментов со свечами 1m примерно за 2,616 дней: около 3.77M свечей на инструмент и около 22.6M всего. Затраты на одну свечу — O(1): скользящая сумма для полосы Боллинджера пересчитывается каждые 500 свечей, переоценка ROI выполняется только при изменении уровня ROI, повторной подгонки или ранжирования на каждой свече нет. В песочнице обработка 30 дней всё равно заняла 290 секунд. Прогноз для базового варианта — около 25,000 секунд, близко к бюджету оптимизации в 36,000 секунд. Затраты растут пропорционально длине периода и не увеличиваются из-за длины истории. Полный бэктест и walk-forward-анализ всё ещё могут превысить лимит времени.

При желании привяжи стоп к avg_px_open на первой свече после исполнения, так же как переоценивается тейк-профит.

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

Песочница охватила 30 дней и закрыла 16 позиций. Средняя доходность составила 0.177% от номинала, ниже минимального порога жизнеспособности спот-стратегии 0.25%; PF 1.14, доля прибыльных сделок — 31%. Моделируемое влияние издержек составило 43% от валового результата, поскольку каждый вход — рыночная покупка на резком падении за 1 минут. Когда возраст сделки достигает 15 минут, целевой уровень ROI составляет 50%, и ордер никогда не исполняется. Поэтому почти каждая сделка старше 15 минут закрывается по стопу -1.5%. Средняя длительность удержания — около 3 часов. Следовательно, результат зависит от доли отскоков, достигающих +4-5% в течение 15 минут. В полном бэктесте проверь доходность каждой сделки после влияния издержек относительно полного цикла 0.20%, а также сравни долю выходов по стопу с долей выходов по ROI.

История итераций

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

Проверка не пройдена (уровень 1.5 — согласованность гипотезы и конфигурации) [класс=hypothesis_mismatch]: - optimization_plan фиксирует кредитное плечо на уровне 1.0

Анализ

Low_BB

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