使用 API 请求在盈透证券下单

Place an order in Interactive Brokers using API request

首先,首先,我成功地使用 TWS API 下了订单。然而,为此,据我所知,我需要在后台 运行 TWS 桌面版。但是我需要在我的远程服务器上 运行 这个。所以我使用了 3rd party API called IBeam 并在远程服务器中使用它创建了一个网关。现在它运行良好并为我从 Interactive Brokers 请求的 GET 请求提供服务。

现在,我想在 Interactive Broker 中下订单,使用 API 请求并被 IB 找到 this doc。但是,对我来说,我不清楚每个参数的含义,所以到现在为止我都被困住了。即,从文档中,我需要向 https://localhost:5000/v1/api/iserver/account/{accountId}/orders 发送一个 POST 请求(使用 IB 网关 运行ning 在 localhost:5000) 与请求正文

{
  "orders": [
    {
      "acctId": "string",
      "conid": 0,
      "secType": "secType = 265598:STK",
      "cOID": "string",
      "parentId": "string",
      "orderType": "string",
      "listingExchange": "string",
      "isSingleGroup": true,
      "outsideRTH": true,
      "price": 0,
      "auxPrice": null,
      "side": "string",
      "ticker": "string",
      "tif": "string",
      "referrer": "QuickTrade",
      "quantity": 0,
      "fxQty": 0,
      "useAdaptive": true,
      "isCcyConv": true,
      "allocationMethod": "string",
      "strategy": "string",
      "strategyParameters": {}
    }
  ]
}

根据我从交易平台 API 了解到的信息,这是下订单所需的全部信息:

    contract = Contract()
    contract.symbol = "AAPL"
    contract.secType = "STK"
    contract.exchange = "SMART"
    contract.currency = "USD"
    contract.primaryExchange = "NASDAQ"

    order = Order()
    order.action = "BUY"
    order.totalQuantity = 10
    order.orderType = "MKT"

如果你能帮我提供一个示例代码来使用 Ineteractive Broker

的 REST API 下类似的订单,那就太好了

我发现 this article 在下订单的过程中很有帮助。

也就是说,这是您可以用来下订单的示例请求

{
  "orders": [
    {
      "acctId": "DU4299134",
      "conid": 8314,
      "secType": "8314:STK",
      "cOId": "testAlgoOrder",
      "orderType": "LMT",
      "price": 142,
      "side": "BUY",
      "tif": "DAY",
      "quantity": 1,
      "strategy": "Adaptive",
      "strategyParameters": {"adaptivePriority": "Normal" }
    }
  ]
}

您可以使用这些 URL 查找有关策略的更多信息,

url = f"https://localhost:5000/v1/api/iserver/contract/{conid}/algos"
url_more_info = f"https://localhost:5000/v1/api/iserver/contract/{conid}/algos?addDescription=1&addParams=1&algos={algos}"

此外,当您像上面那样下订单时,IBKR 会要求您确认订单,您可以通过

url = f"https://localhost:5000/v1/api/iserver/reply/{replyid}"

data = '''{
  "confirmed": true
}'''

response = requests.post(url, data=data, headers=headers, verify='path to .pem file')

请注意,当您向 IBKR 发送 POST 请求时,您必须使用正确的 header here