簡體   English   中英

使用 python 從盈透證券獲取買賣價格

[英]Get bid/ask price from Interactive Brokers using python

這段代碼:

ib = IB()
ib.connect('127.0.0.1', 7496)

contract = Stock('SLV', 'SMART', 'USD')

test=ib.reqTickers(contract) 
print(test)

將打印出這個:

[Ticker(contract=Stock(symbol='SLV', exchange='SMART', currency='USD'), time=datetime.datetime(2019, 7, 1, 15, 18, 43, 287622, tzinfo=datetime.timezone.utc), bid=14.26, bidSize=11224, ask=14.27, askSize=2970, last=14.27, lastSize=1, volume=48694, open=14.24, high=14.33, low=14.24, close=14.33, halted=0.0, ticks=[], tickByTicks=[], domBids=[], domAsks=[], domTicks=[])]

現在我需要得到出價和要價。

執行print(test.ask)print(test.bid)通常會得到錯誤:AttributeError: 'list' object has no attribute 'ask'。

我嘗試了許多其他與上述類似的事情,但遇到了類似的錯誤。

您的test是一個長度為1的列表,其唯一條目是您感興趣的Ticker對象。請嘗試test[0].ask

我有一個類似的問題,解決了這個問題:

在您的示例中, test是一個 Ticker 對象列表。 此外,在您的示例中,合同包含單個合同,但更常見的是包含一組合同(*合同),根據此處的 ib_insync 文檔。

下面的代碼是一個解決方案:

test = ib.reqTickers(contract)
for _, r in enumerate(test):
    print(r.contract.symbol, r.time, r.bid, r.ask, r.close)

更好的代碼(也根據文檔鏈接)將是:

tickers = [ib.reqTickers(*contracts)]
for i, r in enumerate(tickers):
    for j, t in enumerate(r):
        print(t.contract.symbol, t.time, t.bid, t.ask, t.close)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM