#!/bin/bash
# Freqtrade 一键启动脚本
# 自动启动 Freqtrade 交易机器人
set -e # 遇到错误立即退出
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# 日志函数
log_info() {
echo -e "${BLUE}[INFO]${NC} $1"
}
log_success() {
echo -e "${GREEN}[SUCCESS]${NC} $1"
}
log_warning() {
echo -e "${YELLOW}[WARNING]${NC} $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# 获取脚本所在目录
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"
log_info "Freqtrade 启动脚本开始执行..."
log_info "当前目录: $SCRIPT_DIR"
# 检查 Python 版本
log_info "检查 Python 版本..."
PYTHON_VERSION=$(python3 --version 2>&1 | cut -d' ' -f2)
log_info "Python 版本: $PYTHON_VERSION"
# 检查 Freqtrade 是否已安装
log_info "检查 Freqtrade 安装状态..."
if python3 -c "import freqtrade" 2>/dev/null; then
log_success "Freqtrade 已安装"
else
log_warning "Freqtrade 未安装,正在安装依赖..."
pip install -r requirements.txt
fi
# 检查配置文件
CONFIG_FILE="user_data/config.json"
if [ ! -f "$CONFIG_FILE" ]; then
log_error "配置文件 $CONFIG_FILE 不存在!"
log_info "请先运行: freqtrade new-config"
exit 1
fi
log_success "找到配置文件: $CONFIG_FILE"
# 检查策略文件
STRATEGY=$(python3 -c "import json; print(json.load(open('$CONFIG_FILE'))['strategy'])" 2>/dev/null || echo "")
if [ -n "$STRATEGY" ]; then
STRATEGY_FILE="user_data/strategies/${STRATEGY}.py"
if [ -f "$STRATEGY_FILE" ]; then
log_success "找到策略文件: $STRATEGY_FILE"
else
log_warning "策略文件 $STRATEGY_FILE 不存在"
fi
fi
# 创建必要的目录
log_info "检查并创建必要目录..."
mkdir -p user_data/logs
mkdir -p user_data/data
mkdir -p user_data/backtest_results
# 检查是否有历史数据
DATA_DIR="user_data/data"
if [ -d "$DATA_DIR" ] && [ "$(ls -A $DATA_DIR 2>/dev/null)" ]; then
log_success "找到历史数据"
else
log_warning "未找到历史数据,建议先下载数据"
log_info "可以运行: freqtrade download-data --exchange binance --pairs BTC/USDT ETH/USDT --timeframes 5m 1h"
fi
# 启动选项菜单
echo
log_info "请选择启动模式:"
echo "1) 实盘交易 (Live Trading)"
echo "2) 模拟交易 (Dry Run)"
echo "3) 回测模式 (Backtesting)"
echo "4) Web 界面 (WebServer)"
echo "5) 策略优化 (Hyperopt)"
echo "6) 查看配置"
echo "7) 下载数据"
echo "0) 退出"
read -p "请输入选择 (0-7): " choice
case $choice in
1)
log_info "启动实盘交易模式..."
log_warning "警告:这是实盘交易,请确保配置正确!"
read -p "确认启动实盘交易?(y/N): " confirm
if [[ $confirm =~ ^[Yy]$ ]]; then
python3 -m freqtrade trade --config "$CONFIG_FILE" --logfile user_data/logs/freqtrade.log
else
log_info "取消启动"
fi
;;
2)
log_info "启动模拟交易模式..."
python3 -m freqtrade trade --config "$CONFIG_FILE" --dry-run --logfile user_data/logs/freqtrade_dry.log
;;
3)
log_info "启动回测模式..."
read -p "请输入回测时间范围,例如 20240101-20240131 (回车使用默认): " timerange
if [ -n "$timerange" ]; then
python3 -m freqtrade backtesting --config "$CONFIG_FILE" --timerange "$timerange"
else
python3 -m freqtrade backtesting --config "$CONFIG_FILE"
fi
;;
4)
log_info "启动 Web 界面..."
log_info "Web 界面将在 http://localhost:8080 启动"
log_info "默认用户名: freqtrader, 密码: freqtrader"
python3 -m freqtrade webserver --config "$CONFIG_FILE"
;;
5)
log_info "启动策略优化..."
log_warning "这可能需要很长时间..."
python3 -m freqtrade hyperopt --config "$CONFIG_FILE" --hyperopt-loss SharpeHyperOptLoss --epochs 100
;;
6)
log_info "显示当前配置..."
python3 -m freqtrade show-config --config "$CONFIG_FILE"
;;
7)
log_info "下载历史数据..."
log_info "下载 BTC/USDT ETH/USDT 的 3m 15m 1h 数据..."
python3 -m freqtrade download-data --exchange binance --pairs BTC/USDT ETH/USDT --timeframes 3m 15m 1h --days 30
log_success "数据下载完成"
;;
0)
log_info "退出脚本"
exit 0
;;
*)
log_error "无效选择"
exit 1
;;
esac
log_success "脚本执行完成!"
For further actions, you may consider blocking this person and/or reporting abuse
Top comments (0)