2023andrewyang/fw-trading/fosun-trading/SKILL.md
Trade stocks (query price, check funds/holdings/cash flows, place/cancel orders) using Fosun OpenAPI SDK via command-line scripts. Supports HK (L2), US (L1), and A-share (Shanghai-HK/Shenzhen-HK Stock Connect, L1) markets. Supports limit and market order types. Use when the user wants to check stock prices, query account balance, check cash flow history, buy/sell stocks, or manage orders.
npx skillsauth add openclaw/skills fosun-tradingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
通过命令行脚本完成港股/美股/A 股(港股通)的行情查询、资金查询、资金流水查询、下单和订单管理。所有脚本位于 code/ 目录下。
fosun-sdk-setup skill)FSOPENAPI_SERVER_PUBLIC_KEY — 服务端公钥(PEM)FSOPENAPI_CLIENT_PRIVATE_KEY — 客户端私钥(PEM)FSOPENAPI_API_KEY — API Key(也可通过 --api-key 传入)FSOPENAPI_BASE_URL — 网关地址(可选,默认 https://openapi-sit.fosunxcz.com)如果工作区或
/tmp下存在fosun.env,脚本会自动加载其中的凭证。
{workspace_root}/.venv-fosun 存在,必须使用它。python -m venv ...、uv venv ...、conda create ... 等命令。python / pip;统一使用目标虚拟环境里的绝对路径解释器与 pip。当前 workspace 的标准环境为:
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python
/Users/admin/.openclaw/workspace/.venv-fosun/bin/pip
所有脚本运行示例应使用:
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python <脚本名>.py <子命令> [参数]
如果 .venv-fosun 不存在:
memory/YYYY-MM-DD.md 或 MEMORY.md)里是否记录了其他既有环境路径;| 市场代码 | 说明 | 行情级别 | 币种 |
|----------|------|----------|------|
| hk | 港股 | L2(含盘口、经纪商队列) | HKD |
| us | 美股 | L1(支持盘前/盘中/盘后) | USD |
| sh | 上交所(港股通) | L1 | CNH |
| sz | 深交所(港股通) | L1 | CNH |
标的代码格式:marketCode + stockCode
| 示例 | 说明 |
|------|------|
| hk00700 | 腾讯控股(港股) |
| usAAPL | 苹果(美股) |
| sh600519 | 贵州茅台(A 股-沪) |
| sz000001 | 平安银行(A 股-深) |
| 名称 | order_type 值 | CLI 参数 | 是否需要 price | 适用市场 | 说明 |
|------|---------------|----------|----------------|----------|------|
| 竞价限价单 | 1 | auction_limit | 是 | 港股 | 竞价时段以指定价格参与竞价 |
| 竞价单 | 2 | auction | 否 | 港股 | 竞价时段以市场价参与竞价 |
| 限价单 | 3 | limit(默认) | 是 | 港/美/A | 普通限价委托 |
| 增强限价单 | 4 | enhanced_limit | 是 | 港股 | 最多配对 10 个价位,未成交部分保留为限价单 |
| 特别限价单 | 5 | special_limit | 是 | 港股 | 最多配对 10 个价位,未成交部分自动取消 |
| 市价单 | 9 | market | 否 | 港/美 | 以当前市场价成交 |
所有脚本在 code/ 目录下运行:
cd /Users/admin/.openclaw/workspace/skills/fosun_skills/fosun-trading/code
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python <脚本名>.py <子命令> [参数]
或者使用完整路径:
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python /Users/admin/.openclaw/workspace/skills/fosun_skills/fosun-trading/code/<脚本名>.py <子命令> [参数]
所有脚本支持公共参数:--api-key、--base-url、--sub-account-id。
仅支持主动拉取(API 调用),不支持推送。
- 港股:L2 行情(含盘口、经纪商队列)
- 美股:L1 行情(支持盘前/盘中/盘后)
- A 股(港股通):L1 行情
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python query_price.py quote hk00700 usAAPL sh600519
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python query_price.py orderbook hk00700 --count 5
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python query_price.py orderbook sh600519 --count 5
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python query_price.py kline hk00700 --ktype day -n 30
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python query_price.py kline sh600519 --ktype min5 -n 60
ktype 可选:day / week / month / year / min1 / min5 / min15 / min30 / min60
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python query_price.py min hk00700 --count 5
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python query_price.py tick hk00700 -n 20
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python query_price.py broker hk00700
查询某只股票的每手股数(lotSize)、最大可买/可卖数量、购买力等信息。 对应 API 接口:
POST /api/v1/trade/BidAskInfo
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python query_bidask.py --stock 00700 # 港股(默认限价买入)
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python query_bidask.py --stock 00700 --lot-size-only # 仅输出 lotSize 数值
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python query_bidask.py --stock AAPL --market us --lot-size-only
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python query_bidask.py --stock 600519 --market sh --lot-size-only
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python query_bidask.py --stock 00700 --price 350.000 # 指定价格查更精确的可买数量
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python query_bidask.py --stock 00700 --direction sell # 查可卖数量
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python query_bidask.py --stock AAPL --market us # 美股
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python query_bidask.py --stock 600519 --market sh # A 股(沪)
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python query_bidask.py --stock 00700 --order-type market # 市价单
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python query_bidask.py --stock 00700 --order-type enhanced_limit # 增强限价单
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python query_bidask.py --stock 00700 --order-type special_limit # 特别限价单
| 参数 | 必填 | 说明 |
|------|------|------|
| --stock | 是 | 股票代码(不含市场前缀) |
| --market | 否 | hk(默认)/ us / sh / sz |
| --direction | 否 | buy(默认)/ sell |
| --order-type | 否 | limit(默认)/ enhanced_limit / special_limit / market |
| --price | 否 | 委托价格(传入可得到更精确的可买数量) |
| --quantity | 否 | 委托数量 |
| --lot-size-only | 否 | 仅输出每手股数数值 |
| 字段 | 类型 | 说明 |
|------|------|------|
| maxPurchasePower | string | 最大购买力(含融资) |
| cashPurchasePower | string | 现金购买力 |
| availableWithdrawBalance | string | 总账户可用现金 |
| singleWithdrawBalance | string | 当前币种可提现金 |
| currency | string | 币种(HKD/USD/CNH) |
| lotSize | int | 每手股数(如港股腾讯 = 100,即一手 100 股) |
| cashQuantityBuy | int | 现金可买数量 |
| maxQuantityBuy | int | 最大可买数量 |
| baseQuantitySell | int | 本币种可卖数量 |
| maxQuantitySell | int | 持仓可卖数量(含关联币种) |
⚠️ 每手股数(lotSize)说明
不同股票的每手股数不同,必须通过此接口动态查询,不可硬编码。
| 市场 | 每手规则 | 示例 | |------|----------|------| | 港股 | 每只股票不同,由交易所定义 | 腾讯(00700) = 100 股/手 | | 美股 | 通常 1 股起买,无整手限制 | AAPL lotSize = 1 | | A 股(港股通) | 通常 100 股/手 | 贵州茅台(600519) = 100 股/手 |
港股下单时 quantity 必须是 lotSize 的整数倍,否则会被拒单。
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python query_funds.py summary
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python query_funds.py summary --currency HKD
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python query_funds.py summary --currency CNH # A 股人民币资金
关键字段:
| 字段 | 说明 |
|------|------|
| summary.cashPurchasingPower | 现金购买力(可用资金) |
| summary.frozenBalance | 冻结资金 |
| summary.ledgerBalance | 账面余额(总资产) |
| summary.maxPurchasingPower | 最大购买力 |
| breakdown[] | 分币种明细(HKD/USD/CNH) |
完整字段见 docs/CashSummary.md。
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python query_funds.py holdings
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python query_funds.py holdings --symbols hk00700 --currencies HKD USD
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python query_funds.py holdings --symbols sh600519 --currencies CNH
关键字段:
| 字段 | 说明 |
|------|------|
| list[].stockCode | 股票代码 |
| list[].quantity | 持仓数量 |
| list[].quantityAvail | 可用数量 |
| list[].price | 当前市价 |
| list[].avgCost | 平均成本 |
| list[].dilutedCost | 摊薄成本 |
完整字段见 docs/Holdings.md。
⚠️ 成本字段说明:持仓有两种成本,务必区分,没有明确说明哪个成本就必须都告诉用户且区分
| 字段 | 含义 | 计算方式 | |------|------|----------| |
avgCost| 平均成本 | 所有买入交易的加权平均价格,不因卖出而变化 | |dilutedCost| 摊薄成本 | 在平均成本基础上,将已实现盈亏摊薄到剩余持仓中 |
- 如果只买入未卖出过,两者相同。
- 一旦部分卖出且产生盈利,
dilutedCost会低于avgCost(盈利被摊薄到剩余持仓);反之亏损卖出时dilutedCost会高于avgCost。- 查看买入均价用
avgCost;**评估真实持仓成本(含已实现盈亏)**用dilutedCost。
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python query_funds.py accounts
查询账户的资金进出明细(交易结算、出入金、利息、费用等)。 对应 API 接口:
POST /api/v1/trade/CashFlows
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python query_cashflows.py
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python query_cashflows.py --from-date 2025-01-01 --to-date 2025-01-31
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python query_cashflows.py --date 2025-03-15
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python query_cashflows.py --flow-type 1
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python query_cashflows.py --business-type 1 2
| 参数 | 必填 | 说明 |
|------|------|------|
| --from-date | 否 | 开始日期 yyyy-mm-dd |
| --to-date | 否 | 结束日期 yyyy-mm-dd |
| --date | 否 | 指定日期 yyyy-mm-dd(查询单日流水) |
| --flow-type | 否 | 流水类型 |
| --business-type | 否 | 业务类型(可多个) |
支持限价单、增强限价单、特别限价单、竞价单、竞价限价单和市价单,覆盖港/美/A 股市场。
⚠️ 重要:下单前必须与用户二次确认! 当已解析出明确的订单参数(股票代码、方向、数量、价格等)后,禁止直接执行下单命令。 必须先将完整的订单参数汇总展示给用户(适合用户阅读的格式),等待用户明确确认后才能执行。 这是一项涉及真实资金的操作,任何情况下都不得跳过确认步骤。
⚠️ 重要:用户说"买/卖 N 手"时,必须先查询每手股数再换算成股数! 当用户的指令中使用"手"作为数量单位(如"帮我买 1 手腾讯"、"卖 3 手 00700"),必须先调用
query_bidask.py --lot-size-only查询该股票的每手股数(lotSize),再将手数换算为股数(quantity = 手数 × lotSize),最终以股数下单。# 示例:用户说"买 2 手腾讯 (00700)" # 第一步:查询每手股数 /Users/admin/.openclaw/workspace/.venv-fosun/bin/python query_bidask.py --stock 00700 --lot-size-only # 假设输出 100,即一手 = 100 股 # 第二步:计算 quantity = 2 × 100 = 200 # 第三步:下单时 --quantity 200禁止假设每手股数,不同股票的 lotSize 不同,必须动态查询。
⚠️ 重要:最大可买/可卖数量必须通过接口查询,禁止自行计算! 下单前需要确认可买/可卖数量时,必须调用
query_bidask.py接口查询,不得根据资金余额、股价、持仓数量等信息自行推算。 接口返回的maxQuantityBuy(最大可买)和maxQuantitySell(最大可卖)已综合考虑购买力、保证金、风控规则等因素,手动计算无法覆盖这些逻辑,极易导致下单失败或数量错误。# 查询最大可买数量(指定价格更精确) /Users/admin/.openclaw/workspace/.venv-fosun/bin/python query_bidask.py --stock 00700 --price 350.000 # 查询最大可卖数量 /Users/admin/.openclaw/workspace/.venv-fosun/bin/python query_bidask.py --stock 00700 --direction sell
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python place_order.py --stock 00700 --direction buy --quantity 100 --price 350.000
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python place_order.py --stock 00700 --direction buy --quantity 100 --price 350.000 --order-type enhanced_limit
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python place_order.py --stock 00700 --direction buy --quantity 100 --price 350.000 --order-type special_limit
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python place_order.py --stock 00700 --direction buy --quantity 100 --order-type market
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python place_order.py --stock 00700 --direction buy --quantity 100 --price 350.000 --order-type auction_limit
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python place_order.py --stock 00700 --direction buy --quantity 100 --order-type auction
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python place_order.py --stock AAPL --market us --direction buy --quantity 5 --order-type market
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python place_order.py --stock AAPL --market us --direction sell --quantity 5 --price 180.00 --currency USD
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python place_order.py --stock 600519 --market sh --direction buy --quantity 100 --price 1800.00
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python place_order.py --stock 000001 --market sz --direction buy --quantity 100 --order-type market
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python place_order.py --stock 00700 --direction buy --quantity 100 --price 350.000 --check-only
--check-only 返回可买/可卖数量、购买力、每手股数等信息。
| 参数 | 必填 | 说明 |
|------|------|------|
| --stock | 是 | 股票代码(不含市场前缀) |
| --direction | 是 | buy / sell |
| --quantity | 是 | 委托数量 |
| --order-type | 否 | auction_limit(1) / auction(2) / limit(3,默认) / enhanced_limit(4) / special_limit(5) / market(9) |
| --price | 条件 | 委托价格。市价单可不传,限价单必填 |
| --market | 否 | hk(默认)/ us / sh / sz |
| --currency | 否 | 自动根据 market 选择(HKD/USD/CNH) |
| --check-only | 否 | 仅校验,不下单 |
| --exp-type | 否 | 1=当日有效(默认),2=GTC |
350.000)180.00)1800.00)/Users/admin/.openclaw/workspace/.venv-fosun/bin/python list_orders.py
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python list_orders.py --stock 00700 --status 20 40
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python list_orders.py --status-group pending # 快捷: 未成交
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python list_orders.py --status-group filled # 快捷: 已成交
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python list_orders.py --status-group cancelled # 快捷: 已撤销
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python list_orders.py --from-date 2025-01-01 --to-date 2025-01-31
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python list_orders.py --direction buy --market hk
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python list_orders.py --market sh sz # A 股订单
| 参数 | 说明 |
|------|------|
| --stock | 按股票代码筛选 |
| --status | 按状态筛选(可多个) |
| --status-group | 快捷状态分组(与 --status 互斥) |
| --from-date / --to-date | 日期范围 |
| --direction | buy / sell |
| --market | hk / us / sh / sz(可多个) |
| --count | 返回数量(默认 20) |
| --status-group | 包含状态 | 说明 |
|----------------|----------|------|
| pending | 10, 20, 21, 40, 60 | 未成交(未报/待报/条件单待触发/已报/部成) |
| filled | 50 | 已成交(全部成交) |
| cancelled | 70, 80, 90, 100 | 已撤销(已撤/部撤/废单/已失效) |
| 值 | 说明 |
|----|------|
| 10 | 未报 |
| 20 | 待报 |
| 21 | 条件单-待触发 |
| 40 | 已报 |
| 50 | 全成 |
| 60 | 部成 |
| 70 | 已撤 |
| 80 | 部撤 |
| 90 | 废单 |
| 100 | 已失效 |
| 字段 | 说明 |
|------|------|
| orderId | 订单 ID |
| stockCode | 股票代码 |
| orderType | 订单类型 (3=限价单, 9=市价单) |
| orderStatus | 订单状态 |
| price | 委托价格 |
| quantity | 委托数量 |
| filledPrice | 成交价格 |
| filledQuantity | 成交数量 |
| canCancel | 是否可撤单 (0=否, 1=是) |
⚠️ 重要:撤单前必须与用户二次确认! 撤单同样是不可逆操作,执行前必须向用户展示待撤订单的详情(订单号、股票、方向、数量等),等待用户明确确认后才能执行。
/Users/admin/.openclaw/workspace/.venv-fosun/bin/python cancel_order.py <ORDER_ID>
支持港/美/A 股所有市场的订单撤销。
1. 查询行情 → /Users/admin/.openclaw/workspace/.venv-fosun/bin/python query_price.py quote hk00700
2. 查看盘口 → /Users/admin/.openclaw/workspace/.venv-fosun/bin/python query_price.py orderbook hk00700
3. 查询每手股数 → /Users/admin/.openclaw/workspace/.venv-fosun/bin/python query_bidask.py --stock 00700 --lot-size-only
4. 确认资金 → /Users/admin/.openclaw/workspace/.venv-fosun/bin/python query_funds.py summary
5. 下单前校验 → /Users/admin/.openclaw/workspace/.venv-fosun/bin/python place_order.py --stock 00700 --direction buy --quantity 100 --price 350.000 --check-only
6. 提交订单 → /Users/admin/.openclaw/workspace/.venv-fosun/bin/python place_order.py --stock 00700 --direction buy --quantity 100 --price 350.000
7. 确认结果 → /Users/admin/.openclaw/workspace/.venv-fosun/bin/python list_orders.py --stock 00700
A 股下单示例:
1. 查询行情 → /Users/admin/.openclaw/workspace/.venv-fosun/bin/python query_price.py quote sh600519
2. 查询每手股数 → /Users/admin/.openclaw/workspace/.venv-fosun/bin/python query_bidask.py --stock 600519 --market sh --lot-size-only
3. 确认资金 → /Users/admin/.openclaw/workspace/.venv-fosun/bin/python query_funds.py summary --currency CNH
4. 下单前校验 → /Users/admin/.openclaw/workspace/.venv-fosun/bin/python place_order.py --stock 600519 --market sh --direction buy --quantity 100 --price 1800.00 --check-only
5. 提交订单 → /Users/admin/.openclaw/workspace/.venv-fosun/bin/python place_order.py --stock 600519 --market sh --direction buy --quantity 100 --price 1800.00
6. 确认结果 → /Users/admin/.openclaw/workspace/.venv-fosun/bin/python list_orders.py --market sh
通用调用频率、IP 白名单等基础限制见
fosun-sdk-setupskill。
| 维度 | 限制 | 超限处理 | |------|------|---------| | 每小时下单次数(买卖一起) | 单个客户 ≤ 10 笔/小时 | 该小时内拒绝新委托 | | 每日总下单次数(买卖一起) | 单个客户 ≤ 50 笔/天 | 当日拒绝新委托 |
| 限制项 | 具体规则 | |--------|---------| | 可交易品种 | 仅开放美股正股交易 | | 交易单位 | 1 股起买,仅支持整股,不允许碎股委托 | | 单笔委托买入 | ≤ 10 股 且 ≤ 50 USD(市价单没有价格,只有股数限制) | | 委托类型 | 仅支持限价单、市价单 |
| 限制项 | 具体规则 | |--------|---------| | 交易单位 | 必须按手交易,每手股数以交易所官方定义为准 | | 单笔委托买入 | 仅允许委托 1 手,不允许多手 且 ≤ 2000 HKD(竞价单、市价单没有价格,仅检验手数股数) | | 委托类型 | 仅支持:港股限价单(3)、特别限价单(5)、增强限价单(4)、竞价单、竞价限价单、市价单(9) |
| 限制项 | 具体规则 | |--------|---------| | 交易单位 | 必须按手交易,每手股数以交易所官方定义为准 | | 单笔委托买入 | 仅允许委托 1 手,不允许多手 且 ≤ 2000 CNH | | 委托类型 | 仅支持限价单 |
市场代码:上交所
sh,深交所sz。币种为 CNH(人民币),价格保留 2 位小数。
| 限制项 | 具体规则 | |--------|---------| | 单日累计交易金额(成交 + 未完成订单总额) | 单个客户 AI 渠道买卖总和 ≤ 15000 HKD(港美A不区分) | | 每小时下单次数(买卖一起) | 单个客户 AI 渠道 ≤ 10 笔/小时 |
| 场景 | 处理方式 |
|------|---------|
| 鉴权过期 | SDK 自动续期,一般无需处理 |
| 资金不足 | 先用 query_funds.py summary 确认 |
| 价格不合法 | 先用 query_price.py quote 获取最新价 |
| 数量不合法 | 港股注意整手(用 --check-only 查 lotSize),美股可 1 股起 |
| 订单类型不支持 | 仅支持竞价限价单(1)、竞价单(2)、限价单(3)、增强限价单(4)、特别限价单(5)和市价单(9),参考上方订单类型表 |
tools
Use when the user wants to connect to, test, or use the McDonalds service at mcp.mcd.cn, including checking authentication, probing MCP endpoints, listing tools, or calling McDonalds MCP tools through a reusable local CLI.
development
Web scraping platform — Twitter/X data, Vinted marketplace, and general web scraping API
development
SlowMist AI Agent Security Review — comprehensive security framework for skills, repositories, URLs, on-chain addresses, and products (Claude Code version)
data-ai
去除中文文本中的 AI 写作痕迹,使其读起来自然。基于维基百科 AI 写作特征指南,检测 24 种 AI 模式。触发词:humanizer-cn、去除 AI 痕迹、去除 AI 写作痕迹、中文文本人性化。