标签: interactive-brokers

盈透证券,如何从注册API获取消费者密钥?

我正在尝试创建一个网络服务器,允许用户验证他们的 IB 帐户。要获取请求令牌,您首先需要获取消费者密钥。我尝试按照他们的指示进行操作,但没有详细说明如何拨打电话获取consumer_key.

终点到底应该是什么?是POSTorGET电话吗?params / body 看起来怎么样?

在此输入图像描述

interactive-brokers

10
推荐指数
2
解决办法
4384
查看次数

Interactive Brokers API:交易平台(TWS)与IB网关

https://www.interactivebrokers.com/en/index.php?f=5041&ns=T中写道,为了使用IB api,您必须通过TWS或IB网关连接到它.

我们的API需要通过Trader Workstation(TWS)或IB Gateway进行连接.

每个的优势是什么?什么解决方案(Gateway或TWS)提供更好的性能?

java tws interactive-brokers

9
推荐指数
2
解决办法
8043
查看次数

通过Python连接到Interactive Brokers API

我希望将Python连接到Interactive Brokers API.谷歌搜索显示ibPy的可用性(请参阅https://pypi.python.org/pypi/ib)但是看起来这个库没有维护,也不支持Python 3.我还发现了https://github.com/ colin1alexander/IbPython3然而该项目已被取消.

我知道Quantopian使用Interactive Brokers作为执行代理,但是有一个用于算法策略的python前端.我有兴趣知道他们是如何实现这一目标的吗?但更广泛地说,有没有人有关于如何将python连接到交互式代理的任何推荐资源/见解?提前致谢

python api interactive-brokers

9
推荐指数
2
解决办法
1万
查看次数

在Interactive Brokers API中获取列出的期权和期货的参数

有很多例子说明如何从盈透证券获得特定资产的价格.但是,当我想获得一个资产的整个选项链时,我不知道列出了哪些特定的攻击.期货相同,我不知道目前有哪些到期日.因此,对于选项,我只是循环遍历所有可能的打击,并且reqMktData每个打击也会产生sleep(1)每100条消息,以避免达到每秒请求数量的限制.显然,其中许多消息返回错误"未找到请求的安全性定义".

这看起来是错误的方法,因为它浪费了很多时间在不存在的资产上.有没有更干净的方法来做这个,或为此目的的特殊功能?

interactive-brokers ibpy

7
推荐指数
2
解决办法
8603
查看次数

ibpy:提取多个合同的API响应

我有兴趣使用ibpy和Interactive Brokers API来获取给定100个股票的实时定时器数据.下面的代码,来自网络上的示例适用于一个股票.有人可以告诉我如何同时为100只股票做这个吗?

Python脚本:

from ib.opt import ibConnection, message
from ib.ext.Contract import Contract
from time import sleep

def my_callback_handler(msg):
    inside_mkt_bid = ''
    inside_mkt_ask = ''

    if msg.field == 1:
        inside_mkt_bid = msg.price
        print 'bid', inside_mkt_bid
    elif msg.field == 2:
        inside_mkt_ask = msg.price
        print 'ask', inside_mkt_ask


tws = ibConnection()
tws.register(my_callback_handler, message.tickSize, message.tickPrice)
tws.connect()

c = Contract()
c.m_symbol = "DATA"
c.m_secType = "STK"
c.m_exchange = "SMART"
c.m_currency = "USD"

tws.reqMktData(1,c,"",False)
sleep(25)

print 'All done'

tws.disconnect()
Run Code Online (Sandbox Code Playgroud)

命令行输出:

    Server Version: 76
    TWS Time at …
Run Code Online (Sandbox Code Playgroud)

python tws interactive-brokers ibpy

7
推荐指数
1
解决办法
3091
查看次数

如何启用TWS延迟市场数据?

这是我用来请求市场数据的脚本.

我还没有订阅数据馈送,所以我会自动返回延迟的市场数据,但显然我必须启用它,但无法找到这样做的地方.
这是脚本和我得到的错误,我只需要接收延迟数据,所以我可以测试我的算法.

from ib.opt import ibConnection, message
from ib.ext.Contract import Contract
from time import sleep

def fundamentalData_handler(msg):
    print(msg)

def error_handler(msg):
    print(msg)

tws = ibConnection(port=7496, clientId=100)
tws.register(error_handler, message.Error)
tws.register(fundamentalData_handler, message.fundamentalData)
tws.connect()

c = Contract()
c.m_symbol = 'AAPL'
c.m_secType = 'STK'
c.m_exchange = "SMART"
c.m_currency = "USD"

print "on it"

tws.reqMktData(897,c,"",False)
sleep(50)

tws.disconnect()
Run Code Online (Sandbox Code Playgroud)

错误:

<error id=-1, errorCode=2104, errorMsg=Market data farm connection is OK:hfarm>
<error id=-1, errorCode=2104, errorMsg=Market data farm connection is OK:eufarm>
<error id=-1, errorCode=2104, errorMsg=Market data farm connection is OK:jfarm> …
Run Code Online (Sandbox Code Playgroud)

python algorithmic-trading interactive-brokers ibpy

7
推荐指数
1
解决办法
2756
查看次数

如何使用 Python API 获取我在盈透证券的账户头寸?

编辑:我找到了有关错误消息的解决方案 - 这是 IB 的 API 上的错误。我在下面作为答案显示的代码对于那些正在寻找从他们在 IB 的账户中读取头寸和资产净值的干净解决方案的人来说应该很有用。

最初的问题[见下面的解决方案; 在此处留下原始问题以获取上下文]:我正在尝试使用公司的 API 获取我在盈透证券 [IB] 的所有账户头寸。他们的文档虽然广泛,但非常令人困惑。示例代码充满了不必要的命令——我想要一些非常精简的东西。

我需要帮助:

  1. 如何获取“每个帐户”的信息 [已解决]
  2. 如何将变量带入 DataFrame [已解决]
  3. 如何避免IB的API打印一系列错误信息[已解决]

到目前为止的代码:

from ibapi.client import EClient 
from ibapi.wrapper import EWrapper
from ibapi.common import * #for TickerId type
import pandas as pd

class ib_class(EWrapper, EClient): 
    def __init__(self): 
        EClient.__init__(self, self)
        self.all_positions = pd.DataFrame([], columns = ['Account','Symbol', 'Quantity', 'Average Cost'])

    def position(self, account, contract, pos, avgCost):
        index = str(account)+str(contract.symbol)
        self.all_positions.loc[index]=account,contract.symbol,pos,avgCost

    def error(self, reqId:TickerId, errorCode:int, errorString:str):
        if reqId > -1:
            print("Error. Id: " …
Run Code Online (Sandbox Code Playgroud)

python api interactive-brokers

7
推荐指数
1
解决办法
4491
查看次数

如何从 Ubuntu 正确卸载盈透证券的 TWS(交易者工作站)?

我想一切都在标题中。

他们确实有一个安装 shell 脚本,但没有别的。我正在寻找任何其他脚本,或者可能是一些 CLI 标志以使其执行卸载,但找不到任何脚本。

如何正确卸载这些东西?

java ubuntu uninstallation tws interactive-brokers

6
推荐指数
3
解决办法
6520
查看次数

从盈透证券的 API 获取多个最后报价

我有一个关于盈透证券的 Python API 的问题。

是否可以将多个资产和股票合约传递给 reqMktData() 函数并获得最后价格?(我可以在 reqMktData 中设置快照 = TRUE 以获得最后价格。您可以假设我已经订阅了适当的数据服务。)

为了正确看待事情,这就是我想要做的:

1) 调用 reqMktData,获取多个资产的最新价格。

2)将数据输入我的预测引擎,然后做一些事情

3) 转到步骤 1。

当我联系盈透证券时,他们说: “一次只能将一份合约传递给 reqMktData(),因此在请求实时数据方面没有批量请求功能。”

显然,解决这个问题的一种方法是做一个循环,但这太慢了。另一种方法是通过多线程,但这是很多工作,而且我负担不起购买新计算机的额外费用。我对任何一个都不感兴趣。

有什么建议?

api finance quantitative-finance python-3.x interactive-brokers

6
推荐指数
1
解决办法
1825
查看次数

IBPY 获取正确的历史成交量数据

我正在尝试从 IBPY 获取历史数据。我明白了,但是音量太低了,根本没用。我想知道如何获得正确的历史成交量估计。

我正在执行以下代码:

from ib.opt import Connection, message
from ib.ext.Contract import Contract
from ib.ext.Order import Order
from time import sleep, strftime

def historical_data_handler(msg):
    print(msg)

connection = Connection.create(port=7496, clientId=999)
connection.register(historical_data_handler, message.historicalData)
connection.connect()

req = Contract()
req.m_secType = "STK"
req.m_symbol = "TSLA"
req.m_currency = "USD"
req.m_exchange = "AMEX"
endtime = strftime('%Y%m%d %H:%M:%S')
connection.reqHistoricalData(1,req,endtime,"1 D","1 hour","TRADES",1,1)

sleep(5)
connection.disconnect()
Run Code Online (Sandbox Code Playgroud)

这是输出:

<historicalData reqId=1, date=20181123  16:30:00, open=333.21, high=333.33, low=331.04, close=332.92, volume=22, count=21, WAP=332.233, hasGaps=False>
<historicalData reqId=1, date=20181123  16:30:00, open=333.21, high=333.33, low=331.04, close=332.92, volume=22, count=21, WAP=332.233, …
Run Code Online (Sandbox Code Playgroud)

algorithmic-trading interactive-brokers ibpy

6
推荐指数
1
解决办法
2353
查看次数