Wen*_*uka 5 python api gateway interactive-brokers
首先,我成功地使用 TWS API 下了订单。然而,据我了解,为此,我需要在后台运行 TWS 桌面版本。但我需要在我的远程服务器上运行它。因此,我使用了名为 IBeam 的第三方 API,并在远程服务器中使用它创建了一个网关。现在它运行良好,可以满足我从盈透证券请求的 GET 请求。
现在,我想使用 API 请求在 Interactive Broker 中下订单,并通过 IB找到了此文档。然而,对我来说,不清楚他们每个论点的含义,所以到目前为止我陷入了困境。即,从文档中,我需要使用请求正文将 POST 请求发送到 https://localhost:5000/v1/api/iserver/account/{accountId}/orders (IB 网关在 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": {}
}
]
}
Run Code Online (Sandbox Code Playgroud)
根据我从 TWS 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"
Run Code Online (Sandbox Code Playgroud)
如果您能帮助我使用示例代码来使用 Ineteractive Broker 的 REST API 下类似的订单,那就太好了
我发现这篇文章对下订单的过程很有帮助。
即,这是您可以用来下订单的示例请求
{
"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" }
}
]
}
Run Code Online (Sandbox Code Playgroud)
您可以使用这些 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}"
Run Code Online (Sandbox Code Playgroud)
此外,当您下达上述订单时,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')
Run Code Online (Sandbox Code Playgroud)
请注意,当您向 IBKR 发送 POST 请求时,您必须使用正确的标头,如此处所述。