Интеграция с Freqtrade (Python)

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1 услугВсе 1306 услуг
Интеграция с Freqtrade (Python)
Средняя
~2-3 рабочих дня
Часто задаваемые вопросы
Направления блокчейн-разработки
Этапы блокчейн-разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1221
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1163
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    855
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1062
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    828

Интеграция с Freqtrade (Python)

Freqtrade — open source Python фреймворк для алгоритмической торговли с встроенным бэктестингом, оптимизацией и live trading. Активно развивается, имеет большое сообщество, хорошую документацию и нативную интеграцию с CCXT (150+ бирж).

Установка и структура проекта

pip install freqtrade
freqtrade create-userdir --userdir user_data
freqtrade new-strategy --strategy MyStrategy

Структура директории:

user_data/
  strategies/      # ваши стратегии
  backtesting_results/
  hyperopt_results/
  data/            # загруженные исторические данные
  config.json

Написание стратегии

from freqtrade.strategy import IStrategy, IntParameter, DecimalParameter
import talib.abstract as ta
import pandas as pd

class EMARSIStrategy(IStrategy):
    # Параметры для HyperOpt
    ema_fast = IntParameter(5, 20, default=9, space="buy")
    ema_slow = IntParameter(15, 50, default=21, space="buy")
    rsi_oversold = IntParameter(20, 40, default=30, space="buy")
    rsi_overbought = IntParameter(60, 80, default=70, space="sell")
    stoploss = -0.10
    trailing_stop = True
    trailing_stop_positive = 0.02
    timeframe = '1h'

    def populate_indicators(self, dataframe: pd.DataFrame, metadata: dict) -> pd.DataFrame:
        dataframe['ema_fast'] = ta.EMA(dataframe, timeperiod=self.ema_fast.value)
        dataframe['ema_slow'] = ta.EMA(dataframe, timeperiod=self.ema_slow.value)
        dataframe['rsi'] = ta.RSI(dataframe, timeperiod=14)
        return dataframe

    def populate_entry_trend(self, dataframe: pd.DataFrame, metadata: dict) -> pd.DataFrame:
        dataframe.loc[
            (dataframe['ema_fast'] > dataframe['ema_slow']) &
            (dataframe['rsi'] < self.rsi_oversold.value) &
            (dataframe['volume'] > 0),
            'enter_long'
        ] = 1
        return dataframe

    def populate_exit_trend(self, dataframe: pd.DataFrame, metadata: dict) -> pd.DataFrame:
        dataframe.loc[
            (dataframe['ema_fast'] < dataframe['ema_slow']) |
            (dataframe['rsi'] > self.rsi_overbought.value),
            'exit_long'
        ] = 1
        return dataframe

Загрузка данных и бэктестинг

# Загрузка исторических данных
freqtrade download-data --exchange binance --pairs BTC/USDT ETH/USDT --timeframes 1h 4h --days 365

# Бэктест
freqtrade backtesting \
  --strategy EMARSIStrategy \
  --config user_data/config.json \
  --timerange 20230101-20240101 \
  --pairs BTC/USDT ETH/USDT

HyperOpt — оптимизация параметров

# Оптимизация с 100 итерациями
freqtrade hyperopt \
  --strategy EMARSIStrategy \
  --hyperopt-loss SharpeHyperOptLoss \
  --epochs 300 \
  --spaces buy sell \
  --config user_data/config.json

Freqtrade использует Optuna под капотом для Bayesian оптимизации. SharpeHyperOptLoss оптимизирует по Sharpe ratio, можно заменить на CalmarHyperOptLoss (Calmar ratio) или написать собственную функцию потерь.

Конфигурация для live trading

{
  "max_open_trades": 5,
  "stake_currency": "USDT",
  "stake_amount": "unlimited",
  "tradable_balance_ratio": 0.99,
  "fiat_display_currency": "USD",
  "dry_run": false,
  "cancel_open_orders_on_exit": true,

  "exchange": {
    "name": "binance",
    "key": "YOUR_API_KEY",
    "secret": "YOUR_API_SECRET",
    "ccxt_config": {"enableRateLimit": true},
    "pair_whitelist": ["BTC/USDT", "ETH/USDT"],
    "pair_blacklist": []
  },

  "telegram": {
    "enabled": true,
    "token": "BOT_TOKEN",
    "chat_id": "CHAT_ID",
    "notification_settings": {
      "status": "on",
      "warning": "on",
      "startup": "on",
      "entry": "on",
      "exit": "on"
    }
  }
}

Freqtrade автоматически отправляет уведомления в Telegram: вход в позицию, выход, ежедневный P&L summary. Встроенный web UI позволяет мониторить торговлю через браузер.

FreqAI — машинное обучение

Freqtrade включает FreqAI — модуль ML-предсказаний с автоматическим feature engineering и continuous learning:

class FreqAIStrategy(IStrategy):
    def feature_engineering_expand_all(self, dataframe, period, metadata, **kwargs):
        dataframe["%-rsi-period"] = ta.RSI(dataframe, timeperiod=period)
        dataframe["%-ema-period"] = ta.EMA(dataframe, timeperiod=period)
        return dataframe

    def set_freqai_targets(self, dataframe, metadata, **kwargs):
        # Предсказываем доходность через 24 часа
        dataframe["&-target"] = (
            dataframe["close"].shift(-24) / dataframe["close"] - 1
        ).fillna(0)
        return dataframe

Freqtrade — один из лучших вариантов для быстрого старта в algo trading. Активное сообщество, Discord с тысячами участников, постоянные обновления.