A pythonic way to use the Finnhub data API.
This package is still in a very early stage of development, so it is still incomplete and may contain bugs. It should only be used to test its functionality.
pip install fhub
You need a Finnhub API Key, you can get free one, at https://finnhub.io. For some data a premium account is necessary.
from fhub import Session
hub = Session("your_finnhub_api_key_here")
# Download prices time serie of Tesla.
tsla = hub.candle('TSLA')
# Download prices for several tickers from a date.
data = hub.candle(['AMZN', 'NFLX', 'DIS'], start="2018-01-01")
# Download prices and bollinger bands indicator for several tickers.
data = hub.indicator(['AAPL', 'MSFT'], start='2019-01-01', indicator='bbands',
indicator_fields={'timeperiod': 10})
Real-time subscription via Finnhub's websocket is easy using fhub, even using custom functions for each tick received.
from fhub import Subscription
from time import sleep
def price_monitor(ticker):
# Callback function receive a ticker object
# calculate the average of the last 30 ticks using the ticker history
average = ticker.history.price.tail(30).mean().round(2)
# display the price and the calculated average
print (f'{ticker.symbol}. Price: {ticker.price} Average(30) : {average}')
# show a message if price is over its average
if ticker.price > average:
print(f'{ticker.symbol} is over its average price')
return
# Create a subscription and connect
subs = Subscription("your_finnhub_api_key_here")
# A list of the symbols to which to subscribe is passed
# Created function is assigned as a callback when a new tick is received
subs.connect(["BINANCE:BTCUSDT", "IC MARKETS:1", "AAPL"],
on_tick=price_monitor
)
# Subscription is maintained for 20 seconds and then closed.
for f in range(20):
sleep(1)
subs.close()
See more examples of use at quick_start notebook
Official documentation of the API REST of Finnhub:
Most of the functions available in the REST API have been implemented.