2012-11-03 31 views
7

Tôi đang xem xét liệu IbPy có thể là một cách hay để tôi kết nối với API giao dịch người môi giới tương tác hay không. Tôi bây giờ, như một thử nghiệm, cố gắng để thu thập một số bức ảnh chụp giá cổ phiếu, để xem tôi có thể nhận được IbPy để làm việc cho tôi. Tôi đang sử dụng cổng Brokertron để kết nối với IB.IbPy: Cách trích xuất phản hồi API thành biến số

Tôi nhận được giá cổ phiếu được yêu cầu trở lại từ IB API tốt (từ một số mã ví dụ với xử lý lỗi mà tôi đã tìm thấy, xem bên dưới), về mặt kỹ thuật nó hoạt động hướng tới IB API, nhưng tôi không thể làm thế nào để trích xuất các lĩnh vực cụ thể (lĩnh vực = 4, giá = 175,95 dưới đây) vào một biến để sử dụng sau này.

Bất kỳ ý tưởng nào về cách đưa nội dung trường 4 vào một biến? Cảm ơn!

Python dụ kịch bản:

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

class Downloader(object): 
    def __init__(self,debug=False): 
     self.tws = ibConnection('localhost', 4001, 0) 

     if debug: 
      self.tws.registerAll(self.debugHandler) 

     self.tws.connect() 
     self._reqId = 1 # current request id 

    def debugHandler(self,msg): 
     print '[debug]', msg 

    def requestData(self,contract): 
     self.tws.reqMktData(self._reqId,c,'',1) 
     self._reqId+=1 
     return "???" 

if __name__=='__main__': 
    dl = Downloader(debug=True) 
    c = Contract() 
    c.m_symbol = 'SPY' 
    c.m_secType = 'STK' 
    c.m_exchange = 'SMART' 
    c.m_currency = 'USD' 
    laststockpricefield4 = dl.requestData(c) 
    print laststockpricefield4 
    sleep(3) 
    print 'Done.' 

commande dòng đầu ra:

01-Nov-12 22:30:43 DEBUG Server Version: 65 
01-Nov-12 22:30:43 DEBUG TWS Time at connection: 20121101 22:30:43 GMT 
??? 
[debug] ManagedAccounts accountsList=DU15144> 
[debug] NextValidId orderId=1> 
[debug] TickString tickerId=1, tickType=45, value=1351808899> 
[debug] TickPrice tickerId=1, field=4, price=175.95, canAutoExecute=0> 
[debug] TickSize tickerId=1, field=5, size=1> 
[debug] TickGeneric tickerId=1, tickType=49, value=0.0> 
[debug] TickPrice tickerId=1, field=1, price=176.03, canAutoExecute=1> 
[debug] TickSize tickerId=1, field=0, size=378> 
[debug] TickPrice tickerId=1, field=2, price=176.05, canAutoExecute=1> 
[debug] TickSize tickerId=1, field=3, size=344 
+0

Sự cố được giải quyết: –

Trả lời

5

này hoạt động!

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

class Downloader(object): 
    field4price = '' 

    def __init__(self): 
     self.tws = ibConnection('localhost', 4001, 0) 
     self.tws.register(self.tickPriceHandler, 'TickPrice') 
     self.tws.connect() 
     self._reqId = 1 # current request id 

    def tickPriceHandler(self,msg): 
     if msg.field == 4: 
      self.field4price = msg.price 
      #print '[debug]', msg 

    def requestData(self,contract): 
     self.tws.reqMktData(self._reqId, contract, '', 1) 
     self._reqId+=1 

if __name__=='__main__': 
    dl = Downloader() 
    c = Contract() 
    c.m_symbol = 'SPY' 
    c.m_secType = 'STK' 
    c.m_exchange = 'SMART' 
    c.m_currency = 'USD' 
    dl.requestData(c) 
    sleep(3) 
    print 'Price - field 4: ', dl.field4price 
Các vấn đề liên quan