介绍
# Public.com Account Manager > **免责声明:** 仅供说明和信息参考。不构成投资建议或推荐。 > > 我们建议在尽可能隔离的实例中运行此技能。如果可能,请在新的 Public 账户上测试集成。
此技能允许用户与其 Public.com 经纪账户进行交互。
## 先决条件 - **Python 3.8+** 和 **pip** — 在您的 OpenClaw 环境中必需。 - **Public.com 账户** — 在 https://public.com/signup 创建 - **Public.com API 密钥** — 在 https://public.com/settings/v2/api 获取
`publicdotcom-py` SDK 是必需的。它将在首次运行时**自动安装**,或者您可以手动安装: ```bash pip install publicdotcom-py ```
## 配置
此技能使用两个环境变量:`PUBLIC_COM_SECRET`(必需)和 `PUBLIC_COM_ACCOUNT_ID`(可选)。每个变量的解析顺序如下:
1. **安全文件** — `~/.openclaw/workspace/.secrets/public_com_secret.txt`(或 `public_com_account.txt`) 2. **环境变量** — `PUBLIC_COM_SECRET` / `PUBLIC_COM_ACCOUNT_ID`
通过 `openclaw config set` 设置值会自动写入安全文件位置。
### API 密钥(必需) 如果未设置 `PUBLIC_COM_SECRET`: - 告诉用户:“我需要您的 Public.com API 密钥。您可以在 https://public.com/settings/v2/api 的 Public.com 开发者设置中找到它。” - 获得后,保存它:`openclaw config set skills.publicdotcom.PUBLIC_COM_SECRET [VALUE]`
### 默认账户 ID(可选) 如果用户想为所有请求设置默认账户: - 保存它:`openclaw config set skills.publicdotcom.PUBLIC_COM_ACCOUNT_ID [VALUE]` - 这样就无需在每个命令上指定 `--account-id`。
## 可用命令
### 获取账户 当用户要求“get my accounts”、“list accounts”或“show my Public.com accounts”时: 1. 执行 `python3 scripts/get_accounts.py` 2. 向用户报告账户 ID 和类型。
### 获取投资组合 当用户要求“get my portfolio”、“show my holdings”或“what's in my account”时: 1. 如果设置了 `PUBLIC_COM_ACCOUNT_ID`,执行 `python3 scripts/get_portfolio.py`(无需参数)。 2. 如果未设置且您不知道用户的账户 ID,首先运行 `get_accounts.py` 来获取它。 3. 执行 `python3 scripts/get_portfolio.py --account-id [ACCOUNT_ID]` 4. 向用户报告投资组合摘要(权益、购买力、持仓)。
### 获取订单 当用户要求“get my orders”、“show my orders”、“active orders”或“pending orders”时: 1. 如果设置了 `PUBLIC_COM_ACCOUNT_ID`,执行 `python3 scripts/get_orders.py`(无需参数)。 2. 如果未设置且您不知道用户的账户 ID,首先运行 `get_accounts.py` 来获取它。 3. 执行 `python3 scripts/get_orders.py --account-id [ACCOUNT_ID]` 4. 向用户报告活动订单及其详细信息(代码、方向、类型、状态、数量、价格)。
### 获取历史记录 当用户要求“get my history”、“show my transactions”、“transaction history”、“trade history”或希望查看过去的账户活动时:
**可选参数:** - `--type`:按交易类型筛选(TRADE, MONEY_MOVEMENT, POSITION_ADJUSTMENT) - `--limit`:限制返回的交易数量
**示例:**
获取所有交易历史: ```bash python3 scripts/get_history.py ```
仅获取交易: ```bash python3 scripts/get_history.py --type TRADE ```
仅获取资金变动(存款、取款、股息、费用): ```bash python3 scripts/get_history.py --type MONEY_MOVEMENT ```
获取最近 10 笔交易: ```bash python3 scripts/get_history.py --limit 10 ```
使用显式账户 ID: ```bash python3 scripts/get_history.py --account-id YOUR_ACCOUNT_ID ```
**工作流程:** 1. 如果未设置 `PUBLIC_COM_ACCOUNT_ID` 且您不知道用户的账户 ID,首先运行 `get_accounts.py` 来获取它。 2. 执行:`python3 scripts/get_history.py [OPTIONS]` 3. 向用户报告按类型分组(交易、资金变动、持仓调整)的交易历史。 4. 包括相关详细信息,如代码、数量、净金额、费用和时间戳。
**交易类型:** - **TRADE**:股票、期权和加密货币的买入/卖出交易 - **MONEY_MOVEMENT**:存款、取款、股息、费用和现金调整 - **POSITION_ADJUSTMENT**:股票拆分、合并和其他持仓变动
### 获取报价 当用户要求“get a quote”、“what's the price of”、“check the price”或希望获取股票/加密货币价格时:
**格式:** `SYMBOL` 或 `SYMBOL:TYPE`(TYPE 默认为 EQUITY)
**示例:**
单个股票报价(使用默认账户): ```bash python3 scripts/get_quotes.py AAPL ```
多个股票报价: ```bash python3 scripts/get_quotes.py AAPL GOOGL MSFT ```
混合工具类型: ```bash python3 scripts/get_quotes.py AAPL:EQUITY BTC:CRYPTO ```
期权报价: ```bash python3 scripts/get_quotes.py AAPL260320C00280000:OPTION ```
使用显式账户 ID: ```bash python3 scripts/get_quotes.py AAPL --account-id YOUR_ACCOUNT_ID ```
**工作流程:** 1. 如果未设置 `PUBLIC_COM_ACCOUNT_ID` 且您不知道用户的账户 ID,首先运行 `get_accounts.py` 来获取它。 2. 解析用户的代码和类型请求。 3. 执行:`python3 scripts/get_quotes.py [SYMBOLS...] [--account-id ACCOUNT_ID]` 4. 向用户报告报价信息(最新价格、买价、卖价、成交量等)。
### 获取工具 当用户要求“list instruments”、“what can I trade”、“show available stocks”或希望查看可交易工具时:
**可选参数:** - `--type`:要筛选的工具类型(EQUITY, OPTION, CRYPTO)。默认为 EQUITY。 - `--trading`:交易状态筛选(BUY_AND_SELL, BUY_ONLY, SELL_ONLY, NOT_TRADABLE) - `--search`:按代码或名称搜索 - `--limit`:限制结果数量
**示例:**
列出所有股票(默认): ```bash python3 scripts/get_instruments.py ```
列出股票和加密货币: ```bash python3 scripts/get_instruments.py --type EQUITY CRYPTO ```
仅列出可交易工具: ```bash python3 scripts/get_instruments.py --type EQUITY --trading BUY_AND_SELL ```
搜索特定工具: ```bash python3 scripts/get_instruments.py --search AAPL ```
限制结果: ```bash python3 scripts/get_instruments.py --limit 50 ```
**工作流程:** 1. 解析用户的任何筛选器请求(类型、交易状态、搜索词)。 2. 执行:`python3 scripts/get_instruments.py [OPTIONS]` 3. 向用户报告可用工具及其交易状态。
### 获取工具详情 当用户要求“get instrument details”、“show instrument info”、“what are the details for AAPL”或希望查看特定工具的详细信息时:
**必需参数:** - `--symbol`:股票代码(例如 AAPL, BTC)
**可选参数:** - `--type`:工具类型(EQUITY, OPTION, CRYPTO)。默认为 EQUITY。
**示例:**
获取股票工具详情: ```bash python3 scripts/get_instrument.py --symbol AAPL ```
获取加密货币工具详情: ```bash python3 scripts/get_instrument.py --symbol BTC --type CRYPTO ```
**工作流程:** 1. 解析用户的代码和可选类型请求。 2. 执行:`python3 scripts/get_instrument.py --symbol [SYMBOL] [--type TYPE]` 3. 向用户报告工具详细信息(交易状态、 fractional trading、期权交易)。
### 获取期权到期日 **此技能可以列出任何代码的所有可用期权到期日期。**
当用户要求“get option expirations”、“list expirations”、“show expiration dates”、“when do options expire”或希望了解某只股票有哪些期权到期日期可用时: 1. 执行 `python3 scripts/get_option_expirations.py [SYMBOL]` 2. 向用户报告可用的到期日期。
常见用户措辞: - "get option expirations for AAPL" - "what are the option expiration dates for Google" - "when do TSLA options expire" - "show me expiration dates for SPY options" - "list available expirations for MSFT" - "can you get the options expirations for Apple" - "what options dates are available for NVDA"
**必需参数:** - `symbol`:标的代码(例如 AAPL, GOOGL, TSLA, SPY)。将公司名称转换为股票代码。
**示例:**
```bash python3 scripts/get_option_expirations.py AAPL python3 scripts/get_option_expirations.py GOOGL python3 scripts/get_option_expirations.py TSLA python3 scripts/get_option_expirations.py SPY ```
**常见公司名称与代码映射:** - Apple = AAPL - Google/Alphabet = GOOGL - Tesla = TSLA - Microsoft = MSFT - Amazon = AMZN - Nvidia = NVDA - Meta/Facebook = META
**工作流程:** 1. 从用户请求中提取代码。将公司名称转换为股票代码。 2. 执行:`python3 scripts/get_option_expirations.py [SYMBOL]` 3. 向用户报告可用的到期日期。 4. 如果他们接下来希望查看期权链,请使用到期日期配合 `get_option_chain.py`。
### 获取期权希腊字母 当用户要求“option greeks”、“delta”、“gamma”、“theta”、“vega”或希望分析期权时:
**必需参数:** - 一个或多个 OSI 期权代码(例如 AAPL260116C00270000)
**OSI 代码格式:** ``` AAPL260116C00270000 ^^^^------^-------- | | | Strike price ($270.00) | | Call (C) or Put (P) | Expiration (Jan 16, 2026 = 260116) Underlying symbol ```
**示例:**
单个期权: ```bash python3 scripts/get_option_greeks.py AAPL260116C00270000 ```
多个期权(例如同一行权价的看涨和看跌期权): ```bash python3 scripts/get_option_greeks.py AAPL260116C00270000 AAPL260116P00270000 ```
**工作流程:** 1. 如果用户分别提供到期日、行权价和看涨/看跌期权,请帮助其构建 OSI 代码。 2. 执行:`python3 scripts/get_option_greeks.py [OSI_SYMBOLS...]` 3. 向用户报告希腊字母(Delta, Gamma, Theta, Vega, Rho, IV),并在需要时提供解释。
### 获取期权链 当用户要求“option chain”、“options for AAPL”、“show me calls and puts”或希望查看可用期权时:
**必需参数:** - `symbol`:标的代码(例如 AAPL)
**可选参数:** - `--expiration`:到期日期 (YYYY-MM-DD)。如果未提供,则使用最近的到期日。 - `--list-expirations`:列出可用的到期日期,而不是获取期权链。
**示例:**
列出可用的到期日期: ```bash python3 scripts/get_option_chain.py AAPL --list-expirations ```
获取最近到期日的期权链: ```bash python3 scripts/get_option_chain.py AAPL ```
获取特定到期日的期权链: ```bash python3 scripts/get_option_chain.py AAPL --expiration 2026-03-20 ```
**工作流程:** 1. 如果用户未指定到期日,首先运行 `--list-expirations` 以显示可用日期。 2. 执行:`python3 scripts/get_option_chain.py [SYMBOL] [--expiration DATE]` 3. 报告看涨和看跌期权及其行权价、买价/卖价、最新价格、成交量和未平仓合约。
### 设置默认账户 当用户要求“set my default account”或“use account X as default”时: 1. 保存它:`openclaw config set skills.publicdotcom.PUBLIC_COM_ACCOUNT_ID [ACCOUNT_ID]` 2. 向用户确认,未来的请求将默认使用此账户。
### 预先计算 当用户要求“估算订单成本”、“预先检查订单”、“购买需要多少钱”、“检查购买力影响”,或者希望在下单前查看预估成本和账户影响时:
**必需参数:** - `--symbol`:股票代码(例如 AAPL、BTC,或期权代码如 NVDA260213P00177500) - `--type`:EQUITY(股票)、OPTION(期权)或 CRYPTO(加密货币) - `--side`:BUY(买入)或 SELL(卖出) - `--order-type`:LIMIT(限价)、MARKET(市价)、STOP(止损)或 STOP_LIMIT(止损限价) - `--quantity` 或 `--amount`:股票/合约数量 或 名义美元金额
**条件参数:** - `--limit-price`:LIMIT 和 STOP_LIMIT 订单必需 - `--stop-price`:STOP 和 STOP_LIMIT 订单必需 - `--session`:CORE(默认)或 EXTENDED,用于股票订单 - `--open-close`:OPEN 或 CLOSE,用于期权订单(OPEN 开仓,CLOSE 平仓) - `--time-in-force`:DAY(默认)或 GTC(撤销前有效)
**示例:**
股票限价买入预检: ```bash python3 scripts/preflight.py --symbol AAPL --type EQUITY --side BUY --order-type LIMIT --quantity 10 --limit-price 227.50 ```
股票市价卖出预检: ```bash python3 scripts/preflight.py --symbol AAPL --type EQUITY --side SELL --order-type MARKET --quantity 10 ```
按金额购买加密货币预检: ```bash python3 scripts/preflight.py --symbol BTC --type CRYPTO --side BUY --order-type MARKET --amount 100 ```
期权合约买入预检(开新仓): ```bash python3 scripts/preflight.py --symbol NVDA260213P00177500 --type OPTION --side BUY --order-type LIMIT --quantity 1 --limit-price 4.00 --open-close OPEN ```
期权合约卖出预检(平仓): ```bash python3 scripts/preflight.py --symbol NVDA260213P00177500 --type OPTION --side SELL --order-type LIMIT --quantity 1 --limit-price 5.00 --open-close CLOSE ```
**工作流程:** 1. 从用户处收集订单参数(代码、类型、方向、订单类型、数量/金额、如需要则提供价格)。 2. 执行:`python3 scripts/preflight.py [OPTIONS]` 3. 向用户报告预估成本、购买力影响和任何费用。 4. 如果用户希望继续,请使用相同参数运行 `place_order.py` 脚本。
### 下单 当用户要求“买入”、“卖出”、“下单”或“交易”时:
**必需参数:** - `--symbol`:股票代码(例如 AAPL、BTC) - `--type`:EQUITY(股票)、OPTION(期权)或 CRYPTO(加密货币) - `--side`:BUY(买入)或 SELL(卖出) - `--order-type`:LIMIT(限价)、MARKET(市价)、STOP(止损)或 STOP_LIMIT(止损限价) - `--quantity` 或 `--amount`:股票数量 或 名义美元金额
**条件参数:** - `--limit-price`:LIMIT 和 STOP_LIMIT 订单必需 - `--stop-price`:STOP 和 STOP_LIMIT 订单必需 - `--session`:CORE(默认)或 EXTENDED,用于股票订单 - `--open-close`:OPEN 或 CLOSE,用于期权订单 - `--time-in-force`:DAY(默认)或 GTC(撤销前有效)
**示例:**
以 227.50 美元的限价买入 10 股 AAPL: ```bash python3 scripts/place_order.py --symbol AAPL --type EQUITY --side BUY --order-type LIMIT --quantity 10 --limit-price 227.50 ```
以市价卖出价值 500 美元的 AAPL: ```bash python3 scripts/place_order.py --symbol AAPL --type EQUITY --side SELL --order-type MARKET --amount 500 ```
在延长交易时段购买加密货币: ```bash python3 scripts/place_order.py --symbol BTC --type CRYPTO --side BUY --order-type MARKET --amount 100 ```
使用撤销前有效(GTC)订单购买: ```bash python3 scripts/place_order.py --symbol AAPL --type EQUITY --side BUY --order-type LIMIT --quantity 10 --limit-price 220.00 --time-in-force GTC ```
**工作流程:** 1. 从用户处收集所有必需信息(代码、方向、订单类型、数量/金额、如需要则提供价格)。 2. 在执行前与用户确认订单详细信息。 3. 执行:`python3 scripts/place_order.py [OPTIONS]` 4. 向用户报告订单 ID 和确认信息。 5. 提醒用户下单是异步的——他们可以稍后检查状态。
### 取消订单 当用户要求“取消订单”、“取消我的订单”或希望取消特定订单时:
**必需参数:** - `--order-id`:要取消的订单 ID
**示例:** ```bash python3 scripts/cancel_order.py --order-id 345d3e58-5ba3-401a-ac89-1b756332cc94 ```
指定账户 ID: ```bash python3 scripts/cancel_order.py --order-id 345d3e58-5ba3-401a-ac89-1b756332cc94 --account-id YOUR_ACCOUNT_ID ```
**工作流程:** 1. 如果用户未提供订单 ID,首先运行 `get_orders.py` 向其显示活跃订单。 2. 与用户确认其想要取消的订单。 3. 执行:`python3 scripts/cancel_order.py --order-id [ORDER_ID]` 4. 通知用户取消操作是异步的——他们应检查订单状态以确认。
### 期权策略指导 当用户询问期权策略、如何自动化策略、在特定场景下使用哪种策略,或需要帮助构建多腿期权交易时:
1. 阅读文件 `options-automation-library.md`(位于与此技能相同的目录中)以获取详细的策略背景。 2. 该库包含 35+ 种按类别组织的期权策略: - **单腿策略**:Long Call(买入看涨)、Long Put(买入看跌)、Covered Call(备兑看涨)、Cash-Secured Put(现金担保看跌) - **垂直价差**:Bull Call(牛市看涨价差)、Bear Call(熊市看涨价差)、Bull Put(牛市看跌价差)、Bear Put(熊市看跌价差) - **日历与对角价差**:Long Calendar(日历价差多头)、Diagonal Spread(对角价差) - **跨式与宽跨式**:Long/Short Straddle(跨式多头/空头)、Long/Short Strangle(宽跨式多头/空头) - **复杂价差**:Iron Condor(铁鹰式)、Iron Butterfly(铁蝶式)、Broken-Wing Butterfly(折翼蝶式)、Jade Lizard(玉蜥蜴)、Christmas Tree(圣诞树) - **合成头寸**:Synthetic Long/Short(合成多头/空头)、Synthetic Covered Call(合成备兑看涨)、Conversion/Reversal(转换/反转) - **收益策略**:Wheel(轮动策略)、Poor Man's Covered Call(穷人的备兑看涨)、Ratio Spreads(比率价差) - **高级/量化策略**:Box Spread(盒式价差)、Risk Reversal(风险反转)、Hedged Iron Fly(对冲铁蝶式)、Vol Arb(波动率套利)、Calendar Strangles(日历宽跨式) - **事件驱动工作流**:Earnings IV Crush(财报隐含波动率挤压)、Pre-Market IV Expansion(盘前隐含波动率扩张)、Post-Earnings Drift(财报后漂移)、Macro/OPEX Gamma(宏观/期权到期日伽马) 3. 每种策略包括:描述、包含事件示例的用例、策略失效点、API 工作流步骤,以及使用 Public.com SDK 的代码示例。 4. 构建代码示例时,请使用库中的共享 SDK 辅助工具(设置、市场数据、预检、多腿订单辅助工具)。 5. 推荐策略时,请始终包含“Where This Strategy Breaks”(策略失效点)背景,以便用户了解风险。 6. 对于可执行交易,请将库中的代码模式映射到此技能中可用的实际脚本(例如 `get_option_chain.py`、`get_option_expirations.py`、`preflight.py`、`place_order.py`)。