一个可扩展的量化交易框架(Python),主要面向:
- 美股(默认,支持 Alpaca 实盘/模拟盘接口)
- 港股(支持
sim模拟券商,futu可选接入)
当前提供:
- 配置驱动(环境变量)
- 5种可选策略(均线/RSI/布林/突破/MACD)
- 历史数据回测(Yahoo Finance)
- 实盘执行模块骨架(可继续扩展为完整交易系统)
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt启动图形界面(Web GUI):
streamlit run app_gui.pyGUI 支持:
- 参数配置并一键保存到
.env - 一键执行回测(展示收益/回撤/交易次数与净值曲线)
- 回测结果一键导出 CSV
- 回测买卖点标注图(BUY/SELL)
- 一键执行实盘单次周期(建议先
DRY_RUN=true) - 一键启动/停止定时实盘(live_loop)
- 查看
logs/live_trades.csv最近日志
复制配置模板:
copy .env.example .env关键字段:
APP_MODE=backtest/live/live_loopMARKET=US或HKSYMBOLS=AAPL,MSFT(港股可写0700/0700.HK)DRY_RUN=true可开启模拟下单(仅记录计划交易,不真实发单)HK_BROKER=sim或futuSTRATEGY_NAME=ma_cross(可选:ma_cross/rsi_reversion/bollinger_reversion/breakout/macd_cross)
市场-标的校验规则:
US只允许美股代码(如AAPL),不允许纯数字或.HKHK只允许港股数字代码(如0700/9988/0700.HK)
python src/main.py示例输出:
[BACKTEST] AAPL return=xx.xx% max_dd=-xx.xx% trades=xx
- 填入
.env的ALPACA_API_KEY/ALPACA_SECRET_KEY - 设置
APP_MODE=live - 可设置风控参数:
LIVE_QTY_PER_TRADE:每个标的目标持仓股数MAX_NOTIONAL_PER_TRADE:单次调仓最大名义金额ALLOW_SHORT:是否允许做空(默认 false)
- 运行:
python src/main.py如需先验证行为不下真实单,可设置:
DRY_RUN=true实盘周期会:
- 拉取近 1 年日线,按双均线生成目标仓位(1=持有,0=空仓)
- 读取当前 Alpaca 持仓并自动补齐仓位差
- 支持持仓级止损/止盈(按持仓均价与最新价计算)
- 超过风控阈值时阻止下单
- 买入前检查账户购买力(Buying Power)
- 支持日内最大亏损熔断(触发后仅允许清仓)
- 写入日志到
logs/live_trades.csv - 默认仅在交易时段运行(美股通过 Alpaca 市场时钟判断,覆盖节假日)
- 失败自动重试,并支持 webhook 告警
可选增强参数:
ENABLE_MARKET_HOURS_CHECK=true:仅在交易时段执行LIVE_MAX_RETRIES=3:单次执行失败重试次数ALERT_WEBHOOK_URL=:告警 webhook(如企业微信/飞书/Slack 机器人)MIN_BUYING_POWER_BUFFER=100:购买力安全缓冲(美元)STOP_LOSS_PCT=0.03:单标的止损阈值(3%)TAKE_PROFIT_PCT=0.08:单标的止盈阈值(8%)MAX_DAILY_LOSS_PCT=0.02:日内亏损熔断阈值(2%)DRY_RUN=false:是否仅模拟下单(true 时只记录日志,不提交订单)
设置:
APP_MODE=live_loop
LIVE_INTERVAL_MINUTES=15启动后程序会持续每隔指定分钟运行一次实盘周期。
- 默认
HK_BROKER=sim:可直接运行港股实盘流程(本地模拟券商,便于测试) - 如需接入富途,设置
HK_BROKER=futu,并在broker/futu_broker.py中接入 futu-api 与 OpenD。
- 增加风控(单笔风险、最大回撤熔断、交易时段检查)
- 增加交易成本模型(手续费、滑点)
- 增加多策略与组合管理
- 接入数据库记录订单、成交、净值与日志
- 用任务调度器(Windows 任务计划或 cron)定时执行 live 周期