← Back to blog
TutorialApril 2, 2026• 12 min read

Freqtrade Tutorial 2026: Complete Setup Guide for Beginners

Freqtrade is the most powerful free, open-source crypto trading bot available in 2026. It supports 150+ exchanges, advanced backtesting, custom strategy development in Python, and full Telegram integration — all without a monthly subscription fee. Whether you're a complete beginner or an experienced trader looking to automate, this guide will take you from zero to a running bot in under an hour.

Unlike paid platforms like 3Commas ($49/month) or Cornix ($29/month), Freqtrade gives you complete control over your strategy logic, data, and execution — for free. The tradeoff? You need to set it up yourself. That's exactly what this tutorial covers, step by step.

What You'll Need (Prerequisites)

Before we start, make sure you have the following ready:

  • A computer — Windows 10/11, macOS, or Linux. Any modern machine works. For 24/7 trading, you'll eventually want a VPS ($5–10/month) but your local machine is fine for learning.
  • Docker Desktop — The easiest installation method. Download from docker.com. On Windows, make sure WSL2 is enabled.
  • Python 3.10+ — Only needed if you prefer pip installation over Docker. Check with python --version in your terminal.
  • A Bybit account — Create one at bybit.com. Complete KYC verification (takes 5–10 minutes). You'll need API keys later.
  • A text editor — VS Code is recommended. You'll be editing JSON config files and Python strategy files.

Step 1: Installation (Docker vs. Pip)

There are two main ways to install Freqtrade. Docker is recommended for beginners because it handles all dependencies automatically and keeps your system clean.

Option A: Docker Installation (Recommended)

Docker wraps Freqtrade and all its dependencies into a container. No Python version conflicts, no dependency hell. Just works.

# Create a directory for your bot

mkdir ft_userdata

cd ft_userdata

# Download the docker-compose file

curl https://raw.githubusercontent.com/freqtrade/freqtrade/stable/docker-compose.yml -o docker-compose.yml

# Pull the latest image

docker compose pull

# Create user_data directory structure

docker compose run --rm freqtrade create-userdir --userdir user_data

# Generate a config file

docker compose run --rm freqtrade new-config --config user_data/config.json

During config generation, Freqtrade will ask you a series of questions: exchange name, trading mode (spot/futures), dry-run mode, and Telegram integration. For now, choose Bybit, spot trading, and enable dry-run mode.

Option B: Pip Installation

If you prefer a native installation (useful for strategy development with IDE autocompletion):

# Clone the repository

git clone https://github.com/freqtrade/freqtrade.git

cd freqtrade

# Run the setup script

./setup.sh -i

# Activate the virtual environment

source .venv/bin/activate

# Verify installation

freqtrade --version

The setup script creates a Python virtual environment and installs all dependencies. On Windows, use .\setup.ps1 in PowerShell instead.

Step 2: Configuration (config.json)

The config file is the brain of your bot. It controls which exchange to use, how much capital to deploy, risk parameters, and more. Here are the most important settings you need to understand:

{

"stake_currency": "USDT",

"stake_amount": "unlimited",

"tradable_balance_ratio": 0.99,

"max_open_trades": 5,

"dry_run": true,

"dry_run_wallet": 1000,

"exchange": {

"name": "bybit",

"key": "YOUR_API_KEY",

"secret": "YOUR_API_SECRET"

}

}

Key parameters explained:

  • stake_currency — The base currency for all trades. USDT is the most common choice on Bybit.
  • stake_amount: "unlimited" — Freqtrade will automatically divide your balance equally among max_open_trades. With a $1,000 wallet and 5 max trades, each position gets ~$200.
  • max_open_trades — How many positions can be open simultaneously. Start with 3–5 to diversify without over-trading.
  • dry_run: true — Paper trading mode. The bot simulates trades without using real money. Always start here.
  • dry_run_wallet — Virtual balance for paper trading. Set this to the amount you plan to actually trade with.

Generating Bybit API Keys

To connect Freqtrade to Bybit:

  1. Log into Bybit and go to Account & Security → API Management
  2. Click Create New Key, select “System-generated API Keys”
  3. Name it “Freqtrade Bot” and set permissions: Read + Trade (never enable Withdraw)
  4. Whitelist your server's IP address for security
  5. Copy the API key and secret into your config.json

Step 3: Your First Strategy (RSI + EMA)

A trading strategy in Freqtrade is a Python file that defines when to buy and when to sell. Let's build a simple but effective strategy using RSI (Relative Strength Index) and EMA (Exponential Moving Average).

The logic: buy when RSI is oversold (below 30) AND price is above the 200 EMA (confirming an uptrend). Sell when RSI is overbought (above 70) or when a 6% stop-loss is hit.

# user_data/strategies/SimpleRsiEma.py

from freqtrade.strategy import IStrategy

import talib.abstract as ta

from pandas import DataFrame

 

class SimpleRsiEma(IStrategy):

timeframe = '1h'

stoploss = -0.06 # 6% stop-loss

minimal_roi = {"0": 0.10, "60": 0.05, "120": 0.02}

 

def populate_indicators(self, df: DataFrame, metadata):

df['rsi'] = ta.RSI(df, timeperiod=14)

df['ema200'] = ta.EMA(df, timeperiod=200)

return df

 

def populate_entry_trend(self, df: DataFrame, metadata):

df.loc[

(df['rsi'] < 30) &

(df['close'] > df['ema200']),

'enter_long'] = 1

return df

 

def populate_exit_trend(self, df: DataFrame, metadata):

df.loc[

(df['rsi'] > 70),

'exit_long'] = 1

return df

Save this file as user_data/strategies/SimpleRsiEma.py. The strategy has three key methods:

  • populate_indicators — Calculates RSI-14 and EMA-200 for each candle.
  • populate_entry_trend — Marks a buy signal when RSI drops below 30 while price stays above the 200 EMA.
  • populate_exit_trend — Marks a sell signal when RSI exceeds 70, capturing the overbought reversal.
  • minimal_roi — Automatically takes profit: 10% immediately, 5% after 1 hour, 2% after 2 hours.

Step 4: Backtesting Your Strategy

Before risking any money, you need to test your strategy against historical data. This is called backtesting and it's the most critical step in algorithmic trading.

Download Historical Data

# Download 6 months of 1h candle data for top pairs

freqtrade download-data --exchange bybit \

--pairs BTC/USDT ETH/USDT SOL/USDT XRP/USDT \

--timeframes 1h \

--days 180

Run the Backtest

freqtrade backtesting \

--strategy SimpleRsiEma \

--timerange 20251001-20260401 \

--config user_data/config.json

Freqtrade will replay every candle from October 2025 to April 2026 and simulate your strategy's trades. The output includes:

  • Total trades — How many trades were executed. Aim for 200+ for statistical significance.
  • Win rate — Percentage of profitable trades. Above 55% is good for trend-following strategies.
  • Profit factor — Total wins divided by total losses. Above 1.5 indicates a strong edge.
  • Max drawdown — The largest peak-to-trough decline. Keep this under 10% for conservative risk management.
  • SQN score — System Quality Number. Above 2.0 is “Good”, above 3.0 is “Excellent”.

If your backtest shows a win rate below 50% or a drawdown above 15%, go back and tweak your strategy parameters. Consider adjusting RSI thresholds, adding a volume filter, or changing the timeframe. Learn more about avoiding common backtesting mistakes in our backtesting guide.

Step 5: Dry Run (Paper Trading)

Once your backtest results look promising, it's time to test in real-time market conditions — but still without real money. This is called dry-run or paper trading.

# Make sure dry_run is true in config.json, then:

freqtrade trade \

--strategy SimpleRsiEma \

--config user_data/config.json

The bot will now monitor the live market and execute virtual trades in real-time. It connects to Bybit's API for price data but doesn't place any actual orders. Key things to watch during dry-run:

  • Entry timing — Is the bot entering at the levels you expect? Compare signals to the chart.
  • Exit behavior — Are stop-losses and take-profits triggering correctly?
  • Trade frequency — Is it trading too much (over-trading) or too little (missing opportunities)?
  • API stability — Watch for connection errors or rate limit warnings in the logs.

Run dry-run for at least 1–2 weeks before going live. If results are consistent with your backtest (within 10–15% variance), you're ready for real capital.

Adding Telegram Notifications

Freqtrade has built-in Telegram integration so you get notified of every trade. Add this to your config.json:

"telegram": {

"enabled": true,

"token": "YOUR_BOT_TOKEN",

"chat_id": "YOUR_CHAT_ID"

}

Create a bot via @BotFather on Telegram, copy the token, and get your chat_id from @userinfobot. Now you'll see real-time entry/exit alerts, daily profit summaries, and can control the bot directly from Telegram with commands like /status, /profit, and /forcesell.

Step 6: Going Live

The transition from dry-run to live trading is simple — but emotionally significant. Here's the checklist:

  1. Set dry_run to false in config.json
  2. Fund your Bybit account with the amount you tested with (start small — $200–500)
  3. Verify API permissions — Read + Trade only, IP whitelisted, no withdrawal permission
  4. Set conservative max_open_trades — Start with 3 instead of 5
  5. Enable stoploss_on_exchange — Places stop-loss orders directly on Bybit for failsafe protection
  6. Monitor closely for 48 hours — Watch the first few trades manually before trusting automation

# Add this to config.json for exchange-side stop-loss

"order_types": {

"entry": "limit",

"exit": "limit",

"stoploss": "market",

"stoploss_on_exchange": true

}

With stoploss_on_exchange: true, your stop-loss is placed directly on Bybit's servers. Even if your bot crashes or loses internet, the stop-loss will execute. This is non-negotiable for live trading.

Step 7: Running 24/7 on a VPS

Your local machine isn't reliable for 24/7 trading — updates, restarts, and internet outages will interrupt your bot. A VPS (Virtual Private Server) solves this.

  • Recommended providers — Hetzner ($4/month), DigitalOcean ($6/month), or Vultr ($6/month). Choose a server close to Bybit's servers (Singapore or Tokyo) for lower latency.
  • Minimum specs — 1 vCPU, 2 GB RAM, 20 GB SSD. This handles Freqtrade + 10 pairs easily.
  • Use Docker on the VPS for easy deployment. Just docker compose up -d and it runs in the background.
  • Set up automatic restarts — Add restart: unless-stopped to your docker-compose.yml so the bot restarts after server reboots.

Beyond Basics: TrendRider Strategy

The RSI + EMA strategy above is a great starting point, but production-grade trading requires more sophistication. Advanced strategies combine multiple indicators, multi-timeframe analysis, dynamic risk management, and market regime detection.

That's exactly what TrendRider does. Our strategy combines 8 technical indicators across 3 timeframes with adaptive position sizing. The results from 10,000+ backtested trades:

  • 67.9% win rate — Nearly 7 out of 10 trades are profitable
  • 1.42% max drawdown — Extremely conservative risk management
  • SQN score 3.45 — Rated “Excellent” by Van Tharp's framework
  • 5-minute setup — Just plug in your Bybit API keys and start

Skip the trial and error. Trade with a proven strategy.

TrendRider is built on Freqtrade with 67.9% win rate and 10,000+ backtested trades. Free tier available — no credit card required.

Get Started Free →

Frequently Asked Questions

Is Freqtrade free to use in 2026?

Yes, Freqtrade is 100% free and open-source under the GPL-3.0 license. You pay nothing for the software itself. Your only costs are exchange trading fees (typically 0.1% per trade on Bybit) and optional VPS hosting ($4–10/month) for 24/7 uptime.

Can I run Freqtrade on Windows?

Absolutely. The easiest path is Docker Desktop on Windows 10/11 with WSL2 enabled. You can also install natively via pip using Python 3.10+ or run it inside WSL2 directly. All three methods work well — Docker is simplest for beginners.

Which exchange works best with Freqtrade?

Bybit is the top choice in 2026. It offers low fees (0.1% maker/taker), reliable API, deep liquidity, and supports both spot and futures trading. Binance, OKX, and Kraken are also well-supported. Check the official exchange compatibility list for the full roster.

How much money do I need to start?

You can begin spot trading with as little as $100–200 on Bybit. However, $500–1,000 is recommended so you can properly diversify across 3–5 trading pairs with meaningful position sizes. Always start in dry-run mode with virtual funds first.

Do I need programming experience?

Basic Python knowledge helps for writing custom strategies, but it's not required to get started. Freqtrade ships with sample strategies you can modify, and configuration is done through JSON files. For a zero-code option, pre-built strategies like TrendRider work out of the box with just API key setup.