Полное руководство по Freqtrade: от установки до алгоритмической торговли

Этот курс охватывает все аспекты работы с криптоторговым ботом Freqtrade, включая создание стратегий на Python и их оптимизацию. Вы научитесь настраивать бота, проводить глубокий бэктестинг и безопасно запускать автоматическую торговлю.

1. Архитектура Freqtrade, установка окружения и базовая конфигурация бота

Архитектура Freqtrade, установка окружения и базовая конфигурация бота

Добро пожаловать в курс «Полное руководство по Freqtrade». Это первая статья, в которой мы заложим фундамент для вашего будущего алгоритмического трейдинга. Прежде чем писать сложные стратегии и анализировать графики, необходимо понять, как устроен инструмент, с которым мы будем работать, и правильно его настроить.

Freqtrade — это бот для торговли криптовалютами с открытым исходным кодом, написанный на языке Python. Он позволяет автоматизировать покупку и продажу активов на основе технических индикаторов, проводить тестирование на исторических данных (бэктестинг) и оптимизировать параметры стратегий.

Архитектура Freqtrade

Понимание того, как Freqtrade обрабатывает данные и принимает решения, критически важно для написания эффективных стратегий. Бот работает не хаотично, а циклично, следуя строгой логике.

!Упрощенная схема работы Freqtrade: от получения данных с биржи до исполнения ордера.

Основные компоненты системы

  • Exchange (Биржа): Внешняя среда, где происходят торги (Binance, Kraken, OKX и другие). Freqtrade общается с биржей через API, используя библиотеку ccxt.
  • Data Provider (Поставщик данных): Модуль, отвечающий за скачивание свечей (OHLCV — Open, High, Low, Close, Volume) и стакана ордеров.
  • Strategy (Стратегия): «Мозг» бота. Здесь вы описываете логику: какие индикаторы использовать и при каких условиях входить или выходить из сделки.
  • Persistence (Хранение данных): Freqtrade использует базу данных (обычно SQLite) для сохранения информации о текущих сделках и истории операций. Это позволяет боту восстановить состояние после перезагрузки.
  • Жизненный цикл итерации

    Бот работает в бесконечном цикле. Каждая итерация (или «тик») состоит из следующих шагов:

  • Fetch: Загрузка свежих данных с биржи для всех пар из вашего «белого списка» (Whitelist).
  • Calculate: Расчет индикаторов (RSI, MACD, Bollinger Bands и т.д.) на основе полученных данных внутри стратегии.
  • Analyze: Проверка условий для входа (Buy) или выхода (Sell).
  • Act: Если условия выполнены, бот отправляет ордер на биржу и обновляет базу данных.
  • Sleep: Пауза перед следующей итерацией (обычно несколько секунд).
  • Установка окружения

    Для стабильной работы бота рекомендуется использовать Docker. Это позволяет изолировать окружение бота от вашей основной операционной системы и избежать конфликтов версий библиотек Python. Мы будем рассматривать установку на примере Linux (Ubuntu) или WSL (Windows Subsystem for Linux), так как это стандарт де-факто для серверного софта.

    Шаг 1: Подготовка системы

    Убедитесь, что у вас установлены git, docker и docker compose. Если вы используете Windows, установите Docker Desktop.

    Шаг 2: Загрузка Freqtrade

    Создайте директорию для бота и скачайте конфигурационные файлы. Мы не будем клонировать весь репозиторий исходного кода, а используем Docker-образ.

    Создайте папку проекта:

    Загрузите официальный файл docker-compose.yml:

    Шаг 3: Инициализация конфигурации

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

    В процессе выполнения вас попросят ответить на несколько вопросов: * Do you want to enable Dry-run? — Отвечайте Yes (y). Это режим симуляции торговли без реальных денег. * Please insert your stake currency — Обычно выбирают USDT. * Please insert your stake amount — Можно оставить unlimited или ввести фиксированную сумму. * Exchange — Выберите биржу, например binance.

    После завершения у вас появится папка user_data, содержащая конфигурацию и пример стратегии.

    Базовая конфигурация бота

    Файл user_data/config.json — это пульт управления вашим ботом. Давайте разберем его ключевые секции.

    Режимы торговли: Dry-run vs Live

    Один из самых важных параметров — dry_run.

    * Если dry_run: true, бот торгует «фантиками». Он видит реальные цены, но не отправляет настоящие ордера на биржу. Баланс берется из параметра dry_run_wallet. * Если dry_run: false, бот торгует реальными средствами. Для этого потребуются API ключи.

    > Никогда не запускайте непроверенную стратегию сразу на реальном счете (Live). Всегда начинайте с Dry-run.

    Управление капиталом (Stake)

    Параметры, определяющие размер позиции, находятся здесь:

    Если вы установили stake_amount в значение unlimited, бот будет автоматически рассчитывать размер ставки, деля доступный капитал на количество разрешенных сделок. Это можно выразить формулой:

    Где: * — размер ставки на одну сделку (Stake Amount). * — общий доступный капитал в кошельке (Total Capital). * — максимальное количество открытых сделок (max_open_trades).

    Например, если у вас 1000 USDT и разрешено 5 сделок, бот будет входить в каждую сделку на 200 USDT.

    Выбор торговых пар (Exchange & Pairlist)

    В секции exchange вы указываете биржу и (при необходимости) API ключи.

    Секция pairlists определяет, какими монетами будет торговать бот. Самый простой вариант — статический список:

    В будущем мы изучим VolumePairList, который позволяет боту самому выбирать монеты с самым высоким объемом торгов.

    Первый запуск

    Когда конфигурация готова, можно запускать бота. Убедитесь, что вы находитесь в папке с файлом docker-compose.yml.

    Запуск в фоновом режиме:

    Просмотр логов (журнала событий):

    Если вы видите сообщения вроде Freqtrade is online и Searching for USDT pairs to buy, поздравляю — ваш бот работает!

    Заключение

    Мы разобрали архитектуру Freqtrade, установили его через Docker и настроили базовую конфигурацию. Сейчас ваш бот работает в режиме симуляции (Dry-run) со стандартной стратегией. В следующей статье мы погрузимся в мир данных: узнаем, как скачивать исторические данные и зачем они нужны для создания прибыльных стратегий.

    2. Разработка торговых стратегий: индикаторы, логика сигналов и работа с Pandas

    Разработка торговых стратегий: индикаторы, логика сигналов и работа с Pandas

    В предыдущей статье мы успешно установили Freqtrade и запустили его в режиме симуляции. Теперь у нас есть работающий двигатель, но ему не хватает навигатора. В этой статье мы займемся самым интересным — созданием «мозга» для нашего бота. Мы разберем, как устроена стратегия изнутри, как использовать библиотеку Pandas для обработки данных и как превратить математические формулы в торговые сигналы.

    Анатомия стратегии Freqtrade

    В Freqtrade стратегия — это не просто набор правил, а класс на языке Python, который наследуется от базового интерфейса IStrategy. Этот файл находится в папке user_data/strategies/. Бот ожидает, что в этом классе будут реализованы определенные методы, которые он вызывает в строгой последовательности.

    !Структура класса стратегии и поток данных между методами.

    Три кита стратегии

    Чтобы бот начал торговать, нам нужно определить три ключевых метода:

  • populate_indicators: Здесь мы берем «сырые» данные с биржи (цену открытия, закрытия, объемы) и рассчитываем технические индикаторы (RSI, MACD, скользящие средние).
  • populate_entry_trend: В этом методе мы описываем условия, при которых бот должен войти в сделку (открыть позицию).
  • populate_exit_trend: Здесь задаются условия для выхода из сделки (закрытия позиции).
  • Работа с данными: Введение в Pandas

    Freqtrade использует библиотеку Pandas для хранения и обработки рыночных данных. Если вы никогда не работали с ней, представьте себе Excel, но без графического интерфейса и с возможностями программирования.

    Данные в стратегии передаются в виде объекта DataFrame (датафрейм). Это таблица, где:

    * Строки — это временные метки (свечи). Каждая строка соответствует определенному времени (например, 12:00, 12:05, 12:10). * Колонки — это параметры свечи: date (время), open (открытие), high (максимум), low (минимум), close (закрытие), volume (объем).

    Когда мы рассчитываем индикаторы, мы просто добавляем новые колонки в эту таблицу.

    Шаг 1: Расчет индикаторов (populate_indicators)

    Давайте рассмотрим простейший пример. Мы хотим добавить в нашу стратегию простую скользящую среднюю (SMA). С математической точки зрения, SMA — это среднее арифметическое цен закрытия за определенный период.

    Формула простой скользящей средней выглядит так:

    Где: * — значение простой скользящей средней. * — период усреднения (количество свечей). * — сумма цен закрытия за последние периодов. * — цена закрытия в -й период.

    В коде нам не нужно писать эту формулу вручную. Мы будем использовать библиотеку ta-lib или pandas_ta, которые уже интегрированы в Freqtrade. Обычно используется библиотека talib.abstract.

    Пример кода метода populate_indicators:

    После выполнения этого кода наш датафрейм расширится: к стандартным колонкам добавятся rsi, fast_sma и slow_sma.

    Шаг 2: Логика входа (populate_entry_trend)

    Теперь, когда у нас есть индикаторы, нужно научить бота принимать решения. В Freqtrade используется векторный подход. Это значит, что мы не перебираем свечи в цикле for (это было бы слишком медленно), а применяем условия сразу ко всей колонке.

    Для этого используется метод .loc библиотеки Pandas. Синтаксис может показаться непривычным, но он очень мощен.

    Мы должны заполнить колонку enter_long (войти в лонг) значением 1 там, где условия выполняются.

    Допустим, наша стратегия входа звучит так: «Покупать, когда RSI меньше 30 И цена закрытия выше медленной скользящей средней».

    В коде это выглядит так:

    Обратите внимание на синтаксис: * Каждое условие берется в круглые скобки (). Это обязательно. * Логическое «И» обозначается символом &. * Логическое «ИЛИ» обозначается символом |. * Логическое «НЕ» (отрицание) обозначается символом ~.

    !Визуализация условий входа: совпадение перепроданности по RSI и нахождения цены выше скользящей средней.

    Шаг 3: Логика выхода (populate_exit_trend)

    Выход из сделки настраивается аналогично. Freqtrade имеет встроенные механизмы Stoploss (стоп-лосс) и ROI (Return on Investment — тейк-профит), которые работают автоматически. Однако, мы можем захотеть выйти из сделки по сигналу индикатора, не дожидаясь стоп-лосса или тейк-профита.

    Например: «Продавать, если RSI стал больше 70 (перекупленность)».

    Если условие выполнится, бот немедленно продаст актив по рыночной цене, игнорируя настройки ROI (если они не сработали раньше).

    Дополнительные параметры стратегии

    Помимо логики входа и выхода, класс стратегии содержит важные переменные настройки.

    Minimal ROI (Минимальная окупаемость)

    Это таблица, которая говорит боту, сколько прибыли нужно зафиксировать в зависимости от времени удержания сделки. Это динамический тейк-профит.

    Stoploss (Стоп-лосс)

    Определяет максимальный убыток. Значение всегда отрицательное.

    Timeframe (Таймфрейм)

    Определяет, на каких свечах работает стратегия.

    Отладка и проверка данных

    Часто бывает, что стратегия не дает сигналов, и непонятно почему. Самый простой способ заглянуть «под капот» — использовать print() внутри методов.

    Например, чтобы посмотреть последние 5 строк датафрейма с рассчитанными индикаторами:

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

    Резюме

    Мы разобрали структуру стратегии Freqtrade. Теперь вы знаете, что:

  • Данные хранятся в Pandas DataFrame.
  • Индикаторы добавляются как новые колонки в методе populate_indicators.
  • Сигналы на вход и выход формируются через векторные условия в методах populate_entry_trend и populate_exit_trend.
  • Логические операторы & (И) и | (ИЛИ) позволяют комбинировать множество условий.
  • В следующей статье мы перейдем к практике: возьмем готовую стратегию, запустим бэктестинг (тестирование на истории) и научимся читать отчеты о прибыльности.

    3. Бэктестинг и Hyperopt: методы тестирования на истории и автоматическая оптимизация параметров

    Бэктестинг и Hyperopt: методы тестирования на истории и автоматическая оптимизация параметров

    В предыдущих статьях мы построили фундамент: установили Freqtrade, разобрались с его архитектурой и написали первую стратегию с использованием индикаторов и библиотеки Pandas. Однако, наличие кода стратегии — это лишь половина дела. Запускать непроверенный алгоритм на реальные деньги (или даже на длительный Dry-run) — это игра в рулетку.

    В этой статье мы переходим к этапу валидации и улучшения. Мы научимся путешествовать во времени с помощью бэктестинга (backtesting) и использовать машинное обучение для поиска идеальных настроек через Hyperopt.

    Подготовка данных: топливо для машины времени

    Прежде чем тестировать стратегию, нам нужны исторические данные. Freqtrade не хранит историю рынка по умолчанию, он скачивает её по требованию. Данные состоят из свечей (OHLCV — Open, High, Low, Close, Volume) за определенный период.

    Чтобы скачать данные, используйте команду download-data. Например, скачаем данные за последние 30 дней для таймфрейма 5 минут:

    Эта команда обратится к бирже, указанной в вашем config.json, скачает свечи для всех пар из вашего белого списка (whitelist) и сохранит их в папку user_data/data/.

    > Качество данных критически важно. «Мусор на входе — мусор на выходе». Убедитесь, что у вас нет «дыр» в истории, так как это может исказить результаты тестов.

    Бэктестинг: симуляция торговли

    Бэктестинг — это процесс запуска вашей стратегии на исторических данных. Бот проходит по каждой свече из прошлого, как если бы это происходило в реальном времени, проверяет условия входа/выхода и фиксирует виртуальные сделки.

    Запуск теста

    Для запуска теста используйте команду:

    Здесь мы указываем имя класса стратегии и диапазон дат (январь 2023 года).

    !Визуализация процесса бэктестинга: проход по историческим данным и фиксация сделок.

    Анализ результатов

    После завершения теста вы увидите таблицу с результатами. Ключевые метрики, на которые стоит обратить внимание:

  • Total Profit (Общая прибыль): Сколько заработал бот в валюте стейка (обычно USDT) и в процентах.
  • Win/Loss Ratio (Соотношение побед и поражений): Количество прибыльных сделок против убыточных.
  • Max Drawdown (Максимальная просадка).
  • Максимальная просадка — это один из важнейших показателей риска. Она показывает максимальное падение баланса от локального пика до локального минимума.

    Формула расчета максимальной просадки:

    Где: * — максимальная просадка (Max Drawdown) в процентах. * — пиковое значение баланса перед падением. * — минимальное значение баланса (дно) перед новым ростом.

    Если ваш бот показывает прибыль 100%, но просадка составляла 50%, это рискованная стратегия. В реальной торговле вы могли бы потерять половину депозита и остановить бота на эмоциях.

    Hyperopt: автоматическая оптимизация

    Представьте, что в вашей стратегии есть условие: RSI < 30. Почему 30? Почему не 28 или 35? А какой период RSI лучше: 14 или 20? Ручной перебор этих параметров займет вечность.

    Hyperopt (Hyper-optimization) решает эту проблему. Это модуль Freqtrade, который использует методы машинного обучения (в частности, байесовскую оптимизацию) для поиска наилучшей комбинации параметров.

    Подготовка стратегии для Hyperopt

    Чтобы использовать Hyperopt, нужно изменить код стратегии. Вместо жестко заданных чисел (хардкода) мы используем специальные объекты-параметры.

    В начале класса стратегии нужно импортировать параметры и объявить их:

    Теперь в методах populate_indicators и populate_entry_trend мы используем .value:

    Запуск оптимизации

    Запуск Hyperopt требует значительных вычислительных ресурсов. Команда выглядит так:

    Разберем аргументы: * --hyperopt-loss: Функция потерь. Она определяет, что мы считаем «лучшим» результатом. SharpeHyperOptLoss оптимизирует коэффициент Шарпа (баланс между прибылью и риском). * --epochs: Количество итераций (эпох). Чем больше, тем выше шанс найти идеальные настройки, но тем дольше идет процесс.

    !Визуализация поиска оптимальных параметров в многомерном пространстве решений.

    Функция потерь (Loss Function)

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

    Коэффициент Шарпа, часто используемый в оптимизации, рассчитывается так:

    Где: * — коэффициент Шарпа. * — доходность портфеля (стратегии). * — безрисковая ставка (в крипте часто принимается за 0). * — стандартное отклонение доходности (волатильность портфеля).

    Высокий коэффициент Шарпа означает, что стратегия генерирует прибыль с меньшим риском (меньшими колебаниями баланса).

    Применение результатов

    После завершения работы Hyperopt выведет таблицу с лучшими найденными параметрами. Вы можете:

  • Вручную переписать значения default=... в вашей стратегии.
  • Скопировать блок json, который выдаст бот, и вставить его в файл стратегии в специальную секцию.
  • Риски переобучения (Overfitting)

    Существует опасность найти параметры, которые идеально работали в прошлом, но бесполезны в будущем. Это называется переобучением (overfitting).

    Чтобы избежать этого: * Не гонитесь за тысячами процентов прибыли в бэктестах. * Разделяйте данные: оптимизируйте на одном периоде (например, 2022 год), а проверяйте на другом (2023 год). Это называется Out-of-Sample тестирование. * Используйте параметры, которые имеют логический смысл, а не просто случайные числа.

    Заключение

    Бэктестинг и Hyperopt превращают трейдинг из гадания в науку. Вы можете проверять гипотезы за считанные минуты и находить настройки, которые невидны невооруженным глазом. Теперь, когда у нас есть оптимизированная стратегия, мы готовы к следующему шагу — развертыванию бота на реальном сервере и подключению к Telegram для управления. Об этом мы поговорим в следующей статье.

    4. Запуск торгов: режимы Dry-run и Live, интеграция с Telegram и безопасность

    Запуск торгов: режимы Dry-run и Live, интеграция с Telegram и безопасность

    Мы прошли долгий путь: от установки Docker и настройки окружения до написания стратегии на Python и её оптимизации с помощью Hyperopt. Теперь у вас есть «боевой» алгоритм, готовый к работе. Но прежде чем доверить ему реальный капитал, необходимо разобраться, как правильно запустить бота, как управлять им удаленно и как обезопасить свои средства.

    В этой статье мы рассмотрим финальные шаги перед выходом на рынок: режимы работы Freqtrade, настройку уведомлений через Telegram и критически важные правила безопасности.

    Режимы работы: Dry-run против Live

    Freqtrade поддерживает два основных режима работы. Понимание разницы между ними — залог сохранения вашего депозита.

    Режим Dry-run (Симуляция)

    Dry-run — это режим «сухого прогона» или бумажной торговли. В этом режиме бот подключается к бирже, получает реальные рыночные данные (цены, стакан ордеров), анализирует их и «исполняет» сделки виртуально.

    В отличие от бэктестинга, который работает на исторических данных, Dry-run работает в реальном времени. Это позволяет проверить:

  • Как стратегия ведет себя в текущих рыночных условиях.
  • Нет ли ошибок в коде, которые возникают при живом подключении.
  • Хватает ли ресурсов сервера (CPU/RAM).
  • В конфигурационном файле config.json этот режим включается параметром:

    Здесь dry_run_wallet задает ваш стартовый виртуальный баланс. Бот будет рассчитывать прибыль и убытки, имитируя комиссии биржи, но реальные деньги затронуты не будут.

    Математически изменение вашего виртуального баланса в этом режиме можно описать следующей формулой:

    Где: * — новый баланс кошелька. * — предыдущий баланс. * — количество закрытых сделок. * — цена выхода из -й сделки. * — цена входа в -ю сделку. * — объем актива в -й сделке. * — суммарная комиссия за все операции (обычно 0.1% за сделку).

    Режим Live (Реальная торговля)

    Live — это режим работы с реальными средствами. Бот отправляет настоящие ордера на биржу через API. Чтобы активировать этот режим, необходимо изменить конфигурацию:

    > Важно: Никогда не переключайтесь в режим Live, если вы не прогнали стратегию в режиме Dry-run минимум 1-2 недели и не получили результаты, схожие с бэктестами.

    Интеграция с Telegram

    Одной из самых мощных функций Freqtrade является встроенная поддержка Telegram. Это позволяет вам не только получать уведомления о сделках, но и управлять ботом прямо со смартфона: останавливать торги, проверять баланс или принудительно продавать активы.

    !Поток команд от пользователя к боту через Telegram API

    Настройка бота в Telegram

  • Откройте Telegram и найдите пользователя @BotFather.
  • Отправьте команду /newbot.
  • Придумайте имя и юзернейм для вашего бота.
  • BotFather выдаст вам Token (длинная строка символов). Сохраните его.
  • Теперь нужно узнать ваш личный ID (Chat ID), чтобы бот слушал только вас. Найдите бота @userinfobot и нажмите Start. Он пришлет ваш ID.
  • Конфигурация Freqtrade

    Откройте ваш config.json и найдите секцию telegram:

    Основные команды управления

    После запуска бота вы можете отправлять ему команды в чат:

    * /start — запускает бота (если он был остановлен). * /stop — останавливает открытие новых сделок. Открытые сделки будут управляться до закрытия. * /status — показывает список открытых сделок и текущую прибыль по ним. * /profit — показывает сводку по прибыли за день, неделю и месяц. * /forceexit <id> — принудительно продает актив по рыночной цене (где <id> — номер сделки из /status). * /balance — показывает текущий баланс на бирже.

    Безопасность: как не потерять всё

    Алгоритмическая торговля несет в себе риски не только рыночные, но и технические. Если злоумышленник получит доступ к вашему серверу или API-ключам, он может вывести ваши средства.

    1. Ограничение прав API ключей

    При создании API ключей на бирже (Binance, Bybit, OKX) вам предложат выбрать разрешения.

    Золотое правило: Разрешайте только торговлю (Spot Trading). Никогда не ставьте галочку напротив «Enable Withdrawals» (Разрешить вывод средств).

    Если хакер украдет ключи без права вывода, он сможет только совершать сделки (что тоже плохо, но деньги останутся на бирже).

    2. Защита конфигурационного файла

    Файл config.json содержит ваши API ключи и токен Telegram.

    * Не выкладывайте этот файл в публичные репозитории (GitHub, GitLab). * Если вы делаете резервные копии, шифруйте архивы.

    3. Безопасность Telegram

    Ваш Telegram-бот — это пульт управления вашими деньгами. Если кто-то узнает ваш токен, он не сможет читать ваши переписки, но сможет отправлять команды боту, если вы не настроили chat_id или если злоумышленник подделает его.

    Однако, Freqtrade по умолчанию реагирует только на команды от указанного chat_id. Тем не менее, держите токен в секрете.

    Запуск в фоновом режиме

    Для постоянной работы бота (24/7) мы используем Docker Compose в режиме демона (фоновом режиме).

    Команда для запуска:

    Флаг -d (detached) означает, что контейнер запустится в фоне, и вы сможете закрыть терминал, не прерывая работу бота.

    Чтобы посмотреть, что происходит с ботом, используйте команду просмотра логов:

    Заключение

    Поздравляю! Вы прошли путь от установки до запуска полноценного торгового робота. Теперь ваш Freqtrade работает, анализирует рынок и готов совершать сделки.

    В этом курсе мы разобрали:

  • Архитектуру и установку.
  • Создание стратегий на Pandas.
  • Бэктестинг и оптимизацию.
  • Запуск в Live и управление через Telegram.
  • Помните, что алгоритмический трейдинг — это марафон, а не спринт. Регулярно проверяйте логи, анализируйте сделки и не забывайте обновлять бота. Удачи в торгах!

    5. Продвинутое использование: динамические списки пар, Edge positioning и обслуживание базы данных

    Продвинутое использование: динамические списки пар, Edge positioning и обслуживание базы данных

    В предыдущих статьях мы прошли путь от установки Freqtrade до запуска бота в режиме реальной торговли. Ваш бот уже умеет покупать и продавать, следуя логике стратегии, и управляется через Telegram. Однако, рынок криптовалют — это живой организм, который постоянно меняется. Монеты, которые были популярны вчера, сегодня могут потерять ликвидность, а ваша стратегия может перестать работать из-за изменения волатильности.

    В этой статье мы превратим вашего бота из простого исполнителя в адаптивную систему. Мы разберем, как автоматически выбирать лучшие монеты для торговли, как использовать статистическое преимущество (Edge) для управления рисками и как поддерживать техническое здоровье бота.

    Динамические списки пар (Dynamic Pairlists)

    До сих пор мы использовали StaticPairList — жестко заданный список монет (например, BTC/USDT, ETH/USDT). Это надежно, но неэффективно. На крипторынке постоянно появляются новые тренды. Если вы торгуете только списком из топ-10 монет, вы упускаете возможности на «пампах» альткоинов.

    Freqtrade решает эту проблему с помощью динамических списков пар. Бот может сам сканировать рынок, отбирать монеты по заданным критериям и обновлять ваш «белый список» (Whitelist) без перезагрузки.

    Архитектура обработчиков списков (Pairlist Handlers)

    Работа со списками пар устроена как цепочка фильтров. Бот берет все доступные на бирже пары и прогоняет их через серию «сит», отсеивая ненужное.

    !Визуализация процесса фильтрации торговых пар через цепочку обработчиков.

    VolumePairList: Торговля там, где есть деньги

    Самый популярный метод — VolumePairList. Он отбирает монеты с самым высоким торговым объемом. Объем — это топливо рынка; без него технический анализ работает плохо.

    Пример конфигурации в config.json:

    Разберем параметры: * number_assets: Количество монет в списке (топ-20). * sort_key: Критерий сортировки. quoteVolume означает объем в валюте котировки (например, в USDT). * refresh_period: Как часто (в секундах) обновлять список. Здесь — каждые 30 минут. * lookback_days: За какой период считать объем (за последние 24 часа).

    Фильтрация мусора

    Просто выбрать топ по объему недостаточно. В топ могут попасть стейблкоины (USDC/USDT) или монеты с огромным спредом. Для очистки списка используются дополнительные фильтры, которые добавляются в массив pairlists после основного метода.

  • AgeFilter: Исключает слишком молодые монеты, которые только что вышли на биржу (они часто крайне нестабильны).
  • PriceFilter: Исключает слишком дешевые монеты (с ценой ниже 1 сатоши или близкой к нулю), где шаг цены может съедать прибыль.
  • SpreadFilter: Убирает пары с большим разрывом между ценой покупки и продажи.
  • RangeStabilityFilter: Очень полезный фильтр. Он убирает монеты, которые либо стоят на месте (флэт), либо двигаются слишком резко (памп и дамп), оставляя только те, что имеют здоровый тренд.
  • Edge Positioning: Торговля с математическим преимуществом

    Большинство трейдеров задают фиксированный стоп-лосс (например, -10%). Но для одной монеты падение на 10% — это крах, а для другой — обычный рыночный шум. Модуль Edge в Freqtrade пытается найти оптимальный стоп-лосс для каждой пары на основе исторической вероятности успеха.

    Что такое Edge (Преимущество)?

    В трейдинге преимущество (Expectancy) — это математическое ожидание прибыли от одной сделки. Оно рассчитывается по формуле:

    Где: * — математическое ожидание (Expectancy). * — вероятность выигрышной сделки (Win Rate). * — средний размер выигрыша (Average Win). * — вероятность проигрышной сделки (Loss Rate). * — средний размер проигрыша (Average Loss).

    Если , ваша стратегия прибыльна на дистанции. Если , вы теряете деньги, даже если иногда выигрываете.

    Как работает модуль Edge

    Модуль Edge делает следующее:

  • Берет вашу стратегию и прогоняет её на исторических данных для каждой пары из списка.
  • Проверяет разные уровни стоп-лосса.
  • Вычисляет Win Rate и Risk/Reward Ratio для каждого уровня.
  • Если находит пару, где вероятность успеха высока, он разрешает торговлю и устанавливает динамический стоп-лосс.
  • Настройка Edge

    Чтобы включить Edge, добавьте следующую секцию в config.json:

    Ключевые параметры: * calculate_since_number_of_days: Анализировать данные за последние 7 дней. * minimum_winrate: Минимальный процент побед (60%), чтобы пара считалась годной. * minimum_expectancy: Минимальное матожидание (0.20). * stoploss_range_...: Диапазон перебора стоп-лоссов (от -1% до -10%).

    > Важно: Edge требует много ресурсов процессора, так как фактически выполняет мини-бэктесты в реальном времени. Не ставьте слишком частый интервал обновления (process_throttle_secs).

    Обслуживание базы данных

    Freqtrade хранит всю историю сделок в файле базы данных SQLite (tradesv3.sqlite в папке user_data). Со временем этот файл может разрастись до сотен мегабайт, особенно если вы торгуете на множестве пар с частыми сделками. Это может замедлить работу бота.

    Регулярная очистка (Vacuum)

    SQLite не всегда физически удаляет данные с диска, даже если вы удалили их из таблицы. Файл остается «фрагментированным». Для оптимизации используется команда vacuum.

    Чтобы выполнить обслуживание базы данных, остановите бота и выполните команду:

    Эта команда пересоберет файл базы данных, уменьшив его размер и ускорив доступ к данным.

    Управление сделками

    Иногда возникает необходимость вручную удалить сделку из базы данных (например, если произошел сбой API и сделка зависла в статусе «open», хотя на бирже она закрыта).

    Внимание: Удаление сделки из базы Freqtrade не отменяет ордер на бирже. Это влияет только на локальную статистику бота.

  • Сначала найдите ID сделки:
  • Или посмотрите в Telegram через /status.

  • Удалите сделку по ID (например, ID 15):
  • Резервное копирование

    Файл tradesv3.sqlite — это ваша финансовая история. Если файл повредится, бот «забудет» о своих открытых позициях и не сможет их закрыть.

    Настройте регулярное резервное копирование папки user_data. Самый простой способ — использовать скрипт, который копирует файл базы данных в облачное хранилище или на другой диск раз в сутки.

    Заключение

    В этой статье мы рассмотрели инструменты, которые делают Freqtrade по-настоящему мощным комбайном для алгоритмической торговли:

  • Динамические списки пар позволяют боту всегда быть «в рынке», автоматически переключаясь на самые ликвидные активы.
  • Edge Positioning добавляет слой интеллектуального управления рисками, адаптируя стоп-лоссы под текущую волатильность.
  • Обслуживание базы данных гарантирует, что ваш бот будет работать быстро и стабильно на длинной дистанции.
  • Теперь у вас есть полный набор знаний для создания, настройки и поддержки профессионального торгового робота. Экспериментируйте с фильтрами, ищите свои идеальные настройки Edge и пусть профит будет с вами!