Rozważam, czy IbPy może być dobrym sposobem na nawiązanie połączenia z interfejsem API Interactive Brokers. Jestem teraz, jako test, próbuję zebrać kilka migawek cen akcji, aby sprawdzić, czy mogę przekonać IbPy do pracy dla mnie. Używam Brokertronu do połączenia z IB.IbPy: Jak wyodrębnić odpowiedź API do zmiennej
Otrzymuję żądaną cenę akcji z powrotem od API IB dokładnie (z przykładowego kodu z obsługą błędów, które znalazłem, patrz poniżej), więc technicznie działa w kierunku IB API, ale nie mogę jak wyodrębnić określone pole (pole = 4, cena = 175,95 poniżej) do zmiennej do późniejszego wykorzystania.
Jakieś pomysły, jak uzyskać zawartość pola 4 w zmiennej? Dzięki!
Python przykład skrypt:
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 wyjście liniowe:
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
Problem rozwiązany: –