Utilizând TWS Python APi (Interactive Brokers API) nativ, cum pot obține într-o variabilă instantaneul de preț al unei liste de valori mobiliare? (Programare, Python 3.X, Brokeri Interactivi, Tws)

Nytho a intrebat.

Sunt nou în Python și aș dori să obțin într-o variabilă instantaneul de preț al unei liste de titluri de valoare folosind API-ul nativ TWS Python (Interactive Brokers API). De exemplu, pentru acțiunile APPL, AMZN și NFLX, aș dori să obțin ceva de genul snaphot = [‘APPL’, 195.2, ‘AMZN’, 1771.5, ‘NFLX’, 306].

Vă mulțumesc în avans pentru ajutor.

Ghidul de la Interactive Brokers mi s-a părut greu de înțeles și cu o lipsă de exemple. singurul exemplu pe care îl oferă este pentru o singură acțiune și nu se oprește niciodată din funcționare.

from ibapi.client import EClient
from ibapi.wrapper import EWrapper
from ibapi.contract import Contract
from ibapi.ticktype import TickTypeEnum

import time

class TestApp(EWrapper, EClient):
    def __init__(self):
        EClient.__init__(self, self)

    def error(self, reqId, errorCode, errorString):
        print("Error: ", reqId, " ", errorCode, " ", errorString)

    def tickPrice(self, reqId, tickType, price, attrib):
        print("Tick Price. Ticker Id:", reqId, "tickType:",
TickTypeEnum.to_str(tickType), "Price:", price, end=' ')

    def tickSize(self, reqId, tickType, size):
        print("Tick Size. Ticker Id:", reqId, "tickType:",
TickTypeEnum.to_str(tickType), "Size:", size)

def main():
    app = TestApp()

    app.connect("127.0.0.1", 7496, 0)


    time.sleep(0.1)

    contract = Contract()
    contract.secType = "FUT"
    contract.exchange = "DTB"
    contract.currency = "EUR"
    contract.localSymbol = "FDXM SEP 19"

    app.reqMarketDataType(4) # 1 for live, 4 for delayed-frozen data if live is not available
    app.reqMktData(1, contract, "", True, False, [])

    app.run()

if __name__ == "__main__":
    main()

1 răspunsuri
Josh

Ar trebui doar să definiți obiecte Contract pentru acțiuni, de ex.

Exemple de definire a contractelor

appl_contract = Contract()
appl_contract.symbol = "AAPL"
appl_contract.secType = "STK"
appl_contract.exchange = "SMART"
appl_contract.primaryExchange = "ISLAND"
appl_contract.currency = "USD"

Apoi, să invoci reqMktData cu fiecare obiect Contract, folosind un argument tickerId unic pentru fiecare cerere în curs de executare (ceea ce înseamnă că cererea este încă activă). În callback-ul tickPrice, primiți datele de preț returnate și utilizați tickerId pentru a potrivi datele cu cererea inițială. Dacă doriți doar ultimul preț tranzacționat, filtrați pentru tickType == 4.

Definiții ale tipului de tick

După ce ați primit datele pentru ultimul instrument din listă, puteți apela disconnect() dacă doriți să deconectați/încheiați programul.

S-ar putea să vă intereseze, de asemenea, funcția Cursul Python TWS API al Academiei de Traderi de pe site-ul IBKR: