盈透证券TWS MCP服务器
一种MCP(模型上下文协议)服务器,为交易操作、市场数据和投资组合管理提供与Interactive Brokers TWS(交易者工作站)API的集成。
特性
投资组合管理
- 获取位置:检索所有投资组合头寸
- getAccountSummary:获取账户余额、购买力、损益和其他指标
- getPortfolioUpdates:订阅实时投资组合更新
期权交易
- getOptionChain:获取给定基础符号的期权链
- 获取选项详细信息:获取详细的期权合约信息
- 获取位置:获取包含执行价格、到期日和希腊等全面期权详细信息的投资组合头寸
- getPositionDetails:获取特定职位的详细信息,包括实时希腊人
- get希腊投资组合:计算整个投资组合或按基础交易品种计算希腊总额
- 增强的选项支持:所有期权头寸现在都包括执行价格、到期日、期权类型(看涨与看跌)和实时希腊(delta、gamma、vega、theta)
市场数据
- 获取报价:获取股票和指数的实时报价
- 获取历史数据:检索各种条形图大小的历史价格数据
- streamMarketData:订阅实时流媒体市场数据
订单管理
- placeOrder:下单购买股票和期权(市价、限价、止损、止损限价)
- 取消订单:取消未结订单
- getOpenOrders:查看所有未结订单
- 修改订单:修改现有订单(数量、价格)
先决条件
- 盈透证券账户:您需要一个IB账户(建议用于测试的纸质交易账户)
- TWS或IB网关:安装并运行以下任一程序:
- TWS(交易者工作站):完整的交易平台 - IB网关:轻量级连接接口
- API配置:在TWS/网关中启用API连接:
- 转到文件→ 全局配置→ API → 设置 - 启用“启用ActiveX和Socket客户端” - 设置“Socket port”(默认值:7497代表纸质,7496代表实时) - 将“127.0.0.1”添加到“受信任的IP地址”
安装
cd ib-tws-mcp-server
npm install
npm run build配置
添加到您的Claude Desktop配置文件中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 视窗: %APPDATA%\\Claude\\claude_desktop_config.json
{
"mcpServers": {
"ib-tws": {
"command": "node",
"args": ["/path/to/ib-tws-mcp-server/dist/index.js"],
"env": {}
}
}
}用法
1.连接到TWS
首先,确保TWS或IB网关正在运行,然后连接:
// Connect to paper trading (port 7497)
connect({
host: "127.0.0.1",
port: 7497,
clientId: 0
})
// Connect to live trading (port 7496) - use with caution!
connect({
host: "127.0.0.1",
port: 7496,
clientId: 0
})2.投资组合运营
// Get all positions
getPositions()
// Get account summary
getAccountSummary({
tags: ["NetLiquidation", "BuyingPower", "UnrealizedPnL"]
})
// Subscribe to portfolio updates
getPortfolioUpdates({
account: "DU1234567",
subscribe: true
})3.市场数据
// Get real-time quote
getQuote({
symbol: "AAPL",
secType: "STK"
})
// Get S&P 500 index quote
getQuote({
symbol: "SPX",
secType: "IND"
})
// Get historical data
getHistoricalData({
symbol: "AAPL",
duration: "1 D",
barSize: "5 mins",
whatToShow: "TRADES"
})4.期权交易
// Get option chain
getOptionChain({
symbol: "AAPL",
expiration: "20240119" // Optional: specific expiration
})
// Get portfolio Greeks aggregated by underlying
getPortfolioGreeks({
byUnderlying: true
})
// Get detailed position information with Greeks
getPositionDetails({
symbol: "AAPL"
})
// Get positions with full option details
getPositions({
includeGreeks: true,
groupByUnderlying: true
})5.订单管理
// Place a market order
placeOrder({
symbol: "AAPL",
action: "BUY",
quantity: 100,
orderType: "MKT"
})
// Place a limit order
placeOrder({
symbol: "AAPL",
action: "BUY",
quantity: 100,
orderType: "LMT",
limitPrice: 150.50
})
// Place an option order
placeOrder({
symbol: "AAPL",
secType: "OPT",
action: "BUY",
quantity: 1,
orderType: "LMT",
limitPrice: 5.50,
expiration: "20240119",
strike: 150,
right: "C"
})
// Get open orders
getOpenOrders()
// Cancel an order
cancelOrder({
orderId: 12345
})重要提示
- 票据交易:始终先使用纸质交易账户进行测试(端口7497)
- 速率限制:TWS对所有API连接都有50条消息/秒的限制
- 市场交易时间:有些功能仅在市场时段工作
- 数据订阅:实时市场数据需要适当的IB数据订阅
- 订单ID:服务器生成随机订单ID。在生产中,实施适当的ID管理
故障排除
连接问题
- 确保TWS/Gateway正在运行并且API已启用
- 检查端口号(7497表示纸质,7496表示实时)
- 验证“127.0.0.1”是否位于受信任的IP地址中
- 尝试在TWS设置中增加连接超时时间
市场数据问题
- 验证您是否有适当的市场数据订阅
- 某些数据仅在市场交易时段可用
- 检查是否已超过并发市场数据行限制
订单问题
- 确保订单有足够的购买力
- 检查该证券类型的市场是否开放
- 验证期权合约规格是否正确
安全
- 切勿共享您的TWS凭据或API配置
- 使用纸质交易账户进行测试
- 在生产中实施适当的错误处理
- 考虑实施额外的身份验证层
免责声明
重要提示:此软件仅用于教育和测试目的。
本软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途适用性和非侵权性的保证。在任何情况下,作者或版权持有人均不对因软件或软件的使用或其他交易而产生或与之相关的任何索赔、损害赔偿或其他责任承担责任,无论是在合同、侵权或其他诉讼中。
交易免责声明:交易证券、期权、期货和外汇涉及巨大的损失风险,并不适合每个投资者。证券、期权、期货和外汇的估值可能会波动,因此,客户的损失可能超过其原始投资。季节性和地缘政治事件的影响已经被纳入市场价格。期货交易的高杠杆性质意味着,市场的小幅波动将对您的交易账户产生巨大影响,这可能会对您不利,导致巨额损失,也可能对您有利,导致巨额收益。
没有投资建议:此软件不提供投资建议。所有内容仅供参考,不应被解释为投资建议或买卖任何证券或投资的建议。在做出任何投资决策之前,您应该咨询合格的财务顾问。
使用风险自负:
- 该软件与实时交易系统交互,可以下导致财务损失的真实订单
- 作者对使用本软件造成的任何损失不承担任何责任
- 您对使用此软件进行的任何交易负全部责任
- 在使用真钱之前,一定要用纸质交易账户进行彻底测试
- 仔细监控所有自动交易活动
无责任:在任何情况下,作者、贡献者或版权持有人均不对任何直接、间接、附带、特殊、惩戒性或后果性损害(包括但不限于采购替代商品或服务;使用、数据或利润损失;或业务中断)承担责任,无论是基于何种责任理论,无论是合同、严格责任还是侵权行为(包括疏忽或其他),即使已被告知此类损害的可能性。
合规:您有责任遵守您所在司法管辖区的所有适用法律法规,包括但不限于证券法律法规。本软件未经互动经纪集团股份有限公司认可或隶属于互动经纪集团。
使用本软件即表示您已阅读本免责声明并同意其条款。
许可证
公共领域/无许可
这是免费且无阻碍的软件,已发布到公共领域。
任何人都可以自由复制、修改、发布、使用、编译、销售或分发此软件,无论是源代码形式还是编译后的二进制文件,用于任何目的,无论是商业还是非商业目的,也可以通过任何方式。
在承认版权法的司法管辖区,本软件的作者将软件的任何和所有版权权益归公共领域所有。我们这样做是为了广大公众的利益,而不利于我们的继承人和继任者。我们打算将这一奉献作为一种公开的行为,永久放弃该软件在版权法下的所有现有和未来权利。
软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途适用性和非侵权性的保证。在任何情况下,作者均不对因软件或软件的使用或其他交易而产生或与之相关的任何索赔、损害赔偿或其他责任承担责任,无论是在合同、侵权或其他诉讼中。
有关更多信息,请参阅
