{"id":"6278ff39-a773-4272-a97a-9e8bd69f26ba","shortId":"kCuhP4","kind":"skill","title":"rqalpha","tagline":"RQAlpha 米筐开源事件驱动回测框架。支持A股和期货，模块化架构，可自由扩展；当用户需要使用 rqalpha 进行策略回测、模拟交易或Mod插件开发时使用。","description":"# RQAlpha（米筐开源回测框架）\n\n[RQAlpha](https://github.com/ricequant/rqalpha) 是 [米筐科技](https://www.ricequant.com) 开发的开源事件驱动回测框架。提供A股和期货市场的策略开发、回测和模拟交易完整解决方案。高度模块化，支持插件（Mod）系统扩展。\n\n> 文档：https://rqalpha.readthedocs.io\n\n## 安装\n\n```bash\npip install rqalpha\n\n# 下载内置数据包（A股日线数据）\nrqalpha download-bundle\n\n# 验证安装\npython -c \"import rqalpha; print(rqalpha.__version__)\"\n```\n\n## 策略结构\n\n```python\nfrom rqalpha.api import *  # 导入所有 API 函数（含 logger）\n\ndef init(context):\n    \"\"\"策略启动时调用一次 — 设置订阅和参数\"\"\"\n    context.stock = '000001.XSHE'\n    context.fired = False\n\ndef handle_bar(context, bar_dict):\n    \"\"\"每根K线调用 — 主要交易逻辑\"\"\"\n    if not context.fired:\n        order_shares(context.stock, 1000)\n        context.fired = True\n        logger.info('买入完成')  # logger 通过 from rqalpha.api import * 自动可用\n\ndef before_trading(context):\n    \"\"\"每个交易日开盘前调用\"\"\"\n    pass\n\ndef after_trading(context):\n    \"\"\"每个交易日收盘后调用\"\"\"\n    pass\n```\n\n> **注意**：`from rqalpha.api import *` 会自动导入 `logger`，可直接使用 `logger.info()`、`logger.warn()`、`logger.error()` 输出日志。\n\n## 运行回测\n\n### 命令行\n\n```bash\nrqalpha run \\\n    -f strategy.py \\\n    -s 2024-01-01 \\\n    -e 2024-06-30 \\\n    --account stock 100000 \\\n    --benchmark 000300.XSHG \\\n    --plot\n```\n\n### Python API\n\n```python\nfrom rqalpha.api import *\nfrom rqalpha import run_func\n\nconfig = {\n    \"base\": {\n        \"start_date\": \"2024-01-01\",\n        \"end_date\": \"2024-06-30\",\n        \"accounts\": {\"stock\": 100000},\n        \"benchmark\": \"000300.XSHG\",\n        \"frequency\": \"1d\",\n    },\n    \"extra\": {\n        \"log_level\": \"warning\",\n    },\n    \"mod\": {\n        \"sys_analyser\": {\"enabled\": True, \"plot\": True},\n    },\n}\n\nresult = run_func(init=init, handle_bar=handle_bar, config=config)\nprint(result)\n```\n\n---\n\n## 代码格式\n\n| 市场 | 后缀 | 示例 |\n|---|---|---|\n| 上海A股 | `.XSHG` | `600000.XSHG`（浦发银行） |\n| 深圳A股 | `.XSHE` | `000001.XSHE`（平安银行） |\n| 指数 | `.XSHG/.XSHE` | `000300.XSHG`（沪深300） |\n| 期货 | `.XSGE/.XDCE/.XZCE/.CCFX` | `IF2401.CCFX`（沪深300期货） |\n\n---\n\n## 下单函数\n\n### 股票下单\n\n```python\n# 按股数买卖\norder_shares('000001.XSHE', 1000)       # 买入1000股\norder_shares('000001.XSHE', -500)       # 卖出500股\n\n# 按手买入（1手=100股）\norder_lots('000001.XSHE', 10)           # 买入10手（1000股）\n\n# 按金额买入\norder_value('000001.XSHE', 50000)       # 买入5万元\n\n# 按组合比例买入\norder_percent('000001.XSHE', 0.5)       # 买入组合值50%的仓位\n\n# 目标仓位\norder_target_value('000001.XSHE', 100000)   # 调整到10万元\norder_target_percent('000001.XSHE', 0.3)    # 调整到组合的30%\n\n# 撤单\ncancel_order(order_id)\n```\n\n### 期货下单\n\n```python\n# 开仓\nbuy_open('IF2401.CCFX', 1)              # 买入开多1手\nsell_open('IF2401.CCFX', 1)             # 卖出开空1手\n\n# 平仓\nsell_close('IF2401.CCFX', 1)            # 卖出平多1手\nbuy_close('IF2401.CCFX', 1)             # 买入平空1手\n```\n\n## 数据查询函数\n\n```python\ndef handle_bar(context, bar_dict):\n    # 当前K线数据\n    bar = bar_dict['000001.XSHE']\n    price = bar.close\n    volume = bar.volume\n    dt = bar.datetime\n\n    # 历史数据（返回DataFrame）\n    prices = history_bars('000001.XSHE', bar_count=20, frequency='1d',\n                          fields=['close', 'volume', 'open', 'high', 'low'])\n\n    # 检查股票是否可交易\n    tradable = is_valid_price(bar.close)\n\n    # 检查是否停牌\n    suspended = is_suspended('000001.XSHE')\n```\n\n## 投资组合与持仓\n\n```python\ndef handle_bar(context, bar_dict):\n    # 组合信息\n    cash = context.portfolio.cash                    # 可用资金\n    total = context.portfolio.total_value            # 总资产\n    market_value = context.portfolio.market_value    # 持仓市值\n    pnl = context.portfolio.pnl                      # 总盈亏\n    returns = context.portfolio.daily_returns        # 日收益率\n\n    # 持仓信息\n    positions = context.portfolio.positions\n    for stock, pos in positions.items():\n        print(f'{stock}: quantity={pos.quantity}, '\n              f'sellable={pos.sellable}, '\n              f'avg_price={pos.avg_price:.2f}, '\n              f'market_value={pos.market_value:.2f}, '\n              f'pnl={pos.pnl:.2f}')\n```\n\n## 定时调度\n\n```python\nfrom rqalpha.api import *\n\ndef init(context):\n    # 每个交易日指定时间运行函数\n    scheduler.run_daily(rebalance, time_rule=market_open(minute=5))\n    # 每周运行（每周一）\n    scheduler.run_weekly(weekly_task, tradingday=1, time_rule=market_open(minute=5))\n    # 每月运行（首个交易日）\n    scheduler.run_monthly(monthly_task, tradingday=1, time_rule=market_open(minute=5))\n\ndef rebalance(context, bar_dict):\n    pass\n```\n\n---\n\n## Mod系统（插件）\n\nRQAlpha的模块化架构允许通过Mod扩展功能：\n\n```python\nconfig = {\n    \"mod\": {\n        \"sys_analyser\": {\n            \"enabled\": True,\n            \"plot\": True,\n            \"benchmark\": \"000300.XSHG\",\n        },\n        \"sys_simulation\": {\n            \"enabled\": True,\n            \"matching_type\": \"current_bar\",    # 撮合方式：current_bar（当前Bar）或 next_bar（下一Bar）\n            \"slippage\": 0.01,                  # 滑点（元）\n        },\n        \"sys_transaction_cost\": {\n            \"enabled\": True,\n            \"commission_rate\": 0.0003,         # 手续费率\n            \"tax_rate\": 0.001,                 # 印花税（仅卖出）\n            \"min_commission\": 5,               # 最低手续费\n        },\n    },\n}\n```\n\n### 可用内置Mod\n\n| Mod | 说明 |\n|---|---|\n| `sys_analyser` | 绩效分析和图表绘制 |\n| `sys_simulation` | 撮合模拟 |\n| `sys_transaction_cost` | 手续费和税费计算 |\n| `sys_accounts` | 账户管理 |\n| `sys_benchmark` | 基准追踪 |\n| `sys_progress` | 进度条显示 |\n| `sys_risk` | 风险管理检查 |\n\n---\n\n## 进阶示例\n\n### 双均线交叉策略\n\n```python\nimport numpy as np\nfrom rqalpha.api import *\n\ndef init(context):\n    context.stock = '600000.XSHG'\n    context.fast = 5\n    context.slow = 20\n    scheduler.run_daily(trade_logic, time_rule=market_open(minute=5))\n\ndef trade_logic(context, bar_dict):\n    prices = history_bars(context.stock, context.slow + 1, '1d', fields=['close'])\n    if len(prices) < context.slow:\n        return\n\n    closes = prices['close']\n    fast_ma = np.mean(closes[-context.fast:])\n    slow_ma = np.mean(closes[-context.slow:])\n\n    pos = context.portfolio.positions.get(context.stock)\n    has_position = pos is not None and pos.quantity > 0\n\n    if fast_ma > slow_ma and not has_position:\n        order_target_percent(context.stock, 0.9)\n        logger.info(f'买入: 快线={fast_ma:.2f} > 慢线={slow_ma:.2f}')\n    elif fast_ma < slow_ma and has_position:\n        order_target_percent(context.stock, 0)\n        logger.info(f'卖出: 快线={fast_ma:.2f} < 慢线={slow_ma:.2f}')\n\ndef handle_bar(context, bar_dict):\n    pass\n```\n\n### 多股等权重调仓\n\n```python\nfrom rqalpha.api import *\n\ndef init(context):\n    context.stocks = ['600000.XSHG', '000001.XSHE', '601318.XSHG',\n                       '600036.XSHG', '000858.XSHE']\n    scheduler.run_monthly(rebalance, tradingday=1, time_rule=market_open(minute=30))\n\ndef rebalance(context, bar_dict):\n    # 卖出不在目标列表中的股票\n    for stock in list(context.portfolio.positions.keys()):\n        if stock not in context.stocks:\n            order_target_percent(stock, 0)\n\n    # 等权分配\n    weight = 0.95 / len(context.stocks)\n    for stock in context.stocks:\n        if not is_suspended(stock):\n            order_target_percent(stock, weight)\n            logger.info(f'调仓: {stock} -> {weight:.1%}')\n\ndef handle_bar(context, bar_dict):\n    pass\n```\n\n### RSI均值回归策略\n\n```python\nimport numpy as np\nfrom rqalpha.api import *\n\ndef init(context):\n    context.stock = '000001.XSHE'\n    context.rsi_period = 14\n    context.oversold = 30\n    context.overbought = 70\n\ndef handle_bar(context, bar_dict):\n    prices = history_bars(context.stock, context.rsi_period + 2, '1d', fields=['close'])\n    if len(prices) < context.rsi_period + 1:\n        return\n\n    closes = prices['close']\n    deltas = np.diff(closes)\n    gains = np.where(deltas > 0, deltas, 0)\n    losses = np.where(deltas < 0, -deltas, 0)\n    avg_gain = np.mean(gains[-context.rsi_period:])\n    avg_loss = np.mean(losses[-context.rsi_period:])\n\n    if avg_loss == 0:\n        rsi = 100\n    else:\n        rsi = 100 - 100 / (1 + avg_gain / avg_loss)\n\n    pos = context.portfolio.positions.get(context.stock)\n    has_pos = pos is not None and pos.quantity > 0\n\n    if rsi < context.oversold and not has_pos:\n        order_target_percent(context.stock, 0.9)\n        logger.info(f'RSI={rsi:.1f} 超卖买入')\n    elif rsi > context.overbought and has_pos:\n        order_target_percent(context.stock, 0)\n        logger.info(f'RSI={rsi:.1f} 超买卖出')\n```\n\n### 止损止盈策略\n\n```python\nfrom rqalpha.api import *\nimport numpy as np\n\ndef init(context):\n    context.stock = '600519.XSHG'\n    context.entry_price = 0\n    context.stop_loss = 0.05\n    context.take_profit = 0.15\n    scheduler.run_daily(trade, time_rule=market_open(minute=5))\n\ndef trade(context, bar_dict):\n    bar = bar_dict[context.stock]\n    price = bar.close\n    prices = history_bars(context.stock, 21, '1d', fields=['close'])\n    ma20 = np.mean(prices['close'][-20:])\n\n    pos = context.portfolio.positions.get(context.stock)\n    has_pos = pos is not None and pos.quantity > 0\n\n    if not has_pos:\n        if price > ma20:\n            order_target_percent(context.stock, 0.9)\n            context.entry_price = price\n            logger.info(f'买入: 价格={price:.2f}, 均线={ma20:.2f}')\n    else:\n        if context.entry_price > 0:\n            pnl = (price - context.entry_price) / context.entry_price\n            if pnl <= -context.stop_loss:\n                order_target_percent(context.stock, 0)\n                logger.info(f'止损: 收益率={pnl:.2%}')\n                context.entry_price = 0\n            elif pnl >= context.take_profit:\n                order_target_percent(context.stock, 0)\n                logger.info(f'止盈: 收益率={pnl:.2%}')\n                context.entry_price = 0\n\ndef handle_bar(context, bar_dict):\n    pass\n```\n\n### 期货双均线CTA策略\n\n```python\nimport numpy as np\nfrom rqalpha.api import *\n\ndef init(context):\n    context.symbol = 'IF2401.CCFX'\n    context.fast = 5\n    context.slow = 20\n\ndef handle_bar(context, bar_dict):\n    prices = history_bars(context.symbol, context.slow + 1, '1d', fields=['close'])\n    if len(prices) < context.slow:\n        return\n\n    closes = prices['close']\n    fast_ma = np.mean(closes[-context.fast:])\n    slow_ma = np.mean(closes[-context.slow:])\n    prev_fast = np.mean(closes[-context.fast-1:-1])\n    prev_slow = np.mean(closes[-context.slow-1:-1])\n\n    pos = context.portfolio.positions.get(context.symbol)\n    long_qty = pos.buy_quantity if pos else 0\n\n    if prev_fast <= prev_slow and fast_ma > slow_ma and long_qty == 0:\n        buy_open(context.symbol, 1)\n        logger.info(f'开多: 快线={fast_ma:.2f} > 慢线={slow_ma:.2f}')\n    elif prev_fast >= prev_slow and fast_ma < slow_ma and long_qty > 0:\n        sell_close(context.symbol, long_qty)\n        logger.info(f'平多: 快线={fast_ma:.2f} < 慢线={slow_ma:.2f}')\n```\n\n---\n\n## 绩效分析输出\n\n运行回测后，`sys_analyser` Mod会输出以下指标：\n\n| 指标 | 说明 |\n|------|------|\n| `total_returns` | 总收益率 |\n| `annualized_returns` | 年化收益率 |\n| `benchmark_total_returns` | 基准总收益率 |\n| `alpha` | Alpha值 |\n| `beta` | Beta值 |\n| `sharpe` | 夏普比率 |\n| `sortino` | Sortino比率 |\n| `max_drawdown` | 最大回撤 |\n| `tracking_error` | 跟踪误差 |\n| `information_ratio` | 信息比率 |\n| `volatility` | 波动率 |\n\n## 常见错误处理\n\n| 错误 | 原因 | 解决方法 |\n|------|------|----------|\n| `Bundle not found` | 未下载数据包 | 运行 `rqalpha download-bundle` |\n| `Insufficient cash` | 可用资金不足 | 检查 `context.portfolio.cash` |\n| `Order Creation Failed: suspended` | 股票停牌 | 用 `is_suspended()` 提前检查 |\n| `No data for instrument` | 股票代码错误 | 检查代码格式（如 `.XSHG` / `.XSHE`） |\n| `logger` 未定义 | 未导入 API | 确保 `from rqalpha.api import *` 在文件顶部 |\n\n## 使用技巧\n\n- RQAlpha 是纯本地框架，无云端依赖，适合离线研究。\n- 使用 `rqalpha download-bundle` 获取免费内置A股日线数据。\n- Mod 系统允许插入自定义数据源、券商接口和风控模块。\n- 实盘交易可通过 `rqalpha-mod-vnpy` 连接 vn.py 的券商网关。\n- 支持日线和分钟级回测。\n- 文档：https://rqalpha.readthedocs.io/\n\n## 规则\n\n- 使用此 Skill 前，确认用户明确需要 rqalpha 框架进行策略回测。若用户仅需数据获取，引导使用 baostock/pywencai 等数据 Skill。\n- 策略文件顶部必须包含 `from rqalpha.api import *`，以确保所有下单函数和 `logger` 可用。\n- 期货策略必须使用 `buy_open`/`sell_open`/`buy_close`/`sell_close`，不能使用股票的 `order_shares` 等函数。\n- 下单前应使用 `is_suspended()` 检查停牌状态，避免订单失败。\n- 股票代码必须带后缀（`.XSHG`/`.XSHE`/`.CCFX` 等），不能使用纯数字代码。","tags":["rqalpha","finance","quant","skills","lzwme","agent-skills"],"capabilities":["skill","source-lzwme","skill-rqalpha","topic-agent-skills","topic-skills"],"categories":["finance-quant-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/lzwme/finance-quant-skills/rqalpha","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add lzwme/finance-quant-skills","source_repo":"https://github.com/lzwme/finance-quant-skills","install_from":"skills.sh"}},"qualityScore":"0.469","qualityRationale":"deterministic score 0.47 from registry signals: · indexed on github topic:agent-skills · 39 github stars · SKILL.md body (11,696 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T18:58:29.021Z","embedding":null,"createdAt":"2026-05-09T01:05:18.925Z","updatedAt":"2026-05-18T18:58:29.021Z","lastSeenAt":"2026-05-18T18:58:29.021Z","tsv":"'-01':123,124,151,152 '-06':127,156 '-1':1069,1070,1076,1077 '-20':922 '-30':128,157 '-500':221 '/ricequant/rqalpha)':16 '0':596,634,698,784,786,790,792,808,831,860,883,934,963,978,987,996,1005,1088,1102,1131 '0.0003':487 '0.001':491 '0.01':477 '0.05':886 '0.15':889 '0.3':256 '0.5':242 '0.9':610,843,946 '0.95':701 '000001.xshe':63,199,215,220,228,235,241,249,255,299,311,333,663,744 '000300.xshg':133,162,203,459 '000858.xshe':666 '1':269,274,280,285,419,433,563,671,723,773,815,1042,1106 '10':229 '100':810,813,814 '1000':80,216 '100000':131,160,250 '1000股':231 '100股':225 '14':747 '1d':164,316,564,765,915,1043 '1f':848,865 '1手':224 '2':764,984,1002 '20':314,541,1030 '2024':122,126,150,155 '21':914 '2f':383,389,393,617,621,641,645,955,958,1113,1117,1143,1147 '30':677,749 '5':411,425,439,496,539,551,898,1028 '50000':236 '600000.xshg':195,537,662 '600036.xshg':665 '600519.xshg':880 '601318.xshg':664 '70':751 'account':129,158,512 'alpha':1165 'alpha值':1166 'analys':171,453,502,1151 'annual':1158 'api':53,136,1223 'avg':379,793,799,806,816,818 'a股日线数据':35 'baostock/pywencai':1263 'bar':68,70,182,184,291,293,296,297,310,312,338,340,443,467,470,474,556,560,648,650,681,726,728,754,756,760,902,904,905,912,1008,1010,1033,1035,1039 'bar.close':301,328,909 'bar.datetime':305 'bar.volume':303 'base':147 'bash':30,116 'benchmark':132,161,458,515,1161 'beta':1167 'beta值':1168 'bundl':39,1188,1196,1238 'buy':266,282,1103,1274,1278 'c':42 'cancel':259 'cash':343,1198 'ccfx':1294 'close':278,283,318,566,572,574,578,583,767,775,777,780,917,921,1045,1051,1053,1057,1062,1067,1074,1133,1279,1281 'commiss':485,495 'config':146,185,186,450 'context':59,69,94,100,292,339,401,442,535,555,649,660,680,727,742,755,878,901,1009,1024,1034 'context.entry':881,947,961,966,968,985,1003 'context.fast':538,579,1027,1058,1068 'context.fired':64,76,81 'context.overbought':750,852 'context.oversold':748,834 'context.portfolio.cash':344,1201 'context.portfolio.daily':359 'context.portfolio.market':352 'context.portfolio.pnl':356 'context.portfolio.positions':364 'context.portfolio.positions.get':586,821,924,1079 'context.portfolio.positions.keys':688 'context.portfolio.total':347 'context.rsi':745,762,771,797,803 'context.slow':540,562,570,584,1029,1041,1049,1063,1075 'context.stock':62,79,536,561,587,609,633,743,761,822,842,859,879,907,913,925,945,977,995 'context.stocks':661,693,703,707 'context.stop':884,972 'context.symbol':1025,1040,1080,1105,1134 'context.take':887,990 'cost':482,509 'count':313 'creation':1203 'current':466,469 'daili':404,543,891 'data':1212 'date':149,154 'def':57,66,91,97,289,336,399,440,533,552,646,658,678,724,740,752,876,899,1006,1022,1031 'delta':778,783,785,789,791 'dict':71,294,298,341,444,557,651,682,729,757,903,906,1011,1036 'download':38,1195,1237 'download-bundl':37,1194,1236 'drawdown':1174 'dt':304 'e':125 'elif':622,850,988,1118 'els':811,959,1087 'enabl':172,454,462,483 'end':153 'error':1177 'extra':165 'f':119,371,375,378,384,390,612,636,719,845,862,951,980,998,1108,1138 'fail':1204 'fals':65 'fast':575,598,615,623,639,1054,1065,1091,1095,1111,1120,1124,1141 'field':317,565,766,916,1044 'found':1190 'frequenc':163,315 'func':145,178 'gain':781,794,796,817 'github.com':15 'github.com/ricequant/rqalpha)':14 'handl':67,181,183,290,337,647,725,753,1007,1032 'high':321 'histori':309,559,759,911,1038 'id':262 'if2401.ccfx':207,268,273,279,284,1026 'import':43,51,89,106,140,143,398,526,532,657,733,739,871,872,1015,1021,1227,1269 'inform':1179 'init':58,179,180,400,534,659,741,877,1023 'instal':32 'instrument':1214 'insuffici':1197 'len':568,702,769,1047 'level':167 'list':687 'log':166 'logger':56,85,108,1220,1271 'logger.error':112 'logger.info':83,110,611,635,718,844,861,950,979,997,1107,1137 'logger.warn':111 'logic':545,554 'long':1081,1100,1129,1135 'loss':787,800,802,807,819,885,973 'lot':227 'low':322 'ma':576,581,599,601,616,620,624,626,640,644,1055,1060,1096,1098,1112,1116,1125,1127,1142,1146 'ma20':918,941,957 'market':350,385,408,422,436,548,674,895 'match':464 'max':1173 'min':494 'minut':410,424,438,550,676,897 'mod':25,169,451,499,1240,1246 'mod会输出以下指标':1152 'mod系统':446 'month':429,430,668 'next':473 'none':593,828,931 'np':529,736,875,1018 'np.diff':779 'np.mean':577,582,795,801,919,1056,1061,1066,1073 'np.where':782,788 'numpi':527,734,873,1016 'open':267,272,320,409,423,437,549,675,896,1104,1275,1277 'order':77,213,218,226,233,239,246,252,260,261,606,630,694,713,839,856,942,974,992,1202,1283 'pass':96,102,445,652,730,1012 'percent':240,254,608,632,696,715,841,858,944,976,994 'period':746,763,772,798,804 'pip':31 'plot':134,174,456 'pnl':355,391,964,971,983,989,1001 'pos':367,585,590,820,824,825,838,855,923,927,928,938,1078,1086 'pos.avg':381 'pos.buy':1083 'pos.market':387 'pos.pnl':392 'pos.quantity':374,595,830,933 'pos.sellable':377 'posit':363,589,605,629 'positions.items':369 'prev':1064,1071,1090,1092,1119,1121 'price':300,308,327,380,382,558,569,573,758,770,776,882,908,910,920,940,948,949,954,962,965,967,969,986,1004,1037,1048,1052 'print':45,187,370 'profit':888,991 'progress':518 'python':41,48,135,137,211,264,288,335,395,449,525,654,732,868,1014 'qti':1082,1101,1130,1136 'quantiti':373,1084 'rate':486,490 'ratio':1180 'rebal':405,441,669,679 'result':176,188 'return':358,360,571,774,1050,1156,1159,1163 'risk':521 'rqalpha':1,2,8,11,13,33,36,44,117,142,1193,1230,1235,1245,1259 'rqalpha-mod-vnpi':1244 'rqalpha.__version__':46 'rqalpha.api':50,88,105,139,397,531,656,738,870,1020,1226,1268 'rqalpha.readthedocs.io':28,1253 'rqalpha的模块化架构允许通过mod扩展功能':448 'rsi':809,812,833,846,847,851,863,864 'rsi均值回归策略':731 'rule':407,421,435,547,673,894 'run':118,144,177 'scheduler.run':403,414,428,542,667,890 'sell':271,277,1132,1276,1280 'sellabl':376 'share':78,214,219,1284 'sharp':1169 'simul':461,505 'skill':1256,1265 'skill-rqalpha' 'slippag':476 'slow':580,600,619,625,643,1059,1072,1093,1097,1115,1122,1126,1145 'sortino':1171 'sortino比率':1172 'source-lzwme' 'start':148 'stock':130,159,366,372,685,690,697,705,712,716,721 'strategy.py':120 'suspend':330,332,711,1205,1209,1288 'sys':170,452,460,480,501,504,507,511,514,517,520,1150 'target':247,253,607,631,695,714,840,857,943,975,993 'task':417,431 'tax':489 'time':406,420,434,546,672,893 'topic-agent-skills' 'topic-skills' 'total':346,1155,1162 'track':1176 'tradabl':324 'trade':93,99,544,553,892,900 'tradingday':418,432,670 'transact':481,508 'true':82,173,175,455,457,463,484 'type':465 'valid':326 'valu':234,248,348,351,353,386,388 'vn.py':1249 'vnpi':1247 'volatil':1182 'volum':302,319 'warn':168 'week':415,416 'weight':700,717,722 'www.ricequant.com':19 'xsge/.xdce/.xzce/.ccfx':206 'xshe':198,1219,1293 'xshg':194,1218,1292 'xshg/.xshe':202 '上海a股':193 '下一bar':475 '下单函数':209 '下单前应使用':1286 '下载内置数据包':34 '不能使用纯数字代码':1296 '不能使用股票的':1282 '主要交易逻辑':73 '买入':613,952 '买入1000股':217 '买入10手':230 '买入5万元':237 '买入完成':84 '买入平空1手':286 '买入开多1手':270 '买入组合值50':243 '仅卖出':493 '代码格式':189 '以确保所有下单函数和':1270 '价格':953 '会自动导入':107 '使用':1234 '使用技巧':1229 '使用此':1255 '信息比率':1181 '元':479 '函数':54 '券商接口和风控模块':1242 '前':1257 '卖出':637 '卖出500股':222 '卖出不在目标列表中的股票':683 '卖出平多1手':281 '卖出开空1手':275 '印花税':492 '历史数据':306 '原因':1186 '双均线交叉策略':524 '可用':1272 '可用内置mod':498 '可用资金':345 '可用资金不足':1199 '可直接使用':109 '可自由扩展':6 '后缀':191 '含':55 '命令行':115 '回测和模拟交易完整解决方案':22 '在文件顶部':1228 '均线':956 '基准总收益率':1164 '基准追踪':516 '夏普比率':1170 '多股等权重调仓':653 '如':1217 '安装':29 '定时调度':394 '实盘交易可通过':1243 '导入所有':52 '市场':190 '常见错误处理':1184 '平仓':276 '平多':1139 '平安银行':200 '年化收益率':1160 '开仓':265 '开发的开源事件驱动回测框架':20 '开多':1109 '引导使用':1262 '当前bar':471 '当前k线数据':295 '当用户需要使用':7 '快线':614,638,1110,1140 '总收益率':1157 '总盈亏':357 '总资产':349 '慢线':618,642,1114,1144 '或':472 '手续费和税费计算':510 '手续费率':488 '投资组合与持仓':334 '持仓信息':362 '持仓市值':354 '指数':201 '指标':1153 '按手买入':223 '按组合比例买入':238 '按股数买卖':212 '按金额买入':232 '提供a股和期货市场的策略开发':21 '提前检查':1210 '插件':447 '撤单':258 '撮合方式':468 '撮合模拟':506 '支持a股和期货':4 '支持插件':24 '支持日线和分钟级回测':1251 '收益率':982,1000 '数据查询函数':287 '文档':27,1252 '无云端依赖':1232 '日收益率':361 '是':17 '是纯本地框架':1231 '最低手续费':497 '最大回撤':1175 '期货':205 '期货下单':263 '期货双均线cta策略':1013 '期货策略必须使用':1273 '未下载数据包':1191 '未定义':1221 '未导入':1222 '框架进行策略回测':1260 '检查':1200 '检查代码格式':1216 '检查停牌状态':1289 '检查是否停牌':329 '检查股票是否可交易':323 '模块化架构':5 '模拟交易或mod插件开发时使用':10 '止损':981 '止损止盈策略':867 '止盈':999 '每个交易日开盘前调用':95 '每个交易日指定时间运行函数':402 '每个交易日收盘后调用':101 '每周一':413 '每周运行':412 '每月运行':426 '每根k线调用':72 '沪深300':204 '沪深300期货':208 '波动率':1183 '注意':103 '浦发银行':196 '深圳a股':197 '滑点':478 '用':1207 '的仓位':244 '的券商网关':1250 '目标仓位':245 '确保':1224 '确认用户明确需要':1258 '示例':192 '等':1295 '等函数':1285 '等数据':1264 '等权分配':699 '策略启动时调用一次':60 '策略文件顶部必须包含':1266 '策略结构':47 '米筐开源事件驱动回测框架':3 '米筐开源回测框架':12 '米筐科技':18 '系统允许插入自定义数据源':1241 '系统扩展':26 '组合信息':342 '绩效分析和图表绘制':503 '绩效分析输出':1148 '股票下单':210 '股票代码必须带后缀':1291 '股票代码错误':1215 '股票停牌':1206 '自动可用':90 '若用户仅需数据获取':1261 '获取免费内置a股日线数据':1239 '规则':1254 '解决方法':1187 '设置订阅和参数':61 '说明':500,1154 '调仓':720 '调整到10万元':251 '调整到组合的30':257 '账户管理':513 '超买卖出':866 '超卖买入':849 '跟踪误差':1178 '输出日志':113 '运行':1192 '运行回测':114 '运行回测后':1149 '返回datafram':307 '进度条显示':519 '进行策略回测':9 '进阶示例':523 '连接':1248 '适合离线研究':1233 '通过':86 '避免订单失败':1290 '错误':1185 '风险管理检查':522 '首个交易日':427 '验证安装':40 '高度模块化':23","prices":[{"id":"4a0a0b91-ec8c-4dfd-b3c1-4d5cf083a93f","listingId":"6278ff39-a773-4272-a97a-9e8bd69f26ba","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"lzwme","category":"finance-quant-skills","install_from":"skills.sh"},"createdAt":"2026-05-09T01:05:18.925Z"}],"sources":[{"listingId":"6278ff39-a773-4272-a97a-9e8bd69f26ba","source":"github","sourceId":"lzwme/finance-quant-skills/rqalpha","sourceUrl":"https://github.com/lzwme/finance-quant-skills/tree/main/skills/rqalpha","isPrimary":false,"firstSeenAt":"2026-05-09T01:05:18.925Z","lastSeenAt":"2026-05-18T18:58:29.021Z"}],"details":{"listingId":"6278ff39-a773-4272-a97a-9e8bd69f26ba","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"lzwme","slug":"rqalpha","github":{"repo":"lzwme/finance-quant-skills","stars":39,"topics":["agent-skills","skills"],"license":null,"html_url":"https://github.com/lzwme/finance-quant-skills","pushed_at":"2026-05-18T07:34:02Z","description":"一个面向金融量化交易领域的 Agent Skills 技能维护仓库，主要聚焦A股量化交易。","skill_md_sha":"9ee02d000e0cee59062ee5e96bcd59c9a35fcbeb","skill_md_path":"skills/rqalpha/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/lzwme/finance-quant-skills/tree/main/skills/rqalpha"},"layout":"multi","source":"github","category":"finance-quant-skills","frontmatter":{"name":"rqalpha","description":"RQAlpha 米筐开源事件驱动回测框架。支持A股和期货，模块化架构，可自由扩展；当用户需要使用 rqalpha 进行策略回测、模拟交易或Mod插件开发时使用。"},"skills_sh_url":"https://skills.sh/lzwme/finance-quant-skills/rqalpha"},"updatedAt":"2026-05-18T18:58:29.021Z"}}