如何通过 Interactive Brokers TWS 获取交易的盈亏 Java API

How to get P&L on a trade through Interactive Brokers TWS Java API

是否有任何方法可以通过其 Java API 获得在 IB TWS 上进行的特定交易的损益(每日和截至日期的总计)?

你可以,但不是你要求的那样。 API 中的所有利润和损失都由您计算,直到交易结束,然后您可以使用包装器的 commissionReport 方法。在每个 execDetails 之后发送一个 commissionReport。 API doc

您可以随时查看您的报表以了解以前的损益。

流程是这样的

  • 进行交易并从 execDetails 获取填充价格
  • 从 commissionReport 获取开仓佣金
  • 在每个报价单上计算未平仓头寸的利润,使用 bid/ask 来实现现实主义,但无论如何都是外汇
  • 关闭交易并从 execDetails 获取价格
  • 再次从 commissionReport 中获取佣金
  • 计算平仓交易profit/loss
  • 另请注意,commissionReport 有一个字段 m_realizedPNL 您可以使用,但我从未尝试过。

在 TWS v9.72+ API EClient 上有一个 reqPnl 方法,可用于订阅完整投资组合的实时 PnL(未实现和已实现)更新通过 EWrapper

上的关联方法

https://interactivebrokers.github.io/tws-api/classIBApi_1_1EClient.html#a0351f22a77b5ba0c0243122baf72fa45

此外,对于单个 contractID,您可以在客户端上使用:reqPnLSingle

https://interactivebrokers.github.io/tws-api/interfaceIBApi_1_1EWrapper.html#aebeb008f2b763d7bed2969b66bbd1b33

您可以预先提交订单,以查看所有计算结果,例如订单的佣金和保证金影响。

为此,在订单定义中设置 whatIf=True。

然后您将收到 openOrder 事件,其中包含为您进行的所有计算。