Market data

pyharmonics requires pandas DataFrame objects. You can create your own. The schema required is shown below. Pyharmonics can extract market data from Binance, Yahoo and Alpaca ( more to come ).

 1>>> from pyharmonics.marketdata import YahooCandleData
 2>>> y = YahooCandleData()
 3>>> y.get_candles('MSFT', y.MIN_5, 300)
 4>>> y.df
 5                                open        high       close       close  volume
 6index
 72023-07-06 18:15:00+01:00  342.410004  342.880005  342.858093  342.858093  299423
 82023-07-06 18:20:00+01:00  342.859985  342.989990  342.825012  342.825012  186800
 92023-07-06 18:25:00+01:00  342.829987  342.829987  342.029999  342.029999  253544
102023-07-06 18:30:00+01:00  342.045013  342.109985  341.720001  341.720001  236668
112023-07-06 18:35:00+01:00  341.779907  342.140015  342.089996  342.089996  190417
12...                               ...         ...         ...         ...     ...
132023-07-12 16:50:00+01:00  336.829987  336.869995  336.390015  336.390015  345811
142023-07-12 16:55:00+01:00  336.369995  336.625000  336.429993  336.429993  301966
152023-07-12 17:00:00+01:00  336.435486  337.154999  336.839996  336.839996  264732
162023-07-12 17:05:00+01:00  336.829987  336.899994  336.684998  336.684998  200605
172023-07-12 17:10:00+01:00  336.690002  337.229004  337.059998  337.059998  110316
18
19[300 rows x 5 columns]
20>>>

All candle data classes support MIN_1, MIN_5, MIN_15, HOUR_1, DAY_1, WEEK_1, MONTH_1, MONTH_3 time horizons. BinanceCandleData and AplacaCandleData also support HOUR_2, HOUR_4, HOUR_8, MIN_3. You can use any time frame you want. You will need to supply this information later if you want to plot meaningfully.

CandleData that requires api keys.

1>>> from pyharmonics.marketdata import AlpacaCandleData
2>>> key = dict('api'='whatever', 'secret'='whatever')
3>>> a = AlpacaCandleData(key)
4>>> a.get_candles('QQQ', y.MIN_5, 300)

Alpaca requires a dictionary with both a key and secret. Binance and Yahoo do not. Binance can accept an API key if you have created one. Order placement on any API requires a KEY but is not covered by this API.

Warning

If you are supplying a key to any API endpoint please store those keys safely and never ever commit them accidentally to any repo. Your keys are your account. Losing control of them is losing control of your account.

Binance Usage:

 1>>> from pyharmonics.marketdata import BinanceCandleData
 2>>> b = BinanceCandleData()
 3>>> b.get_candles('ETHUSDT', b.MIN_5, 300)
 4>>> b.df
 5
 6                              open     high      low    close     volume  close_time                       dts
 7index
 82023-09-12 10:04:59+01:00  1577.85  1578.82  1577.85  1578.07   778.5332  1694509499 2023-09-12 10:04:59+01:00
 92023-09-12 10:09:59+01:00  1578.07  1578.32  1577.16  1577.34   283.1288  1694509799 2023-09-12 10:09:59+01:00
102023-09-12 10:14:59+01:00  1577.35  1578.15  1576.38  1577.90   525.5365  1694510099 2023-09-12 10:14:59+01:00
112023-09-12 10:19:59+01:00  1577.91  1580.58  1577.90  1579.66   742.6356  1694510399 2023-09-12 10:19:59+01:00
122023-09-12 10:24:59+01:00  1579.67  1580.28  1579.09  1579.42   622.7093  1694510699 2023-09-12 10:24:59+01:00
13...                            ...      ...      ...      ...        ...         ...                       ...
142023-09-13 10:39:59+01:00  1597.73  1600.48  1596.59  1599.01  1818.5411  1694597999 2023-09-13 10:39:59+01:00
152023-09-13 10:44:59+01:00  1599.01  1600.91  1597.32  1598.05  1119.4597  1694598299 2023-09-13 10:44:59+01:00
162023-09-13 10:49:59+01:00  1598.05  1598.35  1596.95  1597.11   499.6893  1694598599 2023-09-13 10:49:59+01:00
172023-09-13 10:54:59+01:00  1597.12  1600.47  1597.11  1600.30   573.2835  1694598899 2023-09-13 10:54:59+01:00
182023-09-13 10:59:59+01:00  1600.30  1602.44  1598.80  1600.20  2461.2631  1694599199 2023-09-13 10:59:59+01:00