返回顶部
r

rqalphaRQAlpha回测框架

RQAlpha 米筐开源事件驱动回测框架 - 支持A股和期货,模块化架构,可自由扩展。

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.2
安全检测
已通过
291
下载量
免费
免费
1
收藏
概述
安装方式
版本历史

rqalpha

RQAlpha(米筐开源回测框架)

RQAlpha米筐科技 开发的开源事件驱动回测框架。提供A股和期货市场的策略开发、回测和模拟交易完整解决方案。高度模块化,支持插件(Mod)系统扩展。

Docs: https://rqalpha.readthedocs.io/

安装

bash
pip install rqalpha

下载内置数据包(A股日线数据)

rqalpha download-bundle

策略结构

python
def init(context):
策略启动时调用一次 — 设置订阅和参数
context.stock = 000001.XSHE
context.fired = False

def handlebar(context, bardict):
每根K线调用 — 主要交易逻辑
if not context.fired:
order_shares(context.stock, 1000)
context.fired = True

def before_trading(context):
每个交易日开盘前调用
pass

def after_trading(context):
每个交易日收盘后调用
pass

运行回测

命令行

bash
rqalpha run \
-f strategy.py \
-s 2024-01-01 \
-e 2024-06-30 \
--account stock 100000 \
--benchmark 000300.XSHG \
--plot

Python API

python
from rqalpha.api import *
from rqalpha import run_func

config = {
base: {
start_date: 2024-01-01,
end_date: 2024-06-30,
accounts: {stock: 100000},
benchmark: 000300.XSHG,
frequency: 1d,
},
extra: {
log_level: warning,
},
mod: {
sys_analyser: {enabled: True, plot: True},
},
}

result = runfunc(init=init, handlebar=handle_bar, config=config)
print(result)



代码格式


市场后缀示例
上海A股.XSHG600000.XSHG(浦发银行)
深圳A股
.XSHE | 000001.XSHE(平安银行) |
| 指数 | .XSHG/.XSHE | 000300.XSHG(沪深300) |
| 期货 | .XSGE/.XDCE/.XZCE/.CCFX | IF2401.CCFX(沪深300期货) |


下单函数

python

按股数买卖


order_shares(000001.XSHE, 1000) # 买入1000股
order_shares(000001.XSHE, -500) # 卖出500股

按手买入(1手=100股)

order_lots(000001.XSHE, 10) # 买入10手(1000股)

按金额买入

order_value(000001.XSHE, 50000) # 买入5万元

按组合比例买入

order_percent(000001.XSHE, 0.5) # 买入组合值50%的仓位

目标仓位

ordertargetvalue(000001.XSHE, 100000) # 调整到10万元 ordertargetpercent(000001.XSHE, 0.3) # 调整到组合的30%

撤单

cancelorder(orderid)

数据查询函数

python
def handlebar(context, bardict):
# 当前K线数据
bar = bar_dict[000001.XSHE]
price = bar.close
volume = bar.volume
dt = bar.datetime

# 历史数据(返回DataFrame)
prices = historybars(000001.XSHE, barcount=20, frequency=1d,
fields=[close, volume, open, high, low])

# 检查股票是否可交易
tradable = isvalidprice(bar.close)

# 检查是否停牌
suspended = is_suspended(000001.XSHE)

投资组合与持仓

python
def handlebar(context, bardict):
# 组合信息
cash = context.portfolio.cash # 可用资金
total = context.portfolio.total_value # 总资产
marketvalue = context.portfolio.marketvalue # 持仓市值
pnl = context.portfolio.pnl # 总盈亏
returns = context.portfolio.daily_returns # 日收益率

# 持仓信息
positions = context.portfolio.positions
for stock, pos in positions.items():
print(f{stock}: quantity={pos.quantity},
fsellable={pos.sellable},
favgprice={pos.avgprice:.2f},
fmarketvalue={pos.marketvalue:.2f},
fpnl={pos.pnl:.2f})

定时调度

python
from rqalpha.api import *

def init(context):
# 每个交易日指定时间运行函数
scheduler.rundaily(rebalance, timerule=market_open(minute=5))
# 每周运行(每周一)
scheduler.runweekly(weeklytask, tradingday=1, timerule=marketopen(minute=5))
# 每月运行(首个交易日)
scheduler.runmonthly(monthlytask, tradingday=1, timerule=marketopen(minute=5))

def rebalance(context, bar_dict):
pass



Mod系统(插件)

RQAlpha的模块化架构允许通过Mod扩展功能:

python
config = {
mod: {
sys_analyser: {
enabled: True,
plot: True,
benchmark: 000300.XSHG,
},
sys_simulation: {
enabled: True,
matchingtype: currentbar, # 撮合方式:currentbar或nextbar
slippage: 0.01, # 滑点(元)
},
systransactioncost: {
enabled: True,
commission_rate: 0.0003, # 手续费率
tax_rate: 0.001, # 印花税(仅卖出)
min_commission: 5, # 最低手续费
},
},
}

可用内置Mod

Mod说明
sysanalyser绩效分析和图表绘制
syssimulation
撮合模拟 | | systransactioncost | 手续费和税费计算 | | sys_accounts | 账户管理 | | sys_benchmark | 基准追踪 | | sys_progress | 进度条显示 | | sys_risk | 风险管理检查 |

进阶示例

双均线交叉策略

python
import numpy as np
from rqalpha.api import *

def init(context):
context.stock = 600000.XSHG
context.fast = 5
context.slow = 20
scheduler.rundaily(tradelogic, timerule=marketopen(minute=5))

def tradelogic(context, bardict):
prices = history_bars(context.stock, context.slow + 1, 1d, fields=[close])
if len(prices) < context.slow:
return

closes = prices[close]
fast_ma = np.mean(closes[-context.fast:])
slow_ma = np.mean(closes[-context.slow:])

pos = context.portfolio.positions.get(context.stock)
has_position = pos is not None and pos.quantity > 0

if fastma > slowma and not has_position:
ordertargetpercent(context.stock, 0.9)
logger.info(fBUY: fastma={fastma:.2f} > slowma={slowma:.2f})
elif fastma < slowma and has_position:
ordertargetpercent(context.stock, 0)
logger.info(fSELL: fastma={fastma:.2f} < slowma={slowma:.2f})

def handlebar(context, bardict):
pass

多股等权重调仓

python
from rqalpha.api import *

def init(context):
context.stocks = [600000.XSHG, 000001.XSHE, 601318.XSHG,
600036.XSHG, 000858.XSHE]
scheduler.runmonthly(rebalance, tradingday=1, timerule=market_open(minute=30))

def rebalance(context

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 rqalpha-1776114134 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 rqalpha-1776114134 技能

通过命令行安装

skillhub install rqalpha-1776114134

下载

⬇ 下载 rqalpha v1.0.2(免费)

文件大小: 10.23 KB | 发布时间: 2026-4-15 14:13

v1.0.2 最新 2026-4-15 14:13
- Added example directory demo_project with sample files.
- Included demo_project/README.md for documentation of the example project.
- Provided demo_project/demo.py as a code example for quickstart or demonstration purposes.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部