2016-12-13 7 views
1

私はここで私の助けになると思っていますが、それはうまくいかないようですが、私は比較的新しいプログラミングであり、どんな反応も高く評価されます。 Appleの株価を変数にダウンロードして印刷する必要があります。私はインタラクティブブローカーのTWSのデモ版を使用しています。IbPy:市場データを取得できません

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

# print all messages from TWS 
def watcher(msg): 
print msg 

# show Bid and Ask quotes 
def my_BidAsk(msg): 
if msg.field == 1: 
    print ('%s:%s: bid: %s' % (contractTuple[0], 
        contractTuple[6], msg.price)) 
elif msg.field == 2: 
    print ('%s:%s: ask: %s' % (contractTuple[0], contractTuple[6], msg.price)) 

def makeStkContract(contractTuple): 
newContract = Contract() 
newContract.m_symbol = contractTuple[0] 
newContract.m_secType = contractTuple[1] 
newContract.m_exchange = contractTuple[2] 
newContract.m_currency = contractTuple[3] 
newContract.m_expiry = contractTuple[4] 
newContract.m_strike = contractTuple[5] 
newContract.m_right = contractTuple[6] 
print ('Contract Values:%s,%s,%s,%s,%s,%s,%s:' % contractTuple) 
return newContract 

if __name__ == '__main__': 
con = ibConnection() 
con.registerAll(watcher) 
showBidAskOnly = False # set False to see the raw messages 
if showBidAskOnly: 
    con.unregister(watcher, message.tickSize, message.tickPrice, 
        message.tickString, message.tickOptionComputation) 
    con.register(my_BidAsk, message.tickPrice) 
con.connect() 
sleep(1) 
tickId = 59 

# Note: Option quotes will give an error if they aren't shown in TWS 
contractTuple = ('AAPL', 'STK', 'SMART', 'USD', '', 0.0, '') 
#contractTuple = ('QQQQ', 'OPT', 'SMART', 'USD', '20070921', 47.0, 'CALL') 
#contractTuple = ('ES', 'FUT', 'GLOBEX', 'USD', '200709', 0.0, '') 
#contractTuple = ('ES', 'FOP', 'GLOBEX', 'USD', '20070920', 1460.0, 'CALL') 
#contractTuple = ('EUR', 'CASH', 'IDEALPRO', 'USD', '', 0.0, '') 
stkContract = makeStkContract(contractTuple) 
print ('* * * * REQUESTING MARKET DATA * * * *') 
con.reqMktData(tickId, stkContract, 'AAPL', False) 
sleep(15) 
print ('* * * * CANCELING MARKET DATA * * * *') 
con.cancelMktData(tickId) 
sleep(1) 
con.disconnect() 
sleep(1) 

これはIbPyのコードです。

+0

あなたは何をしましたか? [このページ](http://stackoverflow.com/help/how-to-ask)を読んで質問を編集してください。 – Takarii

+0

コードを投稿したときに書式設定が乱れましたか?あなたのインデントが間違っていない場合。はいの場合は、書式を修正します。すべてを再ペーストして、すべてを選択{}自動コードフォーマットボタンをクリック – brian

答えて

1

コードを貼り付けるときに書式設定を混乱させると仮定しています。そうでなければ決して動作しません。

エラーコールバックが発生した場合は、「無効な一般的なティック」のようなものが見受けられます。あなたはあなたがしたいティックのタイプを指定する位置に 'AAPL'を置きます。通常のダニの場合は空のままにしておきます。

con.reqMktData(tickId, stkContract, '', False)

私はデモが使用するポートとidはよく分からないが、あなたはありません7496、0(デフォルト)場合は、ここで指定することができます。

例えば、 con = ibConnection(port = 7497, clientId = 123)

+0

素晴らしい、ありがとう! –

関連する問題