Основные данные с помощью IbPy

Я пытаюсь использовать IbPY, чтобы узнать цену акций и их финансовые отчеты. Я новичок в Python и не совсем понимаю сложности вызова некоторых из различных методов в IbPy.

Я написал некоторый код для циклического прохождения SP 500 и получения спроса / предложения для каждой акции. Я надеялся, что кто-то сможет помочь мне разобраться в следующем шаге для получения финансовой отчетности.

Мысли о лучшем способе сделать это?

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

with open(r'C:\Users\User\folder\sp500-symbol-list.txt') as f:
reader = csv.reader(f)
 lst = list(reader)


bid_lst=[]
ask_lst = []

start = -1

for x in range(len(lst)):
start = start +1

  def my_callback_handler(msg):
    #print(start)
    inside_mkt_bid = ''
    inside_mkt_ask = ''

    if msg.field == 1:
        inside_mkt_bid = msg.price
        z = ('bid', inside_mkt_bid)
        print(z)
        bid_lst.append(z[1])


    elif msg.field == 2:
        inside_mkt_ask = msg.price
        k=['ask', inside_mkt_ask]
        print(k)
        ask_lst.append(k[1])

tws = ibConnection(port=1111, clientId=000)
tws.register(my_callback_handler, message.tickSize, message.tickPrice)
tws.connect()


c = Contract()
c.m_symbol = lst[start][0]
c.m_secType = 'STK'
c.m_exchange = "SMART"
c.m_currency = "USD"

print(c.m_symbol)
tws.reqMktData(1,c,"",False)
tws.reqFundamentalData(1,c,'ReportsFinStatements')
sleep(1)

tws.disconnect()

1 ответ

Решение

Существует много постороннего кода, но ваша проблема в том, что вы не реализовали обработчик для обратного вызова фундаментальных данных.

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

def fundamentalData_handler(msg):
    print(msg)

def error_handler(msg):
    print(msg)

tws = ibConnection(port=7497, clientId=123)
tws.register(error_handler, message.Error)
tws.register(fundamentalData_handler, message.fundamentalData)
tws.connect()

c = Contract()
c.m_symbol = 'AAPL'
c.m_secType = 'STK'
c.m_exchange = "SMART"
c.m_currency = "USD"

tws.reqFundamentalData(1,c,'ReportsFinStatements')
sleep(2)

tws.disconnect()
Другие вопросы по тегам