2016-08-10 6 views
0

こんにちは私は訓練されたコーダーではありませんが、この問題を解明しようとしています。どうすればこのエラーを修正するか教えていただけますか?IBpy python構造体クエリ

コードを構築しようとしています、底がエラー

from __future__ import print_function #I'm using 3.x style print 
from ib.opt import ibConnection, message 
from ib.ext.Contract import Contract 
from ib.ext.TickType import TickType as tt 
from time import sleep 
import pandas as pd 

class account_update : 
    acc_info = [999] # list to store all your account info 

def updateAccount_handler(self,msg): 
     if msg.key in ['AccountType','NetLiquidation']: 
      self.acc_info.append(msg.key, msg.value) 

def error_handler(msg): 
    print (msg) 

def my_callback_handler(msg): 
    if msg.field in [tt.BID,tt.ASK,tt.LAST]: 
     #now we can just store the response in the data frame 
     contracts.loc[msg.tickerId,tt.getField(msg.field)] = msg.price 
     if msg.field == tt.LAST: 
      print(contracts.loc[msg.tickerId,'sym'],msg.price) 

def main(self): 
    conn = Connection.create(port=7497, clientId = 93 
    conn.connect() 

    conn.register(error_handler, 'Error') 
    conn.register(updateAccount_handler,message.updateAccountValue) 

    conn.reqAccountUpdates(1,"Uxxxx008") 
    time.sleep(0.5) 

    conn.disconnect()    



tws = ibConnection(clientId=999) 
tws.register(my_callback_handler, message.tickPrice, message.tickSize) 
tws.register(error_handler, 'Error') 
tws.connect() 

contracts = pd.DataFrame([ 
     ['IBM','SMART','USD'], 
     ['AAPL','SMART','USD'], 
     ['GOOG','SMART','USD'], 
     ['ES','GLOBEX','USD','201609','50'], 
     ['CL','NYMEX','USD','201609','1000'] 
]) 

# make decent column names 
contracts.columns = ['sym','exch','curr','expiry','mult'] 

#add these specific column names to match the name returned by TickType.getField() 
contracts['bidPrice'] = 0 
contracts['askPrice'] = 0 
contracts['lastPrice'] = 0 

for index, row in contracts.iterrows(): 
    c = Contract() 
    c.m_symbol = row['sym'] 
    c.m_exchange = row['exch'] 
    c.m_currency = row['curr'] 
    c.m_secType = 'STK' if row['expiry'] is None else 'FUT' 
    c.m_expiry = row['expiry'] 
    c.m_multiplier = row['mult'] 
    # the tickerId is just the index in but for some reason it needs str() 
    tws.reqMktData(str(index),c,"",False) 

if __name__ == "__main__" : 
    account_update().main()   

を示し、以下の1として私は、このメッセージは、接続が正常であることを意味し、このエラーに

Server Version: 76 
TWS Time at connection:20160810 20:50:31 SGT 
<error id=-1, errorCode=2104, errorMsg=Market data farm connection is OK:usfarm> 
<error id=-1, errorCode=2106, errorMsg=HMDS data farm connection is OK:ushmds.us> 
<error id=-1, errorCode=2106, errorMsg=HMDS data farm connection is OK:ushmds> 
Traceback (most recent call last): 
    File "C:\Python Learning\Models\Python Livedata", line 72, in <module> 
    account_update().main()   
AttributeError: account_update instance has no attribute 'main' 
[Finished in 1.3s] 
+1

'clientId = 93' < - HEREの後にかっこがありません –

答えて

0

を取得します。コードを実行するたびにclientidを変更する必要があります。