Help

Run your first paper bot

Take a tested strategy from the Builder to a running Freqtrade bot. Start with simulated funds, verify the setup, then decide what to do next.

2Signals prepares the setup package. Your bot runs in your Railway account or on your own computer or server. Hosting is billed separately. Closing 2Signals does not stop the bot.

1. Review your setup

Complete a backtest with at least one trade and resolve any calculation or compatibility errors. Check the exchange, spot/futures market type, selected pairs, candle interval, allocation, and risk rules. Technical readiness does not establish profitability.

Save the strategy version and its test if you want a traceable starting point. A saved strategy version and a signed-in account are required for 2Signals monitoring. Paper mode uses live market data with simulated funds; it does not place exchange orders.

For paper mode, leave exchange credentials empty unless your exchange specifically requires read-only access to the needed data. Never paste exchange keys, Telegram tokens, connection tokens, or full configuration files into Botty or a support message.

2a. Run on Railway

  1. In Deploy, keep Paper selected and choose Railway. Optionally enable 2Signals monitoring.
  2. Choose Prepare setup package, then copy the bundle or connected setup variables. The package contains strategy source and non-secret configuration; the separate monitoring token is private.
  3. Open the Railway template. Sign in to your own Railway account and review its current hosting costs.
  4. Paste the bundle into TWOSIGNALS_BUNDLE. For monitoring, fill the template fields for TWOSIGNALS_CONNECTION_TOKEN and TWOSIGNALS_TELEMETRY_URL as well. Follow the field labels and service references in the template; do not put tokens in public networking settings or source files.
  5. Keep FREQTRADE__DRY_RUN=true. The bot service needs persistent storage mounted at /freqtrade/user_data. Connected templates also have a monitoring connector. Do not expose the Freqtrade API publicly.
  6. Review the services and variables, deploy in Railway, and open the bot service logs. Continue with the verification checklist below.

Opening the template or preparing the package does not start a bot. If you reload 2Signals before copying a connection token, it cannot be displayed again. Disconnect the unused monitoring entry in the dashboard and create a new connection.

2b. Run on your computer or server

Install Docker with Compose. Choose Docker in Deploy, prepare the package, download the ZIP, and extract it into its own folder. From that folder:

cp .env.example .env
docker compose up -d
docker compose logs -f freqtrade

On Windows, you can copy and rename .env.example to .env in your file manager. Keep dry-run enabled and exchange keys empty for paper trading unless required by your exchange. The user_data folder holds persistent state; keep it when updating. The machine must remain running and connected to the internet.

3. Verify your bot

  • The service stays running instead of repeatedly restarting.
  • Logs identify the expected strategy and exchange, confirm dry-run, and show no configuration, market-data, or authentication errors.
  • The expected pairs and candle interval are loaded. A bot can be healthy without opening a trade: it waits for your entry rules and sufficient candle history.
  • With 2Signals monitoring, return to Connected bots in the dashboard. Look for a recent heartbeat and the reported bot state.

Online means a recent monitoring heartbeat. It does not prove that orders are being placed, that a strategy is profitable, or that every external service is healthy. Standalone verification is your own check, not an automatic 2Signals confirmation.

Waiting means no heartbeat has arrived. Offline means the last heartbeat is older than 150 seconds; check both bot and connector logs. Network or connector problems can interrupt monitoring while the trading bot keeps running.

Monitor a connected paper bot

Open Connected bots for the latest reported state. Legacy connectors report reachability only. Performance requires connector runtime 0.3.0 or later; updating 2Signals alone does not update your hosted connector.

  1. Use a connected Railway template. Keep the bot API private and retain the bot’s persistent volume.
  2. On the connector service, reference the bot’s API username and password using Railway service variables. These stay in your hosting; never paste them into 2Signals.
  3. To share simulated balance, P/L and recent trades, explicitly set TWOSIGNALS_PAPER_PERFORMANCE_ENABLED=true on the connector. Leave it false for state-only monitoring. Live bots never export performance through this feature.
  4. Keep polling at 60 seconds. After restarting the connector, allow a polling cycle and check the observation time on Connected bots.

Performance is a periodic snapshot, not a complete trade archive: up to 20 open positions and the 10 most recently closed trades. P/L totals cover the retained bot database and may include earlier strategies if you reuse it. Values marked unavailable are not zero. Offline values describe the last observation.

The registered strategy version identifies the version chosen during setup. It does not prove that the hosting configuration has remained unchanged. Check the reported strategy and hosting logs when updating a bot.

Disable performance sharing on the connector to return to state-only monitoring. The next successful heartbeat replaces its stored performance snapshot. Disconnecting monitoring revokes the connection token but does not stop Freqtrade.

4. Optional: connect Telegram

2Signals connection alerts

For a connected Railway deployment, open Telegram alerts in Deploy or the dashboard. If the service is available, select Connect Telegram, open the private Telegram link, and press Start. Return to 2Signals and check that the connection is confirmed. The bot sends a confirmation message, then alerts when your connected deployments report in, stop reporting, or reconnect.

These alerts cover all connected bots in your account. They do not include trades, balances, profit reports, or trading commands. Disconnecting Telegram stops these alerts; it does not stop a trading bot or revoke its monitoring connection. If Telegram alerts are unavailable, you can still set up a personal bot below.

Your own Freqtrade bot: notifications and controls

  1. Open the official @BotFather, send /newbot, and choose a name and an available username ending in bot.
  2. Keep the generated token private. Open your new bot and press Start. Find your user/chat ID using the method in the official Freqtrade Telegram guide. Start with a private chat; groups require extra access controls.
  3. Add the following variables directly to the Railway bot service, or uncomment and fill them in your local .env. Replace the placeholders; never put them in 2Signals.
FREQTRADE__TELEGRAM__ENABLED=true
FREQTRADE__TELEGRAM__TOKEN=<your bot token>
FREQTRADE__TELEGRAM__CHAT_ID=<your private chat ID>

Apply the variable changes and redeploy the Railway bot service. With Docker, run docker compose up -d --force-recreate. Send /status to your bot to verify it responds from the expected paper instance; use /help to see its commands. No open trades is a valid response.

Commands can affect trading. In particular, stopping new entries, stopping the bot, and closing positions are different actions. Learn their behavior in paper mode. Use one personal Telegram bot per running Freqtrade instance to avoid competing message consumers.

If the token leaks, revoke it through BotFather, replace it only in the hosting environment, and restart the service. A Telegram bot token is separate from your exchange API credentials.

5. Update or stop a bot

Editing a strategy in 2Signals does not update an existing bot. Test and save the new version, prepare a new package for the same deployment mode, back up persistent data, then replace TWOSIGNALS_BUNDLE in Railway or deployment/bundle.txt locally. Apply the change by redeploying the service or running docker compose up -d --force-recreate. Verify the version and mode again. Preserve existing monitoring variables if retaining the same connection; do not create a second running copy accidentally.

To stop a paper instance, stop its service in Railway or run docker compose stop freqtrade. Keep its persistent data if you intend to resume. Review Railway resources separately: stopping the bot does not by itself prove that all hosting charges have ended.

For live instances, stopping a process does not close exchange positions. Review open positions and orders before updates, restarts, or shutdown. Use the documented Freqtrade workflow for stopping new entries and managing existing positions. “Disconnect monitoring” in 2Signals only revokes telemetry access.

Troubleshooting

Provider unavailable
Choose another available provider or contact support. This is a 2Signals service configuration issue; you do not need to set application environment variables.
Bot repeatedly restarts
Read the first startup error. Check that the complete package was pasted, the runtime supports it, and the package mode matches the dry-run setting. Preserve the persistent volume.
Waiting for monitoring
Check the connector service, its connection token and telemetry URL, and private networking to the bot. A standalone template cannot send monitoring heartbeats.
No Telegram messages
Press Start in the correct bot and check whether it is blocked. For a personal bot, verify the chat ID, token, enabled flag, and service restart. Do not share the token when asking for help.
No trades
Check runtime state, market-data availability, warm-up history, selected pairs, and whether the entry rules have actually triggered. A successful backtest does not guarantee future entries.

Still stuck? Contact support with the failing step, paper/live mode, provider, and a short sanitized error. Remove credentials and tokens.

6. Moving to live trading

Complete and understand paper operation first, including monitoring, recovery, and stopping the bot. Recheck allocation, risk rules, exchange compatibility, and permissions. A paper run or green status is not a promise of returns.

Generate a separate live package in Deploy and acknowledge the live-trading step. Live mode requires both a live package and FREQTRADE__DRY_RUN=false. Add exchange trading credentials directly in the hosting environment, disable withdrawal permissions, and avoid running duplicate instances on the same intended allocation. Paper and live databases are separate; paper positions do not become live positions.

Runtime: 2Signals 0.2.0 / Freqtrade 2026.6. Consult the matching runtime documentation before upgrades. The current upstream Freqtrade documentation may describe newer versions.