加密货币量化起步之- 在1pannel上部署freqtrade

加密货币量化起步之- 在1pannel上部署freqtrade

Freqtrade是什么

Freqtrade 是一个开源、免费的加密货币量化交易机器人,通俗地说就是一个你教它“什么时候买、什么时候卖”,它就能24 小时不间断自动帮你交易的程序,主要用于币圈现货或合约交易,支持 Binance、OKX、Bybit 等主流交易所。

你只需要用比较直观的规则(比如 RSI 超卖买入、均线金叉进场、达到止盈止损就退出)写成策略,它就会严格照着执行,不会情绪化、不手滑、不睡觉;在真正用真钱之前,它可以先用历史行情做回测,看看过去如果用这套策略大概是赚还是亏,也可以先开模拟盘跑一段时间,确认没问题再切换到实盘。

Freqtrade 的优点是完全开源、可控性强、风控功能齐全,比如限制单笔仓位、最大亏损、强制止损等,适合想长期、纪律化交易、又不想从零造轮子的人,但要明白它不是装上就能赚钱的神器,策略写得不好一样会亏,只是把“人做交易”变成“机器严格执行规则”,本质上是一个执行工具,而不是自动印钱机器。

部署Freqtrade

环境:debian 12 64位  ,安装了1pannel面板

初始化目录和配置文件

SSH登录主机,创建文件夹

mkdir -p /opt/freqtrade/ft_userdata
cd /opt/freqtrade

执行初始化命令(这会拉取镜像并引导你生成配置):

docker run --rm -it \
  -v $(pwd)/ft_userdata:/freqtrade/user_data \
  freqtradeorg/freqtrade:stable \
  new-config --config user_data/config.json

问题:

  • Do you want to enable Dry-run (simulation mode)? -> y (先模拟,安全)
  • Please insert your stake currency: -> USDT (推荐)
  • Please insert your stake amount: -> 1000 (模拟资金量)
  • Please insert max_open_trades(最大持仓数量):3
  • Time (Use arrow keys) (K线周期听谁的?)
    » Have the strategy define timeframe.
    Override in configuration.  选择Have the strategy define timeframe (听策略的)
  • Please insert your display Currency for reporting (leave empty to disable FIAT conversion): (你用什么法币来做计算单位):USD
  • Exchange: -> binance (或者你要用的交易所)
  • ? Do you want to trade Perpetual Swaps (perpetual futures)? (是否要交易合约)(y/N)  y
  • Do you want to enable Telegram? -> n (先跳过,后面再配)
  • ? Do you want to enable the Rest API (includes FreqUI)? (y/N)  y (一定要选 y,不然没界面)
  • API server listen address: -> 0.0.0.0 (注意!这里一定要填 0.0.0.0,默认的 127.0.0.1 在 Docker 容器里会导致你无法从外部访问)
  • API server username: -> 设置你的账号
  • API server password: -> 设置你的密码

创建一个系统文件

  • 打开文件管理器

    • 回到 1Panel 面板。

    • 点击左侧 「系统」 -> 「文件」

    • 进入目录:/opt/freqtrade/ft_userdata/strategies (如果你改过路径,请去你挂载的目录)。

    • 你会发现这里可能是空的,或者只有 .pyc 文件。

  • 创建文件

    • 点击 「创建」 -> 「创建文件」

    • 文件名输入:SampleStrategy.py (注意大小写,必须完全一致)。

    • 点击确认。

  • 填入代码

    • 找到刚才创建的 SampleStrategy.py,点击 「编辑」

    • 复制并粘贴 下面这段最基础的官方示例策略代码:

    • # pragma pylint: disable=missing-docstring, invalid-name, pointless-string-statement
      # flake8: noqa: F401
      # isort: skip_file
      # --- Do not remove these libs ---
      import numpy as np
      import pandas as pd
      from pandas import DataFrame
      from freqtrade.strategy import (IStrategy, IntParameter)
      
      # --- Define the class ---
      class SampleStrategy(IStrategy):
          # 策略的最小 ROI (投资回报率) 设置
          # 当收益达到对应百分比时,持仓多久后卖出
          minimal_roi = {
              "60": 0.01,  # 持仓60分钟后,收益1%就卖
              "30": 0.02,  # 持仓30分钟后,收益2%就卖
              "0":  0.04   # 持仓0分钟后,收益4%就卖
          }
      
          # 止损设置 (当前价格低于买入价 10% 止损)
          stoploss = -0.10
      
          # K线周期
          timeframe = '5m'
      
          # 定义指标参数
          buy_rsi = IntParameter(10, 40, default=30, space="buy")
          sell_rsi = IntParameter(70, 100, default=70, space="sell")
      
          def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
              """
              计算技术指标
              """
              # 计算 RSI
              import talib.abstract as ta
              dataframe['rsi'] = ta.RSI(dataframe)
              return dataframe
      
          def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
              """
              买入逻辑
              """
              dataframe.loc[
                  (
                      (dataframe['rsi'] < self.buy_rsi.value) &  # RSI 小于 30
                      (dataframe['volume'] > 0)  # 且有成交量
                  ),
                  'enter_long'] = 1  # 发出买入信号
      
              return dataframe
      
          def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
              """
              卖出逻辑
              """
              dataframe.loc[
                  (
                      (dataframe['rsi'] > self.sell_rsi.value) &  # RSI 大于 70
                      (dataframe['volume'] > 0)
                  ),
                  'exit_long'] = 1  # 发出卖出信号
      
              return dataframe

      点击编辑器右下角的 「确认」 保存文件。

20251224131444346-图片

在 1Panel 中创建容器编排

现在配置文件已经生成在 /opt/freqtrade/ft_userdata 里了,我们可以正式让它在后台运行。

  1. 打开 1Panel 左侧 「容器」 -> 「编排」 -> 「创建编排」

  2. 名称填写:freqtrade

  3. 内容(Docker Compose)直接复制粘贴下面的代码:

version: '3'
services:
  freqtrade:
    image: freqtradeorg/freqtrade:stable
    restart: unless-stopped
    container_name: freqtrade
    volumes:
      - /opt/freqtrade/ft_userdata:/freqtrade/user_data
    ports:
      - "8080:8080"
    # 默认命令是运行交易模式
    command: >
      trade
      --logfile /freqtrade/user_data/logs/freqtrade.log
      --db-url sqlite:////freqtrade/user_data/tradesv3.sqlite
      --config /freqtrade/user_data/config.json
      --strategy SampleStrategy

验证安装

浏览器打开:http:// 你的主机ip地址:8080 ,出现webui界面 即可

 

Freqtrade 的用法

我将后续更新在社区内,链接直达

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容