2017-11-23 5 views
0

このリストを対話型ブローカーから取得します。 (API 9.73このrepo使用)python3でリストを解析する方法

ib = IB() 
    ib.connect('127.0.0.1', 7497, clientId=2) 

    data = ib.positions() 
    print((data)) 
    print(type(data)) 

をデータとして戻ってくるが、ここで応答です。だから、本当に明確にすることが...

for d in data: 
     for i in d: 
      print(i) 

しかし、私は、私が解析し、DB、ポジション後に何も(にダンプだろうかに関しては見当がつかない:

`[Position(account='DUC00074', contract=Contract(conId=43645865, symbol='IBKR', secType='STK', exchange='NASDAQ', currency='USD', localSymbol='IBKR', tradingClass='NMS'), position=2800.0, avgCost=39.4058383), Position(account='DUC00074', contract=Contract(conId=72063691, symbol='BRK B', secType='STK',exchange='NYSE', currency='USD', localSymbol='BRK B', tradingClass='BRK B'), position=250.0, avgCost=163.4365424)]` 

私はこれまでのところ持っています

+0

しかし、私が知る限り、リストを含む文字列を取得しないと、リスト自体を取得するので、解析する必要はありません。 –

+0

もし私がリストを取得すれば、どうやってそれを分解してデータベースに入れるのですか? – Chad

+1

それはすでにあなたのために壊れています。返されるオブジェクトの属性を使用するだけです。どのようにDBに入れていくのかは別の質問です。 – spookylukey

答えて

0

私はPythonに新しい、プログラマブルではありません。インタラクティブブローカーからの応答が私を捨てました。私はPHP/jsonで言うように、私はどのように解析するのか分かりません。 JSONレスポンスに使用されていましたが、これはオブジェクトのリストです(上記の例)。それを捨てた。私がそれを理解したら、少し楽になりました。

これは最終的なコードですが、これは誰かが助けてくれることを願っています。

for obj in data: 

#the line below just bascially dumps the object 
print("obj={} ".format(obj)) 

#looking for account number 
#"contract" is an object inside an object, so I had to extract that. 
if(getattr(obj, 'account') == '123456'): 
    print("x={} ".format(getattr(obj, 'account'))) 
    account = (getattr(obj, 'account')) 
    contract = getattr(obj, 'contract') 
    contractId = getattr(contract, 'conId') 
    symbol = getattr(contract, 'symbol') 
    secType = getattr(contract, 'secType') 
    exdate = getattr(contract, 'lastTradeDateOrContractMonth') 
    strike = getattr(contract, 'strike') 
    opt_type = getattr(contract, 'right') 
    localSymbol = getattr(contract, 'localSymbol') 
    position = getattr(obj, 'position') 
    avgCost = getattr(obj, 'avgCost') 

    sql = "insert into IB_opt (account, contractId, symbol, secType, exdate, opt_type, localSymbol, position, avgCost,strike) values (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"; 
    args = (account, contractId, symbol, secType, exdate, opt_type, localSymbol, position, avgCost,strike) 
    cursor.execute(sql, args) 

私が見たすべてのサイトのうち、かなりhelpfulでした。

関連する問題