Files
OpenBB/openbb_platform/openbb/package/currency_price.py
montezdesousa 01a71a8995 [Feature] Set provider fallback based on credentials (#6446)
* feat: allow provider fallback based on credentials

* fix: rename prop and raise error

* fix: raise if all providers fail

* fix: remove dead line

* fix: rename defaults field to commands

* rename key and update docs

* fix: rename some stuff

* fix bug

* fix: mypy

* fix: unittests

* docstring

* fix: provider field description

* fix: error messages

* fix: msg

* feat: update defaults class

* feat: update defaults class

* unit tests

* fix test

* msg

* fix: add website documentation

* fix: detailed error message

* update core ruff version

* fix test

* rebuild

---------

Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com>
2024-05-29 14:22:14 +00:00

149 lines
6.2 KiB
Python

### THIS FILE IS AUTO-GENERATED. DO NOT EDIT. ###
import datetime
from typing import List, Literal, Optional, Union
from openbb_core.app.model.field import OpenBBField
from openbb_core.app.model.obbject import OBBject
from openbb_core.app.static.container import Container
from openbb_core.app.static.utils.decorators import exception_handler, validate
from openbb_core.app.static.utils.filters import filter_inputs
from typing_extensions import Annotated
class ROUTER_currency_price(Container):
"""/currency/price
historical
"""
def __repr__(self) -> str:
return self.__doc__ or ""
@exception_handler
@validate
def historical(
self,
symbol: Annotated[
Union[str, List[str]],
OpenBBField(
description="Symbol to get data for. Can use CURR1-CURR2 or CURR1CURR2 format. Multiple comma separated items allowed for provider(s): fmp, polygon, tiingo, yfinance."
),
],
start_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="Start date of the data, in YYYY-MM-DD format."),
] = None,
end_date: Annotated[
Union[datetime.date, None, str],
OpenBBField(description="End date of the data, in YYYY-MM-DD format."),
] = None,
provider: Annotated[
Optional[Literal["fmp", "polygon", "tiingo", "yfinance"]],
OpenBBField(
description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp, polygon, tiingo, yfinance."
),
] = None,
**kwargs
) -> OBBject:
"""Currency Historical Price. Currency historical data.
Currency historical prices refer to the past exchange rates of one currency against
another over a specific period.
This data provides insight into the fluctuations and trends in the foreign exchange market,
helping analysts, traders, and economists understand currency performance,
evaluate economic health, and make predictions about future movements.
Parameters
----------
symbol : Union[str, List[str]]
Symbol to get data for. Can use CURR1-CURR2 or CURR1CURR2 format. Multiple comma separated items allowed for provider(s): fmp, polygon, tiingo, yfinance.
start_date : Union[datetime.date, None, str]
Start date of the data, in YYYY-MM-DD format.
end_date : Union[datetime.date, None, str]
End date of the data, in YYYY-MM-DD format.
provider : Optional[Literal['fmp', 'polygon', 'tiingo', 'yfinance']]
The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp, polygon, tiingo, yfinance.
interval : Union[Literal['1m', '5m', '15m', '30m', '1h', '4h', '1d'], str, Literal['1m', '2m', '5m', '15m', '30m', '60m', '90m', '1h', '1d', '5d', '1W', '1M', '1Q']]
Time interval of the data to return. (provider: fmp, polygon, tiingo, yfinance)
sort : Literal['asc', 'desc']
Sort order of the data. This impacts the results in combination with the 'limit' parameter. The results are always returned in ascending order by date. (provider: polygon)
limit : int
The number of data entries to return. (provider: polygon)
Returns
-------
OBBject
results : List[CurrencyHistorical]
Serializable results.
provider : Optional[Literal['fmp', 'polygon', 'tiingo', 'yfinance']]
Provider name.
warnings : Optional[List[Warning_]]
List of warnings.
chart : Optional[Chart]
Chart object.
extra : Dict[str, Any]
Extra info.
CurrencyHistorical
------------------
date : Union[date, datetime]
The date of the data.
open : float
The open price.
high : float
The high price.
low : float
The low price.
close : float
The close price.
volume : Optional[float]
The trading volume.
vwap : Optional[Annotated[float, Gt(gt=0)]]
Volume Weighted Average Price over the period.
adj_close : Optional[float]
The adjusted close price. (provider: fmp)
change : Optional[float]
Change in the price from the previous close. (provider: fmp)
change_percent : Optional[float]
Change in the price from the previous close, as a normalized percent. (provider: fmp)
transactions : Optional[Annotated[int, Gt(gt=0)]]
Number of transactions for the symbol in the time period. (provider: polygon)
Examples
--------
>>> from openbb import obb
>>> obb.currency.price.historical(symbol='EURUSD', provider='fmp')
>>> # Filter historical data with specific start and end date.
>>> obb.currency.price.historical(symbol='EURUSD', start_date='2023-01-01', end_date='2023-12-31', provider='fmp')
>>> # Get data with different granularity.
>>> obb.currency.price.historical(symbol='EURUSD', provider='polygon', interval='15m')
""" # noqa: E501
return self._run(
"/currency/price/historical",
**filter_inputs(
provider_choices={
"provider": self._get_provider(
provider,
"currency.price.historical",
("fmp", "polygon", "tiingo", "yfinance"),
)
},
standard_params={
"symbol": symbol,
"start_date": start_date,
"end_date": end_date,
},
extra_params=kwargs,
info={
"symbol": {
"fmp": {"multiple_items_allowed": True},
"polygon": {"multiple_items_allowed": True},
"tiingo": {"multiple_items_allowed": True},
"yfinance": {"multiple_items_allowed": True},
}
},
)
)