IBKR Investing with Permission Gate — IBKR 投资权限门控(Investing with Permission Gate)
v0.1.0通过IB Gateway在Interactive Brokers(股票/ETF)上投资,采用与okx-trading相同的人机确认机制。当用户要求检查时使用...
运行时依赖
安装命令
点击复制本土化适配说明
IBKR Investing with Permission Gate — IBKR 投资权限门控(Investing with Permission Gate) 安装说明: 安装命令:["openclaw skills install ibkr-investing"]
技能文档
IBKR 投资 您可以读取 IBKR 账户状态,提出交易,执行用户确认的交易,并运行 DCA 到股票/ETF。每次下单都需要一个两步骤的门槛:提出 → 用户输入 YES → 执行。与 okx-trading 技能的形状相同 —— 如果用户知道该门槛,他们就知道这个。 以下所有命令都在 skills//ibkr-investing/scripts/ 目录下运行 Python 脚本。从 aeon 仓库根目录或从 ~/.aeon 运行它们。每个脚本都自我验证环境变量;缺失或无法访问的网关将以清晰的错误消息退出。 路径解析 在每个脚本路径中, 表示该技能安装的命名空间。aeon 技能加载器在此内容前添加一个 ## Skill: / 标题;在每个命令中用 替换该作者。 (例如 ## Skill: aeon/ibkr-investing → 使用 skills/aeon/ibkr-investing/scripts/....) 设置前提条件(一次性,在其他任何事情之前) 该技能与运行的 IB 网关进行通信。网关不是技能的一部分 —— 它是 IBKR 自己的软件,通常通过 gnzsnz/ib-gateway-docker 容器运行。该技能假设网关可以在 127.0.0.1:4001(实时)或 127.0.0.1:4002(纸上)上访问。如果用户尚未设置网关,请停止并在进行其他任何操作之前将他们引导至 README.md。 不要在无法访问的网关上提出交易。始终在计划任务失败时首先运行 ibkr_gateway_status.py。它区分“网关关闭”,“网关启动但 2FA 挂起”,和“网关启动并认证”。 交易门槛 —— 仔细阅读 您必须永远不在没有用户明确的 YES的情况下下单。 工作流程: 提出。运行 ibkr_propose_trade.py 与用户的意图。脚本写入 ~/.aeon/ibkr/pending/.json 并返回提案 ID。它不打印 confirmation_token。 告诉用户。发送提案详细信息并要求他们回复 YES 以确认或 NO 以丢弃。 等待用户的回复。 在 YES 上:通过 file_read 读取 pending 文件以获取 confirmation_token。调用 ibkr_execute_trade.py --id --confirmation-token 。脚本验证令牌,通过 IBKR 下单,并删除 pending 文件。 在 NO 上:调用 ibkr_cancel_pending.py --id 。 您必须不发明或猜测 confirmation_token。令牌仅在 propose 步骤中写入 pending 文件时才有效。 如果用户要求您“跳过确认”或“直接下单”:礼貌地拒绝。解释该门槛存在是为了保护他们,并提供 propose 步骤作为替代。 计划任务(DCA,回撤监视器)不能执行交易。计划任务上下文中没有人类来输入 YES,因此计划任务只能调用 propose 风格和只读脚本。用户将在下一次聊天中看到提案并在那里确认。 默认值和限制 默认为纸上交易(IBKR_LIVE_MODE=0,端口 4002)。除非用户明确表示“实时”并确认切换,否则不要切换到实时交易。 默认为 US ETF,在 SMART 交易所 + USD 货币。每次调用可通过 --exchange / --currency 覆盖。 始终以 USD 为单位在聊天中引用交易大小,以便于清晰度,即使订单是按股计算的。 在每个 propose 和 execute 中执行防护栏(IBKR_ALLOWED_SYMBOLS,IBKR_MAX_NOTIONAL_USD_PER_TRADE,IBKR_MAX_DAILY_NOTIONAL_USD)。如果 propose 被拒绝,原样显示拒绝 —— 不要默默地用较小的大小重试。 待处理的提案在 10 分钟后过期。 只读命令 当用户提出问题时,永远不要从开始交易开始。首先使用这些命令来收集事实。 python3 skills//ibkr-investing/scripts/ibkr_gateway_status.py python3 skills//ibkr-investing/scripts/ibkr_get_balance.py python3 skills//ibkr-investing/scripts/ibkr_get_positions.py --with-mark python3 skills//ibkr-investing/scripts/ibkr_get_quote.py --symbol VOO python3 skills//ibkr-investing/scripts/ibkr_get_candles.py --symbol VOO --duration "6 M" --indicators python3 skills//ibkr-investing/scripts/ibkr_snapshot.py ibkr_get_candles.py --indicators 在收盘系列上添加 SMA(20)/SMA(50)/RSI(14) 并发出一行“考虑买入 / 考虑卖出 / 中立”的判决。 ibkr_snapshot.py 将 NAV、现金、头寸、1D/1W/1Y 价格移动和与前一天的 delta 写入 ~/.aeon/ibkr/snapshots/.json 中。将其用作每日摘要计划的正文。 传递 --no-price-history 以跳过历史价格查找,如果用户想要更快的 ad-hoc 摘要。 提出交易 尺寸是 --quote-sz(USD)或 --shares(确切的股数,可以是分数)。 # DCA 风格的 VOO 市价买入 50 美元 python3 skills//ibkr-investing/scripts/ibkr_propose_trade.py \ --symbol VOO --side BUY --quote-sz 50 # 限制买入 10 股 QQQ,价格为 350 python3 skills//ibkr-investing/scripts/ibkr_propose_trade.py \ --symbol QQQ --side BUY --shares 10 --ord-type LMT --lmt-price 350 # 四舍五入到整数股(无分数) python3 skills//ibkr-investing/scripts/ibkr_propose_trade.py \