mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-10-30 14:02:06 +00:00
Merge branch 'develop' into feature/real_estate
This commit is contained in:
@@ -81,7 +81,13 @@ class AlternativeDataController(BaseController):
|
||||
)
|
||||
|
||||
if ns_parser:
|
||||
hackernews_view.display_stories(limit=ns_parser.limit)
|
||||
hackernews_view.display_stories(
|
||||
limit=ns_parser.limit,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def call_realestate(self, _):
|
||||
|
||||
@@ -125,6 +125,9 @@ class CovidController(BaseController):
|
||||
raw=ns_parser.raw,
|
||||
limit=ns_parser.limit,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -150,6 +153,9 @@ class CovidController(BaseController):
|
||||
raw=ns_parser.raw,
|
||||
limit=ns_parser.limit,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -175,6 +181,9 @@ class CovidController(BaseController):
|
||||
raw=ns_parser.raw,
|
||||
limit=ns_parser.limit,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -200,6 +209,9 @@ class CovidController(BaseController):
|
||||
raw=ns_parser.raw,
|
||||
limit=ns_parser.limit,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -251,4 +263,8 @@ class CovidController(BaseController):
|
||||
limit=ns_parser.limit,
|
||||
ascend=ns_parser.reverse,
|
||||
threshold=ns_parser.threshold,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@@ -133,6 +133,7 @@ def display_covid_ov(
|
||||
raw: bool = False,
|
||||
limit: int = 10,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
plot: bool = True,
|
||||
) -> None:
|
||||
"""Prints table showing historical cases and deaths by country.
|
||||
@@ -145,6 +146,8 @@ def display_covid_ov(
|
||||
Flag to display raw data
|
||||
limit: int
|
||||
Number of raw data to show
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Format to export data
|
||||
plot: bool
|
||||
@@ -165,7 +168,14 @@ def display_covid_ov(
|
||||
)
|
||||
|
||||
if export:
|
||||
export_data(export, os.path.dirname(os.path.abspath(__file__)), "ov", data)
|
||||
data = covid_model.get_covid_ov(country, limit)
|
||||
export_data(
|
||||
export,
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"ov",
|
||||
data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -175,6 +185,7 @@ def display_covid_stat(
|
||||
raw: bool = False,
|
||||
limit: int = 10,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
plot: bool = True,
|
||||
) -> None:
|
||||
"""Prints table showing historical cases and deaths by country.
|
||||
@@ -189,6 +200,8 @@ def display_covid_stat(
|
||||
Flag to display raw data
|
||||
limit: int
|
||||
Number of raw data to show
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Format to export data
|
||||
plot : bool
|
||||
@@ -213,7 +226,13 @@ def display_covid_stat(
|
||||
cols = data.columns.tolist()
|
||||
cols = cols[-1:] + cols[:-1]
|
||||
data = data[cols]
|
||||
export_data(export, os.path.dirname(os.path.abspath(__file__)), stat, data)
|
||||
export_data(
|
||||
export,
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
stat,
|
||||
data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -223,6 +242,7 @@ def display_case_slopes(
|
||||
threshold: int = 10000,
|
||||
ascend: bool = False,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Prints table showing countries with the highest case slopes.
|
||||
|
||||
@@ -253,4 +273,5 @@ def display_case_slopes(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
f"slopes_{days_back}day",
|
||||
data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -15,12 +15,14 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_stories(limit: int = 10, export: str = "") -> None:
|
||||
def display_stories(limit: int = 10, export: str = "", sheet_name: str = None) -> None:
|
||||
"""View top stories from HackerNews.
|
||||
Parameters
|
||||
----------
|
||||
limit: int
|
||||
Number of stories to return
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Export dataframe data to csv,json,xlsx file
|
||||
"""
|
||||
@@ -28,4 +30,10 @@ def display_stories(limit: int = 10, export: str = "") -> None:
|
||||
if not df.empty:
|
||||
df.columns = [col.capitalize() for col in df.columns]
|
||||
print_rich_table(df, title="HackerNews Top Stories")
|
||||
export_data(export, os.path.dirname(os.path.abspath(__file__)), "hn", df)
|
||||
export_data(
|
||||
export,
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"hn",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -26,7 +26,10 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_star_history(
|
||||
repo: str, export: str = "", external_axes: Optional[List[plt.Axes]] = None
|
||||
repo: str,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
) -> None:
|
||||
"""Plots repo summary [Source: https://api.github.com].
|
||||
|
||||
@@ -58,7 +61,13 @@ def display_star_history(
|
||||
if external_axes is None:
|
||||
theme.visualize_output()
|
||||
|
||||
export_data(export, os.path.dirname(os.path.abspath(__file__)), "sh", df)
|
||||
export_data(
|
||||
export,
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"sh",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -67,6 +76,7 @@ def display_top_repos(
|
||||
categories: str = "",
|
||||
limit: int = 10,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
) -> None:
|
||||
"""Plots repo summary [Source: https://api.github.com].
|
||||
@@ -116,11 +126,17 @@ def display_top_repos(
|
||||
if external_axes is None:
|
||||
theme.visualize_output()
|
||||
|
||||
export_data(export, os.path.dirname(os.path.abspath(__file__)), "tr", df)
|
||||
export_data(
|
||||
export,
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"tr",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_repo_summary(repo: str, export: str = "") -> None:
|
||||
def display_repo_summary(repo: str, export: str = "", sheet_name: str = None) -> None:
|
||||
"""Prints table showing repo summary [Source: https://api.github.com].
|
||||
|
||||
Parameters
|
||||
@@ -141,4 +157,5 @@ def display_repo_summary(repo: str, export: str = "") -> None:
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"rs",
|
||||
data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -121,7 +121,11 @@ class OSSController(BaseController):
|
||||
if ns_parser:
|
||||
if valid_repo(ns_parser.repo):
|
||||
github_view.display_repo_summary(
|
||||
repo=ns_parser.repo, export=ns_parser.export
|
||||
repo=ns_parser.repo,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -200,6 +204,9 @@ class OSSController(BaseController):
|
||||
show_growth=ns_parser.show_growth,
|
||||
chart_type=ns_parser.chart_type,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -244,4 +251,7 @@ class OSSController(BaseController):
|
||||
categories=ns_parser.categories,
|
||||
limit=ns_parser.limit,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@@ -20,6 +20,8 @@ from openbb_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# pylint: disable=too-many-arguments
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_rossindex(
|
||||
@@ -30,6 +32,7 @@ def display_rossindex(
|
||||
show_growth: bool = True,
|
||||
chart_type: str = "stars",
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
) -> None:
|
||||
"""Plots list of startups from ross index [Source: https://runacap.com/]
|
||||
@@ -128,4 +131,5 @@ def display_rossindex(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"runaidx",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -37,6 +37,7 @@ def display_sentiment_analysis(
|
||||
symbol: str,
|
||||
raw: bool = False,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""Plots Sentiment analysis from FinBrain. Prints table if raw is True. [Source: FinBrain]
|
||||
@@ -47,6 +48,8 @@ def display_sentiment_analysis(
|
||||
Ticker symbol to get the sentiment analysis from
|
||||
raw: False
|
||||
Display raw table data
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Format to export data
|
||||
external_axes: Optional[List[plt.Axes]], optional
|
||||
@@ -138,5 +141,9 @@ def display_sentiment_analysis(
|
||||
)
|
||||
|
||||
export_data(
|
||||
export, os.path.dirname(os.path.abspath(__file__)), "headlines", sentiment
|
||||
export,
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"headlines",
|
||||
sentiment,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -17,7 +17,7 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@check_api_key(["API_FINNHUB_KEY"])
|
||||
def display_sentiment_stats(ticker: str, export: str = ""):
|
||||
def display_sentiment_stats(ticker: str, export: str = "", sheet_name: str = None):
|
||||
"""
|
||||
Prints Sentiment stats which displays buzz, news score, articles last week, articles weekly average,
|
||||
bullish vs bearish percentages, sector average bullish percentage, and sector average news score
|
||||
@@ -55,6 +55,7 @@ Sector Average News Score: {round(100*d_stats['sectorAverageNewsScore'],2)} %"""
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"stats",
|
||||
pd.DataFrame(d_stats),
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
else:
|
||||
|
||||
@@ -27,6 +27,7 @@ def display_mentions(
|
||||
symbol: str,
|
||||
start_date: str = "",
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""Plots weekly bars of stock's interest over time. other users watchlist. [Source: Google].
|
||||
@@ -37,6 +38,8 @@ def display_mentions(
|
||||
Ticker symbol
|
||||
start_date : str
|
||||
Start date as YYYY-MM-DD string
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Format to export data
|
||||
external_axes : Optional[List[plt.Axes]], optional
|
||||
@@ -80,7 +83,11 @@ def display_mentions(
|
||||
theme.visualize_output()
|
||||
|
||||
export_data(
|
||||
export, os.path.dirname(os.path.abspath(__file__)), "mentions", df_interest
|
||||
export,
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"mentions",
|
||||
df_interest,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -90,6 +97,7 @@ def display_correlation_interest(
|
||||
data: pd.DataFrame,
|
||||
words: List[str],
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""Plots interest over time of words/sentences versus stock price. [Source: Google].
|
||||
@@ -102,6 +110,8 @@ def display_correlation_interest(
|
||||
Data dataframe
|
||||
words : List[str]
|
||||
Words to check for interest for
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Format to export data
|
||||
external_axes : Optional[List[plt.Axes]], optional
|
||||
@@ -150,7 +160,11 @@ def display_correlation_interest(
|
||||
theme.visualize_output()
|
||||
|
||||
export_data(
|
||||
export, os.path.dirname(os.path.abspath(__file__)), "interest", df_interest
|
||||
export,
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"interest",
|
||||
df_interest,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -159,6 +173,7 @@ def display_regions(
|
||||
symbol: str,
|
||||
limit: int = 5,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""Plots bars of regions based on stock's interest. [Source: Google].
|
||||
@@ -169,6 +184,8 @@ def display_regions(
|
||||
Ticker symbol
|
||||
limit: int
|
||||
Number of regions to show
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Format to export data
|
||||
external_axes : Optional[List[plt.Axes]], optional
|
||||
@@ -201,11 +218,19 @@ def display_regions(
|
||||
if external_axes is None:
|
||||
theme.visualize_output()
|
||||
|
||||
export_data(export, os.path.dirname(os.path.abspath(__file__)), "regions", df)
|
||||
export_data(
|
||||
export,
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"regions",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_queries(symbol: str, limit: int = 5, export: str = ""):
|
||||
def display_queries(
|
||||
symbol: str, limit: int = 5, export: str = "", sheet_name: str = None
|
||||
):
|
||||
"""Prints table showing top related queries with this stock's query. [Source: Google].
|
||||
|
||||
Parameters
|
||||
@@ -214,6 +239,8 @@ def display_queries(symbol: str, limit: int = 5, export: str = ""):
|
||||
Ticker symbol
|
||||
limit: int
|
||||
Number of regions to show
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Format to export data
|
||||
{"csv","json","xlsx","png","jpg","pdf","svg"}
|
||||
@@ -235,11 +262,14 @@ def display_queries(symbol: str, limit: int = 5, export: str = ""):
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"queries",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_rise(symbol: str, limit: int = 10, export: str = ""):
|
||||
def display_rise(
|
||||
symbol: str, limit: int = 10, export: str = "", sheet_name: str = None
|
||||
):
|
||||
"""Prints top rising related queries with this stock's query. [Source: Google].
|
||||
|
||||
Parameters
|
||||
@@ -248,6 +278,8 @@ def display_rise(symbol: str, limit: int = 10, export: str = ""):
|
||||
Ticker symbol
|
||||
limit: int
|
||||
Number of queries to show
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Format to export data
|
||||
"""
|
||||
@@ -263,5 +295,9 @@ def display_rise(symbol: str, limit: int = 10, export: str = ""):
|
||||
)
|
||||
|
||||
export_data(
|
||||
export, os.path.dirname(os.path.abspath(__file__)), "rise", df_related_queries
|
||||
export,
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"rise",
|
||||
df_related_queries,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -193,7 +193,11 @@ def display_watchlist(limit: int = 5):
|
||||
]
|
||||
)
|
||||
def display_popular_tickers(
|
||||
limit: int = 10, post_limit: int = 50, subreddits: str = "", export: str = ""
|
||||
limit: int = 10,
|
||||
post_limit: int = 50,
|
||||
subreddits: str = "",
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
):
|
||||
"""Prints table showing latest popular tickers. [Source: Reddit].
|
||||
|
||||
@@ -224,6 +228,7 @@ def display_popular_tickers(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"popular",
|
||||
popular_tickers_df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -408,6 +413,7 @@ def display_redditsent(
|
||||
subreddits: str = "all",
|
||||
display: bool = False,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""Plots Reddit sentiment about a search term. Prints table showing if display is True.
|
||||
@@ -430,6 +436,8 @@ def display_redditsent(
|
||||
Comma-separated list of subreddits
|
||||
display: bool
|
||||
Enable printing of raw sentiment values for each post
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Format to export data
|
||||
external_axes: Optional[List[plt.Axes]]
|
||||
@@ -469,4 +477,5 @@ def display_redditsent(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"polarity_scores",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -22,6 +22,7 @@ from openbb_terminal.helper_funcs import (
|
||||
is_valid_axes_count,
|
||||
)
|
||||
|
||||
# pylint: disable=too-many-arguments
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -36,6 +37,7 @@ def display_historical(
|
||||
raw: bool = False,
|
||||
limit: int = 10,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""Display historical sentiment data of a ticker,
|
||||
@@ -57,6 +59,8 @@ def display_historical(
|
||||
limit: int
|
||||
Number of results display on the terminal
|
||||
Default: 10
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Format to export data
|
||||
external_axes: Optional[List[plt.Axes]], optional
|
||||
@@ -123,6 +127,7 @@ def display_historical(
|
||||
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
|
||||
"hist",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
RAW_COLS = ["twitter", "stocktwits", "yahoo", "likes", "RHI", "AHI"]
|
||||
@@ -155,6 +160,7 @@ def display_trending(
|
||||
number: int = 10,
|
||||
limit: int = 10,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
):
|
||||
"""Display most talked about tickers within
|
||||
the last hour together with their sentiment data.
|
||||
@@ -171,6 +177,8 @@ def display_trending(
|
||||
limit: int
|
||||
Number of results display on the terminal
|
||||
Default: 10
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Format to export data
|
||||
"""
|
||||
@@ -188,6 +196,7 @@ def display_trending(
|
||||
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
|
||||
"trend",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
RAW_COLS = [
|
||||
|
||||
@@ -26,7 +26,9 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_inference(symbol: str, limit: int = 100, export: str = ""):
|
||||
def display_inference(
|
||||
symbol: str, limit: int = 100, export: str = "", sheet_name: str = None
|
||||
):
|
||||
"""Prints Inference sentiment from past n tweets.
|
||||
|
||||
Parameters
|
||||
@@ -35,6 +37,8 @@ def display_inference(symbol: str, limit: int = 100, export: str = ""):
|
||||
Stock ticker symbol
|
||||
limit: int
|
||||
Number of tweets to analyze
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Format to export tweet dataframe
|
||||
"""
|
||||
@@ -72,7 +76,13 @@ def display_inference(symbol: str, limit: int = 100, export: str = ""):
|
||||
f"Of the last {len(df_tweets)} tweets, {100*percent_neg:.2f} % had a higher negative sentiment"
|
||||
)
|
||||
|
||||
export_data(export, os.path.dirname(os.path.abspath(__file__)), "infer", df_tweets)
|
||||
export_data(
|
||||
export,
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"infer",
|
||||
df_tweets,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -82,6 +92,7 @@ def display_sentiment(
|
||||
n_days_past: int = 2,
|
||||
compare: bool = False,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""Plots sentiments from symbol
|
||||
@@ -96,6 +107,8 @@ def display_sentiment(
|
||||
Number of days to extract tweets for
|
||||
compare: bool
|
||||
Show corresponding change in stock price
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Format to export tweet dataframe
|
||||
external_axes: Optional[List[plt.Axes]], optional
|
||||
@@ -185,5 +198,9 @@ def display_sentiment(
|
||||
theme.visualize_output()
|
||||
|
||||
export_data(
|
||||
export, os.path.dirname(os.path.abspath(__file__)), "sentiment", df_tweets
|
||||
export,
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"sentiment",
|
||||
df_tweets,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -18,6 +18,7 @@ def display_news(
|
||||
sources: str = "",
|
||||
limit: int = 5,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
sort: str = "published",
|
||||
):
|
||||
"""Plots news for a given term and source. [Source: Feedparser]
|
||||
@@ -48,4 +49,5 @@ def display_news(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
f"news_{'_'.join(term)}_{'_'.join(sources)}",
|
||||
articles,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -25,6 +25,7 @@ def display_news(
|
||||
show_newest: bool = True,
|
||||
sources: str = "",
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Prints table showing news for a given term. [Source: NewsAPI]
|
||||
|
||||
@@ -53,4 +54,5 @@ def display_news(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
f"news_{query}_{'_'.join(sources)}",
|
||||
pd.DataFrame(tables),
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -50,7 +50,9 @@ def lambda_color_red(val: Any) -> str:
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_summary(data: pd.DataFrame, export: str = "") -> None:
|
||||
def display_summary(
|
||||
data: pd.DataFrame, export: str = "", sheet_name: str = None
|
||||
) -> None:
|
||||
"""Prints table showing summary statistics
|
||||
|
||||
Parameters
|
||||
@@ -75,6 +77,7 @@ def display_summary(data: pd.DataFrame, export: str = "") -> None:
|
||||
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
|
||||
"summary",
|
||||
summary,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -161,6 +164,7 @@ def display_cdf(
|
||||
target: str,
|
||||
symbol: str = "",
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""Plots Cumulative Distribution Function
|
||||
@@ -263,6 +267,7 @@ def display_cdf(
|
||||
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
|
||||
"cdf",
|
||||
pd.DataFrame(cdf),
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -660,6 +665,7 @@ def display_seasonal(
|
||||
target: str,
|
||||
multiplicative: bool = False,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
) -> None:
|
||||
"""Plots seasonal decomposition data
|
||||
@@ -798,11 +804,14 @@ def display_seasonal(
|
||||
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
|
||||
"summary",
|
||||
cycle.join(trend),
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_normality(data: pd.DataFrame, target: str, export: str = "") -> None:
|
||||
def display_normality(
|
||||
data: pd.DataFrame, target: str, export: str = "", sheet_name: str = None
|
||||
) -> None:
|
||||
"""Prints table showing normality statistics
|
||||
|
||||
Parameters
|
||||
@@ -832,6 +841,7 @@ def display_normality(data: pd.DataFrame, target: str, export: str = "") -> None
|
||||
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
|
||||
"normality",
|
||||
normal,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -842,6 +852,7 @@ def display_unitroot(
|
||||
fuller_reg: str = "c",
|
||||
kpss_reg: str = "c",
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
):
|
||||
"""Prints table showing unit root test calculations
|
||||
|
||||
@@ -873,6 +884,7 @@ def display_unitroot(
|
||||
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
|
||||
"unitroot",
|
||||
data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -883,6 +895,7 @@ def display_raw(
|
||||
ascend: bool = False,
|
||||
limit: int = 20,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Prints table showing raw stock data
|
||||
|
||||
@@ -931,6 +944,7 @@ def display_raw(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"raw",
|
||||
data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -942,6 +956,7 @@ def display_line(
|
||||
markers_lines: Optional[List[datetime]] = None,
|
||||
markers_scatter: Optional[List[datetime]] = None,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
) -> None:
|
||||
"""Display line plot of data
|
||||
@@ -958,6 +973,8 @@ def display_line(
|
||||
List of dates to highlight using vertical lines
|
||||
markers_scatter: Optional[List[datetime]]
|
||||
List of dates to highlight using scatter
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Format to export data
|
||||
external_axes : Optional[List[plt.Axes]], optional
|
||||
@@ -1042,6 +1059,7 @@ def display_line(
|
||||
export,
|
||||
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
|
||||
"line",
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -29,6 +29,7 @@ def display_mean_std(
|
||||
symbol: str = "",
|
||||
window: int = 14,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
) -> None:
|
||||
"""Plots mean std deviation
|
||||
@@ -43,6 +44,8 @@ def display_mean_std(
|
||||
Stock ticker
|
||||
window : int
|
||||
Length of window
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Format to export data
|
||||
external_axes: Optional[List[plt.Axes]], optional
|
||||
@@ -128,6 +131,7 @@ def display_mean_std(
|
||||
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
|
||||
"rolling",
|
||||
rolling_mean.join(rolling_std, lsuffix="_mean", rsuffix="_std"),
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -138,6 +142,7 @@ def display_spread(
|
||||
symbol: str = "",
|
||||
window: int = 14,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""Plots rolling spread
|
||||
@@ -154,6 +159,8 @@ def display_spread(
|
||||
Stock ticker
|
||||
window : int
|
||||
Length of window
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Format to export data
|
||||
external_axes: Optional[List[plt.Axes]], optional
|
||||
@@ -238,6 +245,7 @@ def display_spread(
|
||||
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
|
||||
"spread",
|
||||
df_sd.join(df_var, lsuffix="_sd", rsuffix="_var"),
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -249,6 +257,7 @@ def display_quantile(
|
||||
window: int = 14,
|
||||
quantile: float = 0.5,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
) -> None:
|
||||
"""Plots rolling quantile
|
||||
@@ -265,6 +274,8 @@ def display_quantile(
|
||||
Length of window
|
||||
quantile: float
|
||||
Quantile to get
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Format to export data
|
||||
external_axes: Optional[List[plt.Axes]], optional
|
||||
@@ -334,6 +345,7 @@ def display_quantile(
|
||||
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
|
||||
"quantile",
|
||||
df_med.join(df_quantile),
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -344,6 +356,7 @@ def display_skew(
|
||||
target: str,
|
||||
window: int = 14,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
) -> None:
|
||||
"""Plots rolling skew
|
||||
@@ -358,6 +371,8 @@ def display_skew(
|
||||
Column in data to look at
|
||||
window: int
|
||||
Length of window
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Format to export data
|
||||
external_axes: Optional[List[plt.Axes]], optional
|
||||
@@ -417,6 +432,7 @@ def display_skew(
|
||||
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
|
||||
"skew",
|
||||
df_skew,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -427,6 +443,7 @@ def display_kurtosis(
|
||||
target: str,
|
||||
window: int = 14,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""Plots rolling kurtosis
|
||||
@@ -441,6 +458,8 @@ def display_kurtosis(
|
||||
Column in data to look at
|
||||
window: int
|
||||
Length of window
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Format to export data
|
||||
external_axes: Optional[List[plt.Axes]], optional
|
||||
@@ -503,4 +522,5 @@ def display_kurtosis(
|
||||
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
|
||||
"kurtosis",
|
||||
df_kurt,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -33,6 +33,7 @@ def fibonacci_retracement(
|
||||
end_date: Optional[Union[str, None]] = None,
|
||||
symbol: str = "",
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""Plots Calculated fibonacci retracement levels
|
||||
@@ -49,6 +50,8 @@ def fibonacci_retracement(
|
||||
User picked date for ending retracement
|
||||
symbol: str
|
||||
Ticker symbol
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Format to export data
|
||||
external_axes : Optional[List[plt.Axes]], optional
|
||||
@@ -138,4 +141,5 @@ def fibonacci_retracement(
|
||||
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
|
||||
"fib",
|
||||
df_fib,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -37,6 +37,7 @@ def display_cci(
|
||||
scalar: float = 0.0015,
|
||||
symbol: str = "",
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""Plots CCI Indicator
|
||||
@@ -119,6 +120,7 @@ def display_cci(
|
||||
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
|
||||
"cci",
|
||||
df_ta,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -130,6 +132,7 @@ def display_macd(
|
||||
n_signal: int = 9,
|
||||
symbol: str = "",
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""Plots MACD signal
|
||||
@@ -212,6 +215,7 @@ def display_macd(
|
||||
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
|
||||
"macd",
|
||||
df_ta,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -223,6 +227,7 @@ def display_rsi(
|
||||
drift: int = 1,
|
||||
symbol: str = "",
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""Plots RSI Indicator
|
||||
@@ -300,6 +305,7 @@ def display_rsi(
|
||||
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
|
||||
"rsi",
|
||||
df_ta,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -311,6 +317,7 @@ def display_stoch(
|
||||
slowkperiod: int = 3,
|
||||
symbol: str = "",
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
) -> None:
|
||||
"""Plots stochastic oscillator signal
|
||||
@@ -399,6 +406,7 @@ def display_stoch(
|
||||
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
|
||||
"stoch",
|
||||
df_ta,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -408,6 +416,7 @@ def display_fisher(
|
||||
window: int = 14,
|
||||
symbol: str = "",
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""Plots Fisher Indicator
|
||||
@@ -492,6 +501,7 @@ def display_fisher(
|
||||
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
|
||||
"fisher",
|
||||
df_ta,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -501,6 +511,7 @@ def display_cg(
|
||||
window: int = 14,
|
||||
symbol: str = "",
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""Plots center of gravity Indicator
|
||||
@@ -563,6 +574,7 @@ def display_cg(
|
||||
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
|
||||
"cg",
|
||||
df_ta,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -572,6 +584,7 @@ def display_clenow_momentum(
|
||||
symbol: str = "",
|
||||
window: int = 90,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""Prints table and plots clenow momentum
|
||||
@@ -638,6 +651,7 @@ def display_clenow_momentum(
|
||||
export,
|
||||
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
|
||||
"clenow",
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -646,6 +660,7 @@ def display_demark(
|
||||
symbol: str = "",
|
||||
min_to_show: int = 5,
|
||||
export: str = "",
|
||||
sheet_name: Optional[str] = "",
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""Plot demark sequential indicator
|
||||
@@ -753,4 +768,5 @@ def display_demark(
|
||||
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
|
||||
"demark",
|
||||
stock_data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -25,6 +25,8 @@ from openbb_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# pylint: disable=too-many-arguments
|
||||
|
||||
register_matplotlib_converters()
|
||||
|
||||
|
||||
@@ -36,6 +38,7 @@ def view_ma(
|
||||
ma_type: str = "EMA",
|
||||
symbol: str = "",
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
) -> None:
|
||||
"""Plots MA technical indicator
|
||||
@@ -52,6 +55,8 @@ def view_ma(
|
||||
Type of moving average. Either "EMA" "ZLMA" or "SMA"
|
||||
symbol: str
|
||||
Ticker
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Format to export data
|
||||
external_axes: Optional[List[plt.Axes]], optional
|
||||
@@ -126,6 +131,7 @@ def view_ma(
|
||||
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
|
||||
f"{ma_type.lower()}{'_'.join([str(win) for win in window])}",
|
||||
price_df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -138,6 +144,7 @@ def view_vwap(
|
||||
offset: int = 0,
|
||||
interval: str = "",
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""Plots VWMA technical indicator
|
||||
@@ -233,4 +240,5 @@ def view_vwap(
|
||||
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
|
||||
"VWAP",
|
||||
df_vwap,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -34,6 +34,7 @@ def display_adx(
|
||||
drift: int = 1,
|
||||
symbol: str = "",
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""Plots ADX indicator
|
||||
@@ -114,6 +115,7 @@ def display_adx(
|
||||
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
|
||||
"adx",
|
||||
df_ta,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -124,6 +126,7 @@ def display_aroon(
|
||||
scalar: int = 100,
|
||||
symbol: str = "",
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""Plots Aroon indicator
|
||||
@@ -138,6 +141,8 @@ def display_aroon(
|
||||
Ticker
|
||||
scalar: int
|
||||
Scalar variable
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Format to export data
|
||||
external_axes: Optional[List[plt.Axes]], optional
|
||||
@@ -204,4 +209,5 @@ def display_aroon(
|
||||
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
|
||||
"aroon",
|
||||
df_ta,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -22,6 +22,8 @@ from openbb_terminal.common.technical_analysis import ta_helpers
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# pylint: disable=too-many-arguments
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_bbands(
|
||||
@@ -31,6 +33,7 @@ def display_bbands(
|
||||
n_std: float = 2,
|
||||
mamode: str = "sma",
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""Plots bollinger bands
|
||||
@@ -105,6 +108,7 @@ def display_bbands(
|
||||
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
|
||||
"bbands",
|
||||
df_ta,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -115,6 +119,7 @@ def display_donchian(
|
||||
upper_length: int = 20,
|
||||
lower_length: int = 20,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""Plots donchian channels
|
||||
@@ -187,6 +192,7 @@ def display_donchian(
|
||||
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
|
||||
"donchian",
|
||||
df_ta,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -199,6 +205,7 @@ def view_kc(
|
||||
offset: int = 0,
|
||||
symbol: str = "",
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""Plots Keltner Channels Indicator
|
||||
@@ -218,6 +225,8 @@ def view_kc(
|
||||
Offset value
|
||||
symbol: str
|
||||
Ticker symbol
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Format to export data
|
||||
external_axes: Optional[List[plt.Axes]], optional
|
||||
@@ -282,6 +291,7 @@ def view_kc(
|
||||
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
|
||||
"kc",
|
||||
df_ta,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -293,6 +303,7 @@ def display_atr(
|
||||
mamode: str = "sma",
|
||||
offset: int = 0,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""Plots ATR
|
||||
@@ -354,4 +365,5 @@ def display_atr(
|
||||
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
|
||||
"atr",
|
||||
df_ta,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -30,6 +30,7 @@ def display_ad(
|
||||
use_open: bool = False,
|
||||
symbol: str = "",
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""Plots AD technical indicator
|
||||
@@ -42,6 +43,8 @@ def display_ad(
|
||||
Whether to use open prices in calculation
|
||||
symbol : str
|
||||
Ticker symbol
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Format to export data as
|
||||
external_axes : Optional[List[plt.Axes]], optional
|
||||
@@ -134,6 +137,7 @@ def display_ad(
|
||||
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
|
||||
"ad",
|
||||
df_ta,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -145,6 +149,7 @@ def display_adosc(
|
||||
use_open: bool = False,
|
||||
symbol: str = "",
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""Plots AD Osc Indicator
|
||||
@@ -242,6 +247,7 @@ def display_adosc(
|
||||
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
|
||||
"adosc",
|
||||
df_ta,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -250,6 +256,7 @@ def display_obv(
|
||||
data: pd.DataFrame,
|
||||
symbol: str = "",
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""Plots OBV technical indicator
|
||||
@@ -260,6 +267,8 @@ def display_obv(
|
||||
Dataframe of ohlc prices
|
||||
symbol : str
|
||||
Ticker
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Format to export data as
|
||||
external_axes : Optional[List[plt.Axes]], optional
|
||||
@@ -345,4 +354,5 @@ def display_obv(
|
||||
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
|
||||
"obv",
|
||||
df_ta,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -295,6 +295,7 @@ class CryptoController(CryptoBaseController):
|
||||
os.path.join(os.path.dirname(os.path.abspath(__file__))),
|
||||
f"{self.symbol}",
|
||||
self.current_df,
|
||||
" ".join(ns_parser.sheet_name) if ns_parser.sheet_name else None,
|
||||
)
|
||||
|
||||
plot_chart(
|
||||
@@ -520,6 +521,9 @@ class CryptoController(CryptoBaseController):
|
||||
skip=ns_parser.skip,
|
||||
show_all=True,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
else:
|
||||
find(
|
||||
@@ -528,6 +532,9 @@ class CryptoController(CryptoBaseController):
|
||||
key=ns_parser.key,
|
||||
limit=ns_parser.limit,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
|
||||
@@ -10,6 +10,7 @@ def find(
|
||||
key: str = "symbol",
|
||||
limit: int = 10,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Find similar coin by coin name,symbol or id.
|
||||
|
||||
@@ -48,4 +49,5 @@ def find(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"find",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -639,7 +639,13 @@ def load_yf_data(symbol: str, currency: str, interval: str, days: int):
|
||||
|
||||
|
||||
def display_all_coins(
|
||||
source: str, symbol: str, limit: int, skip: int, show_all: bool, export: str
|
||||
source: str,
|
||||
symbol: str,
|
||||
limit: int,
|
||||
skip: int,
|
||||
show_all: bool,
|
||||
export: str,
|
||||
sheet_name: str,
|
||||
) -> None:
|
||||
"""Find similar coin by coin name,symbol or id.
|
||||
If you don't remember exact name or id of the Coin at CoinGecko, CoinPaprika, Coinbase, Binance
|
||||
@@ -745,6 +751,7 @@ def display_all_coins(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"coins",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -14,6 +14,8 @@ from openbb_terminal.helper_funcs import (
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# pylint: disable=too-many-arguments
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_defi_vaults(
|
||||
@@ -25,6 +27,7 @@ def display_defi_vaults(
|
||||
ascend: bool = True,
|
||||
link: bool = False,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Prints table showing Top DeFi Vaults - pools of funds with an assigned strategy which main goal is to
|
||||
maximize returns of its crypto assets. [Source: https://coindix.com/]
|
||||
@@ -85,4 +88,5 @@ def display_defi_vaults(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"vaults",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -25,6 +25,7 @@ logger = logging.getLogger(__name__)
|
||||
def display_anchor_data(
|
||||
address: str = "",
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
show_transactions: bool = False,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
) -> None:
|
||||
@@ -78,4 +79,5 @@ def display_anchor_data(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"anchor",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -132,6 +132,9 @@ class DefiController(BaseController):
|
||||
cryptosaurio_view.display_anchor_data(
|
||||
show_transactions=ns_parser.transactions,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
address=ns_parser.address,
|
||||
)
|
||||
|
||||
@@ -172,9 +175,12 @@ class DefiController(BaseController):
|
||||
|
||||
if ns_parser:
|
||||
terramoney_fcd_view.display_account_staking_info(
|
||||
export=ns_parser.export,
|
||||
address=ns_parser.address,
|
||||
limit=ns_parser.limit,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -222,10 +228,13 @@ class DefiController(BaseController):
|
||||
)
|
||||
if ns_parser:
|
||||
terramoney_fcd_view.display_validators(
|
||||
export=ns_parser.export,
|
||||
sortby=ns_parser.sortby,
|
||||
ascend=ns_parser.reverse,
|
||||
limit=ns_parser.limit,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -272,6 +281,9 @@ class DefiController(BaseController):
|
||||
terramoney_fcd_view.display_account_growth(
|
||||
kind=ns_parser.kind,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
cumulative=ns_parser.cumulative,
|
||||
limit=ns_parser.limit,
|
||||
)
|
||||
@@ -302,7 +314,11 @@ class DefiController(BaseController):
|
||||
|
||||
if ns_parser:
|
||||
terramoney_fcd_view.display_staking_ratio_history(
|
||||
export=ns_parser.export, limit=ns_parser.limit
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
limit=ns_parser.limit,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -331,7 +347,11 @@ class DefiController(BaseController):
|
||||
|
||||
if ns_parser:
|
||||
terramoney_fcd_view.display_staking_returns_history(
|
||||
export=ns_parser.export, limit=ns_parser.limit
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
limit=ns_parser.limit,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -450,6 +470,9 @@ class DefiController(BaseController):
|
||||
ascend=ns_parser.reverse,
|
||||
description=ns_parser.description,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -479,7 +502,13 @@ class DefiController(BaseController):
|
||||
)
|
||||
|
||||
if ns_parser:
|
||||
llama_view.display_defi_tvl(limit=ns_parser.limit, export=ns_parser.export)
|
||||
llama_view.display_defi_tvl(
|
||||
limit=ns_parser.limit,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def call_newsletter(self, other_args: List[str]):
|
||||
@@ -509,7 +538,11 @@ class DefiController(BaseController):
|
||||
|
||||
if ns_parser:
|
||||
substack_view.display_newsletters(
|
||||
limit=ns_parser.limit, export=ns_parser.export
|
||||
limit=ns_parser.limit,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -572,6 +605,9 @@ class DefiController(BaseController):
|
||||
sortby=ns_parser.sortby,
|
||||
ascend=ns_parser.reverse,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -592,7 +628,12 @@ class DefiController(BaseController):
|
||||
)
|
||||
|
||||
if ns_parser:
|
||||
graph_view.display_uni_stats(export=ns_parser.export)
|
||||
graph_view.display_uni_stats(
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def call_pairs(self, other_args: List[str]):
|
||||
@@ -677,6 +718,9 @@ class DefiController(BaseController):
|
||||
sortby=ns_parser.sortby,
|
||||
ascend=ns_parser.reverse,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -730,6 +774,9 @@ class DefiController(BaseController):
|
||||
sortby=ns_parser.sortby,
|
||||
ascend=ns_parser.reverse,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -783,6 +830,9 @@ class DefiController(BaseController):
|
||||
sortby=ns_parser.sortby,
|
||||
ascend=ns_parser.reverse,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -880,6 +930,9 @@ class DefiController(BaseController):
|
||||
ascend=ns_parser.reverse,
|
||||
link=ns_parser.link,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
def call_lcsc(self, other_args: List[str]):
|
||||
@@ -923,4 +976,7 @@ class DefiController(BaseController):
|
||||
days=ns_parser.days,
|
||||
limit=ns_parser.limit,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@@ -13,6 +13,8 @@ from openbb_terminal.helper_funcs import export_data, print_rich_table
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# pylint: disable=too-many-arguments
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_uni_tokens(
|
||||
@@ -21,6 +23,7 @@ def display_uni_tokens(
|
||||
sortby: str = "index",
|
||||
ascend: bool = False,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Prints table showing tokens trade-able on Uniswap DEX.
|
||||
[Source: https://thegraph.com/en/]
|
||||
@@ -65,11 +68,12 @@ def display_uni_tokens(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"tokens",
|
||||
df_data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_uni_stats(export: str = "") -> None:
|
||||
def display_uni_stats(export: str = "", sheet_name: str = None) -> None:
|
||||
"""Prints table showing base statistics about Uniswap DEX. [Source: https://thegraph.com/en/]
|
||||
[Source: https://thegraph.com/en/]
|
||||
|
||||
@@ -95,6 +99,7 @@ def display_uni_stats(export: str = "") -> None:
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"stats",
|
||||
df_data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -108,6 +113,7 @@ def display_recently_added(
|
||||
sortby: str = "created",
|
||||
ascend: bool = False,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Prints table showing Lastly added pairs on Uniswap DEX.
|
||||
[Source: https://thegraph.com/en/]
|
||||
@@ -163,12 +169,17 @@ def display_recently_added(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"pairs",
|
||||
df_data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_uni_pools(
|
||||
limit: int = 20, sortby: str = "volumeUSD", ascend: bool = True, export: str = ""
|
||||
limit: int = 20,
|
||||
sortby: str = "volumeUSD",
|
||||
ascend: bool = True,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Prints table showing uniswap pools by volume.
|
||||
[Source: https://thegraph.com/en/]
|
||||
@@ -211,12 +222,17 @@ def display_uni_pools(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"pools",
|
||||
df_data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_last_uni_swaps(
|
||||
limit: int = 10, sortby: str = "timestamp", ascend: bool = False, export: str = ""
|
||||
limit: int = 10,
|
||||
sortby: str = "timestamp",
|
||||
ascend: bool = False,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Prints table showing last swaps done on Uniswap
|
||||
[Source: https://thegraph.com/en/]
|
||||
@@ -245,4 +261,5 @@ def display_last_uni_swaps(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"swaps",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -26,7 +26,10 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_grouped_defi_protocols(
|
||||
limit: int = 50, export: str = "", external_axes: Optional[List[plt.Axes]] = None
|
||||
limit: int = 50,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
) -> None:
|
||||
"""Plots top dApps (in terms of TVL) grouped by chain.
|
||||
[Source: https://docs.llama.fi/api]
|
||||
@@ -87,6 +90,7 @@ def display_grouped_defi_protocols(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"gdapps",
|
||||
chains,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -97,6 +101,7 @@ def display_defi_protocols(
|
||||
ascend: bool = False,
|
||||
description: bool = False,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Prints table showing information about listed DeFi protocols, their current TVL and changes to it in
|
||||
the last hour/day/week. [Source: https://docs.llama.fi/api]
|
||||
@@ -124,6 +129,7 @@ def display_defi_protocols(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"ldapps",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -131,6 +137,7 @@ def display_defi_protocols(
|
||||
def display_historical_tvl(
|
||||
dapps: str = "",
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""Plots historical TVL of different dApps
|
||||
@@ -181,6 +188,7 @@ def display_historical_tvl(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"dtvl",
|
||||
None,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -188,6 +196,7 @@ def display_historical_tvl(
|
||||
def display_defi_tvl(
|
||||
limit: int = 5,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
) -> None:
|
||||
"""Plots historical values of the total sum of TVLs from all listed protocols.
|
||||
@@ -233,4 +242,5 @@ def display_defi_tvl(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"stvl",
|
||||
df_data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -30,6 +30,7 @@ logger = logging.getLogger(__name__)
|
||||
def display_luna_circ_supply_change(
|
||||
days: int = 30,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
supply_type: str = "lunaSupplyChallengeStats",
|
||||
limit: int = 5,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
@@ -42,6 +43,8 @@ def display_luna_circ_supply_change(
|
||||
Number of days
|
||||
supply_type: str
|
||||
Supply type to unpack json
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Export type
|
||||
limit: int
|
||||
@@ -110,6 +113,7 @@ def display_luna_circ_supply_change(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"lcsc",
|
||||
df[RAW_COLS],
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
df.index = df.index.strftime("%Y-%m-%d")
|
||||
|
||||
@@ -13,7 +13,9 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_newsletters(limit: int = 10, export: str = "") -> None:
|
||||
def display_newsletters(
|
||||
limit: int = 10, export: str = "", sheet_name: str = None
|
||||
) -> None:
|
||||
"""Prints table showing DeFi related substack newsletters.
|
||||
[Source: substack.com]
|
||||
|
||||
@@ -34,4 +36,10 @@ def display_newsletters(limit: int = 10, export: str = "") -> None:
|
||||
title="Substack Newsletters",
|
||||
)
|
||||
|
||||
export_data(export, os.path.dirname(os.path.abspath(__file__)), "newsletter", df)
|
||||
export_data(
|
||||
export,
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"newsletter",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -30,6 +30,7 @@ def display_terra_asset_history(
|
||||
asset: str = "",
|
||||
address: str = "",
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
) -> None:
|
||||
"""Plots the 30-day history of specified asset in terra address
|
||||
@@ -78,12 +79,15 @@ def display_terra_asset_history(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"aterra",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_anchor_yield_reserve(
|
||||
export: str = "", external_axes: Optional[List[plt.Axes]] = None
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
) -> None:
|
||||
"""Plots the 30-day history of the Anchor Yield Reserve.
|
||||
[Source: https://terra.engineer/]
|
||||
@@ -126,4 +130,5 @@ def display_anchor_yield_reserve(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"ayr",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -30,7 +30,7 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_account_staking_info(
|
||||
address: str = "", limit: int = 10, export: str = ""
|
||||
address: str = "", limit: int = 10, export: str = "", sheet_name: str = None
|
||||
) -> None:
|
||||
"""Prints table showing staking info for provided terra account address [Source: https://fcd.terra.dev/swagger]
|
||||
|
||||
@@ -57,12 +57,17 @@ def display_account_staking_info(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"sinfo",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_validators(
|
||||
limit: int = 10, sortby: str = "votingPower", ascend: bool = True, export: str = ""
|
||||
limit: int = 10,
|
||||
sortby: str = "votingPower",
|
||||
ascend: bool = True,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Prints table showing information about terra validators [Source: https://fcd.terra.dev/swagger]
|
||||
|
||||
@@ -101,6 +106,7 @@ def display_validators(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"validators",
|
||||
df_data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -111,6 +117,7 @@ def display_gov_proposals(
|
||||
sortby: str = "id",
|
||||
ascend: bool = True,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Prints table showing terra blockchain governance proposals list [Source: https://fcd.terra.dev/swagger]
|
||||
|
||||
@@ -132,7 +139,13 @@ def display_gov_proposals(
|
||||
|
||||
print_rich_table(df, headers=list(df.columns), floatfmt=".2f", show_index=False)
|
||||
|
||||
export_data(export, os.path.dirname(os.path.abspath(__file__)), "govp", df)
|
||||
export_data(
|
||||
export,
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"govp",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -141,6 +154,7 @@ def display_account_growth(
|
||||
cumulative: bool = False,
|
||||
limit: int = 90,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
) -> None:
|
||||
"""Plots terra blockchain account growth history [Source: https://fcd.terra.dev/swagger]
|
||||
@@ -200,6 +214,7 @@ def display_account_growth(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"gacc",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -207,6 +222,7 @@ def display_account_growth(
|
||||
def display_staking_ratio_history(
|
||||
limit: int = 90,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
) -> None:
|
||||
"""Plots terra blockchain staking ratio history [Source: https://fcd.terra.dev/v1]
|
||||
@@ -247,6 +263,7 @@ def display_staking_ratio_history(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"sratio",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -254,6 +271,7 @@ def display_staking_ratio_history(
|
||||
def display_staking_returns_history(
|
||||
limit: int = 90,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
) -> None:
|
||||
"""Plots terra blockchain staking returns history [Source: https://fcd.terra.dev/swagger]
|
||||
@@ -294,4 +312,5 @@ def display_staking_returns_history(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"sreturn",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -20,6 +20,7 @@ def display_cmc_top_coins(
|
||||
sortby: str = "CMC_Rank",
|
||||
ascend: bool = True,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Prints table showing top n coins. [Source: CoinMarketCap]
|
||||
|
||||
@@ -56,4 +57,5 @@ def display_cmc_top_coins(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"cmctop",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -20,6 +20,7 @@ def display_search_results(
|
||||
sortby: str = "id",
|
||||
ascend: bool = True,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Prints table showing Search over CoinPaprika. [Source: CoinPaprika]
|
||||
|
||||
@@ -65,4 +66,5 @@ def display_search_results(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"search",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -17,7 +17,9 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_top_nfts(limit: int = 10, sortby: str = "", export: str = "") -> None:
|
||||
def display_top_nfts(
|
||||
limit: int = 10, sortby: str = "", export: str = "", sheet_name: str = None
|
||||
) -> None:
|
||||
"""Prints table showing top nft collections [Source: https://dappradar.com/]
|
||||
|
||||
Parameters
|
||||
@@ -54,11 +56,14 @@ def display_top_nfts(limit: int = 10, sortby: str = "", export: str = "") -> Non
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"drnft",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_top_games(limit: int = 10, export: str = "", sortby: str = "") -> None:
|
||||
def display_top_games(
|
||||
limit: int = 10, export: str = "", sheet_name: str = None, sortby: str = ""
|
||||
) -> None:
|
||||
"""Prints table showing top blockchain games [Source: https://dappradar.com/]
|
||||
|
||||
Parameters
|
||||
@@ -90,11 +95,14 @@ def display_top_games(limit: int = 10, export: str = "", sortby: str = "") -> No
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"drgames",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_top_dexes(limit: int = 10, export: str = "", sortby: str = "") -> None:
|
||||
def display_top_dexes(
|
||||
limit: int = 10, export: str = "", sheet_name: str = None, sortby: str = ""
|
||||
) -> None:
|
||||
"""Prints table showing top decentralized exchanges [Source: https://dappradar.com/]
|
||||
|
||||
Parameters
|
||||
@@ -126,11 +134,14 @@ def display_top_dexes(limit: int = 10, export: str = "", sortby: str = "") -> No
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"drdex",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_top_dapps(limit: int = 10, export: str = "", sortby: str = "") -> None:
|
||||
def display_top_dapps(
|
||||
limit: int = 10, export: str = "", sheet_name: str = None, sortby: str = ""
|
||||
) -> None:
|
||||
"""Prints table showing top decentralized exchanges [Source: https://dappradar.com/]
|
||||
|
||||
Parameters
|
||||
@@ -162,4 +173,5 @@ def display_top_dapps(limit: int = 10, export: str = "", sortby: str = "") -> No
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"drdapps",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -154,6 +154,9 @@ class DiscoveryController(BaseController):
|
||||
category=ns_parser.category,
|
||||
limit=ns_parser.limit,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
ascend=ns_parser.reverse,
|
||||
)
|
||||
elif ns_parser.source == "CoinMarketCap":
|
||||
@@ -162,6 +165,9 @@ class DiscoveryController(BaseController):
|
||||
sortby=ns_parser.sortby,
|
||||
ascend=ns_parser.reverse,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -204,6 +210,9 @@ class DiscoveryController(BaseController):
|
||||
sortby=" ".join(ns_parser.sortby),
|
||||
limit=ns_parser.limit,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -246,6 +255,9 @@ class DiscoveryController(BaseController):
|
||||
sortby=" ".join(ns_parser.sortby),
|
||||
limit=ns_parser.limit,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -288,6 +300,9 @@ class DiscoveryController(BaseController):
|
||||
sortby=" ".join(ns_parser.sortby),
|
||||
limit=ns_parser.limit,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -331,6 +346,9 @@ class DiscoveryController(BaseController):
|
||||
sortby=" ".join(ns_parser.sortby),
|
||||
limit=ns_parser.limit,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -386,6 +404,9 @@ class DiscoveryController(BaseController):
|
||||
interval=ns_parser.interval,
|
||||
limit=ns_parser.limit,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
sortby=" ".join(ns_parser.sortby),
|
||||
)
|
||||
|
||||
@@ -443,6 +464,9 @@ class DiscoveryController(BaseController):
|
||||
interval=ns_parser.interval,
|
||||
limit=ns_parser.limit,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
sortby=" ".join(ns_parser.sortby),
|
||||
)
|
||||
|
||||
@@ -465,6 +489,9 @@ class DiscoveryController(BaseController):
|
||||
if ns_parser:
|
||||
pycoingecko_view.display_trending(
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -542,6 +569,9 @@ class DiscoveryController(BaseController):
|
||||
sortby=ns_parser.sortby,
|
||||
ascend=ns_parser.reverse,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
query=" ".join(ns_parser.query),
|
||||
category=ns_parser.category,
|
||||
)
|
||||
|
||||
@@ -37,6 +37,7 @@ def display_coins(
|
||||
limit: int = 250,
|
||||
sortby: str = "Symbol",
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
ascend: bool = False,
|
||||
) -> None:
|
||||
"""Prints table showing top coins [Source: CoinGecko]
|
||||
@@ -91,6 +92,7 @@ def display_coins(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"cgtop",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
else:
|
||||
console.print("\nUnable to retrieve data from CoinGecko.\n")
|
||||
@@ -102,6 +104,7 @@ def display_gainers(
|
||||
limit: int = 20,
|
||||
sortby: str = "market_cap_rank",
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Prints table showing Largest Gainers - coins which gain the most in given period. [Source: CoinGecko]
|
||||
|
||||
@@ -137,6 +140,7 @@ def display_gainers(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"gainers",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
else:
|
||||
console.print("\nUnable to retrieve data from CoinGecko.\n")
|
||||
@@ -147,6 +151,7 @@ def display_losers(
|
||||
interval: str = "1h",
|
||||
limit: int = 20,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
sortby: str = "Market Cap Rank",
|
||||
) -> None:
|
||||
"""Prints table showing Largest Losers - coins which lost the most in given period of time. [Source: CoinGecko]
|
||||
@@ -183,13 +188,14 @@ def display_losers(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"cglosers",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
else:
|
||||
console.print("\nUnable to retrieve data from CoinGecko.\n")
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_trending(export: str = "") -> None:
|
||||
def display_trending(export: str = "", sheet_name: str = None) -> None:
|
||||
"""Prints table showing trending coins [Source: CoinGecko]
|
||||
|
||||
Parameters
|
||||
@@ -213,6 +219,7 @@ def display_trending(export: str = "") -> None:
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"cgtrending",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
else:
|
||||
console.print("\nUnable to retrieve data from CoinGecko.\n")
|
||||
|
||||
@@ -26,6 +26,7 @@ def display_order_book(
|
||||
limit: int = 100,
|
||||
to_symbol: str = "USDT",
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
) -> None:
|
||||
"""Plots order book for currency. [Source: Binance]
|
||||
@@ -39,6 +40,8 @@ def display_order_book(
|
||||
Limit parameter. Adjusts the weight
|
||||
to_symbol: str
|
||||
Quote currency (what to view coin vs)
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Export dataframe data to csv,json,xlsx
|
||||
external_axes : Optional[List[plt.Axes]]
|
||||
@@ -57,12 +60,13 @@ def display_order_book(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"book",
|
||||
market_book,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_balance(
|
||||
from_symbol: str, to_symbol: str = "USDT", export: str = ""
|
||||
from_symbol: str, to_symbol: str = "USDT", export: str = "", sheet_name: str = None
|
||||
) -> None:
|
||||
"""Prints table showing account holdings for asset. [Source: Binance]
|
||||
|
||||
@@ -72,6 +76,8 @@ def display_balance(
|
||||
Cryptocurrency
|
||||
to_symbol: str
|
||||
Cryptocurrency
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Export dataframe data to csv,json,xlsx
|
||||
"""
|
||||
@@ -94,4 +100,5 @@ def display_balance(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"book",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -21,6 +21,7 @@ def display_order_book(
|
||||
symbol: str,
|
||||
to_symbol: str,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""Plots order book for a coin in a given exchange
|
||||
@@ -56,12 +57,18 @@ def display_order_book(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"ob",
|
||||
market_book,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_trades(
|
||||
exchange: str, symbol: str, to_symbol: str, limit: int = 10, export: str = ""
|
||||
exchange: str,
|
||||
symbol: str,
|
||||
to_symbol: str,
|
||||
limit: int = 10,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
):
|
||||
"""Prints table showing trades for a coin in a given exchange
|
||||
[Source: https://docs.ccxt.com/en/latest/manual.html]
|
||||
@@ -92,4 +99,5 @@ def display_trades(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"trades",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -23,6 +23,7 @@ register_matplotlib_converters()
|
||||
def display_order_book(
|
||||
symbol: str,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
) -> None:
|
||||
"""Plots a list of available currency pairs for trading. [Source: Coinbase]
|
||||
@@ -44,12 +45,17 @@ def display_order_book(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"book",
|
||||
pd.DataFrame(market_book),
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_trades(
|
||||
symbol: str, limit: int = 20, side: Optional[str] = None, export: str = ""
|
||||
symbol: str,
|
||||
limit: int = 20,
|
||||
side: Optional[str] = None,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Prints table showing last N trades for chosen trading pair. [Source: Coinbase]
|
||||
|
||||
@@ -69,11 +75,19 @@ def display_trades(
|
||||
|
||||
print_rich_table(df, headers=list(df.columns), show_index=False)
|
||||
|
||||
export_data(export, os.path.dirname(os.path.abspath(__file__)), "trades", df)
|
||||
export_data(
|
||||
export,
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"trades",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_candles(symbol: str, interval: str = "24hour", export: str = "") -> None:
|
||||
def display_candles(
|
||||
symbol: str, interval: str = "24hour", export: str = "", sheet_name: str = None
|
||||
) -> None:
|
||||
"""Prints table showing candles for chosen trading pair and time interval. [Source: Coinbase]
|
||||
|
||||
Parameters
|
||||
@@ -92,11 +106,17 @@ def display_candles(symbol: str, interval: str = "24hour", export: str = "") ->
|
||||
df, headers=list(df.columns), show_index=True, title="Trading Pair Candles"
|
||||
)
|
||||
|
||||
export_data(export, os.path.dirname(os.path.abspath(__file__)), "candles", df)
|
||||
export_data(
|
||||
export,
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"candles",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_stats(symbol: str, export: str = "") -> None:
|
||||
def display_stats(symbol: str, export: str = "", sheet_name: str = None) -> None:
|
||||
"""Prints table showing 24 hr stats for the product. Volume is in base currency units.
|
||||
Open, high and low are in quote currency units. [Source: Coinbase]
|
||||
|
||||
@@ -117,4 +137,10 @@ def display_stats(symbol: str, export: str = "") -> None:
|
||||
title=f"Coinbase:{symbol.upper()} 24 hr Product Stats",
|
||||
)
|
||||
|
||||
export_data(export, os.path.dirname(os.path.abspath(__file__)), "stats", df)
|
||||
export_data(
|
||||
export,
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"stats",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -27,7 +27,7 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@check_api_key(["API_COINGLASS_KEY"])
|
||||
def display_funding_rate(symbol: str, export: str = "") -> None:
|
||||
def display_funding_rate(symbol: str, export: str = "", sheet_name: str = None) -> None:
|
||||
"""Plots funding rate by exchange for a certain cryptocurrency
|
||||
[Source: https://coinglass.github.io/API-Reference/]
|
||||
|
||||
@@ -48,12 +48,15 @@ def display_funding_rate(symbol: str, export: str = "") -> None:
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"fundrate",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@check_api_key(["API_COINGLASS_KEY"])
|
||||
def display_open_interest(symbol: str, interval: int = 0, export: str = "") -> None:
|
||||
def display_open_interest(
|
||||
symbol: str, interval: int = 0, export: str = "", sheet_name: str = None
|
||||
) -> None:
|
||||
"""Plots open interest by exchange for a certain cryptocurrency
|
||||
[Source: https://coinglass.github.io/API-Reference/]
|
||||
|
||||
@@ -81,12 +84,13 @@ def display_open_interest(symbol: str, interval: int = 0, export: str = "") -> N
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"oi",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@check_api_key(["API_COINGLASS_KEY"])
|
||||
def display_liquidations(symbol: str, export: str = "") -> None:
|
||||
def display_liquidations(symbol: str, export: str = "", sheet_name: str = None) -> None:
|
||||
"""Plots liquidation per day data for a certain cryptocurrency
|
||||
[Source: https://coinglass.github.io/API-Reference/#liquidation-chart]
|
||||
|
||||
@@ -112,6 +116,7 @@ def display_liquidations(symbol: str, export: str = "") -> None:
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"liquidations",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -89,6 +89,7 @@ def display_twitter(
|
||||
sortby: str = "date",
|
||||
ascend: bool = True,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Prints table showing twitter timeline for given coin id. Not more than last 50 tweets [Source: CoinPaprika]
|
||||
|
||||
@@ -125,6 +126,7 @@ def display_twitter(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"twitter",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -136,6 +138,7 @@ def display_events(
|
||||
ascend: bool = False,
|
||||
links: bool = False,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Prints table showing all events for given coin id. [Source: CoinPaprika]
|
||||
|
||||
@@ -178,6 +181,7 @@ def display_events(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"events",
|
||||
df_data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -188,6 +192,7 @@ def display_exchanges(
|
||||
sortby: str = "adjusted_volume_24h_share",
|
||||
ascend: bool = True,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Prints table showing all exchanges for given coin id. [Source: CoinPaprika]
|
||||
|
||||
@@ -223,6 +228,7 @@ def display_exchanges(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"ex",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -235,6 +241,7 @@ def display_markets(
|
||||
ascend: bool = True,
|
||||
links: bool = False,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Prints table showing all markets for given coin id. [Source: CoinPaprika]
|
||||
|
||||
@@ -280,6 +287,7 @@ def display_markets(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"mkt",
|
||||
df_data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -288,6 +296,7 @@ def display_price_supply(
|
||||
from_symbol: str = "BTC",
|
||||
to_symbol: str = "USD",
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Prints table showing ticker information for single coin [Source: CoinPaprika]
|
||||
|
||||
@@ -297,6 +306,8 @@ def display_price_supply(
|
||||
Cryptocurrency symbol (e.g. BTC)
|
||||
to_symbol: str
|
||||
Quoted currency
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Export dataframe data to csv,json,xlsx
|
||||
|
||||
@@ -318,6 +329,7 @@ def display_price_supply(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"ps",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -325,6 +337,7 @@ def display_price_supply(
|
||||
def display_basic(
|
||||
symbol: str = "BTC",
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Prints table showing basic information for coin. Like:
|
||||
name, symbol, rank, type, description, platform, proof_type, contract, tags, parent.
|
||||
@@ -334,6 +347,8 @@ def display_basic(
|
||||
----------
|
||||
symbol: str
|
||||
Cryptocurrency symbol (e.g. BTC)
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Export dataframe data to csv,json,xlsx
|
||||
"""
|
||||
@@ -352,4 +367,5 @@ def display_basic(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"basic",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -13,6 +13,8 @@ from openbb_terminal.cryptocurrency.dataframe_helpers import prettify_column_nam
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# pylint: disable=too-many-arguments
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@check_api_key(["API_CRYPTO_PANIC_KEY"])
|
||||
@@ -25,6 +27,7 @@ def display_news(
|
||||
limit: int = 25,
|
||||
ascend: bool = True,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Prints table showing recent posts from CryptoPanic news aggregator platform.
|
||||
[Source: https://cryptopanic.com/]
|
||||
@@ -73,4 +76,5 @@ def display_news(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"news",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -269,6 +269,9 @@ class DueDiligenceController(CryptoBaseController):
|
||||
start_date=ns_parser.since.strftime("%Y-%m-%d"),
|
||||
end_date=ns_parser.until.strftime("%Y-%m-%d"),
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
else:
|
||||
@@ -302,7 +305,7 @@ class DueDiligenceController(CryptoBaseController):
|
||||
|
||||
if ns_parser:
|
||||
pair = f"{coin}-{ns_parser.vs.upper()}"
|
||||
coinbase_view.display_stats(pair, ns_parser.export)
|
||||
coinbase_view.display_stats(pair, ns_parser.export, ns_parser.sheet_name)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def call_active(self, other_args: List[str]):
|
||||
@@ -357,6 +360,9 @@ class DueDiligenceController(CryptoBaseController):
|
||||
start_date=ns_parser.since.strftime("%Y-%m-%d"),
|
||||
end_date=ns_parser.until.strftime("%Y-%m-%d"),
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
else:
|
||||
console.print(f"[red]{self.symbol} not supported on Glassnode.[/red]")
|
||||
@@ -419,6 +425,9 @@ class DueDiligenceController(CryptoBaseController):
|
||||
start_date=ns_parser.since.strftime("%Y-%m-%d"),
|
||||
end_date=ns_parser.until.strftime("%Y-%m-%d"),
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
else:
|
||||
console.print(f"[red]{self.symbol} not supported on Glassnode.[/red]")
|
||||
@@ -491,6 +500,9 @@ class DueDiligenceController(CryptoBaseController):
|
||||
end_date=ns_parser.until.strftime("%Y-%m-%d"),
|
||||
percentage=ns_parser.percentage,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
else:
|
||||
console.print(f"[red]{self.symbol} not supported on Glassnode.[/red]")
|
||||
@@ -528,6 +540,9 @@ class DueDiligenceController(CryptoBaseController):
|
||||
symbol=self.symbol.upper(),
|
||||
interval=ns_parser.interval,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -552,6 +567,9 @@ class DueDiligenceController(CryptoBaseController):
|
||||
coinglass_view.display_liquidations(
|
||||
symbol=self.symbol.upper(),
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -576,6 +594,9 @@ class DueDiligenceController(CryptoBaseController):
|
||||
coinglass_view.display_funding_rate(
|
||||
symbol=self.symbol.upper(),
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -600,6 +621,9 @@ class DueDiligenceController(CryptoBaseController):
|
||||
pycoingecko_view.display_info(
|
||||
symbol=self.symbol,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -619,7 +643,13 @@ class DueDiligenceController(CryptoBaseController):
|
||||
if ns_parser:
|
||||
cg_id = check_cg_id(self.symbol)
|
||||
if cg_id:
|
||||
pycoingecko_view.display_market(cg_id, ns_parser.export)
|
||||
pycoingecko_view.display_market(
|
||||
cg_id,
|
||||
ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def call_web(self, other_args):
|
||||
@@ -641,6 +671,9 @@ class DueDiligenceController(CryptoBaseController):
|
||||
pycoingecko_view.display_web(
|
||||
self.symbol,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -660,7 +693,13 @@ class DueDiligenceController(CryptoBaseController):
|
||||
if ns_parser:
|
||||
cg_id = check_cg_id(self.symbol)
|
||||
if cg_id:
|
||||
pycoingecko_view.display_social(cg_id, export=ns_parser.export)
|
||||
pycoingecko_view.display_social(
|
||||
cg_id,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def call_dev(self, other_args):
|
||||
@@ -682,7 +721,13 @@ class DueDiligenceController(CryptoBaseController):
|
||||
if ns_parser:
|
||||
cg_id = check_cg_id(self.symbol)
|
||||
if cg_id:
|
||||
pycoingecko_view.display_dev(cg_id, ns_parser.export)
|
||||
pycoingecko_view.display_dev(
|
||||
cg_id,
|
||||
ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def call_ath(self, other_args):
|
||||
@@ -709,7 +754,14 @@ class DueDiligenceController(CryptoBaseController):
|
||||
if ns_parser:
|
||||
cg_id = check_cg_id(self.symbol)
|
||||
if cg_id:
|
||||
pycoingecko_view.display_ath(cg_id, ns_parser.vs, ns_parser.export)
|
||||
pycoingecko_view.display_ath(
|
||||
cg_id,
|
||||
ns_parser.vs,
|
||||
ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def call_atl(self, other_args):
|
||||
@@ -735,7 +787,14 @@ class DueDiligenceController(CryptoBaseController):
|
||||
if ns_parser:
|
||||
cg_id = check_cg_id(self.symbol)
|
||||
if cg_id:
|
||||
pycoingecko_view.display_atl(cg_id, ns_parser.vs, ns_parser.export)
|
||||
pycoingecko_view.display_atl(
|
||||
cg_id,
|
||||
ns_parser.vs,
|
||||
ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def call_score(self, other_args):
|
||||
@@ -758,7 +817,13 @@ class DueDiligenceController(CryptoBaseController):
|
||||
if ns_parser:
|
||||
cg_id = check_cg_id(self.symbol)
|
||||
if cg_id:
|
||||
pycoingecko_view.display_score(cg_id, ns_parser.export)
|
||||
pycoingecko_view.display_score(
|
||||
cg_id,
|
||||
ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def call_bc(self, other_args):
|
||||
@@ -779,7 +844,13 @@ class DueDiligenceController(CryptoBaseController):
|
||||
if ns_parser:
|
||||
cg_id = check_cg_id(self.symbol)
|
||||
if cg_id:
|
||||
pycoingecko_view.display_bc(cg_id, ns_parser.export)
|
||||
pycoingecko_view.display_bc(
|
||||
cg_id,
|
||||
ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def call_ob(self, other_args):
|
||||
@@ -824,6 +895,9 @@ class DueDiligenceController(CryptoBaseController):
|
||||
symbol=self.symbol,
|
||||
to_symbol=ns_parser.vs,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -869,6 +943,9 @@ class DueDiligenceController(CryptoBaseController):
|
||||
symbol=self.symbol,
|
||||
to_symbol=ns_parser.vs,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
limit=ns_parser.limit,
|
||||
)
|
||||
|
||||
@@ -904,7 +981,12 @@ class DueDiligenceController(CryptoBaseController):
|
||||
|
||||
if ns_parser:
|
||||
binance_view.display_balance(
|
||||
from_symbol=coin, to_symbol=ns_parser.vs, export=ns_parser.export
|
||||
from_symbol=coin,
|
||||
to_symbol=ns_parser.vs,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -1031,6 +1113,9 @@ class DueDiligenceController(CryptoBaseController):
|
||||
ascend=ns_parser.reverse,
|
||||
links=ns_parser.urls,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -1087,6 +1172,9 @@ class DueDiligenceController(CryptoBaseController):
|
||||
sortby=ns_parser.sortby,
|
||||
ascend=ns_parser.reverse,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -1154,6 +1242,9 @@ class DueDiligenceController(CryptoBaseController):
|
||||
ascend=ns_parser.reverse,
|
||||
links=ns_parser.urls,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -1211,6 +1302,9 @@ class DueDiligenceController(CryptoBaseController):
|
||||
sortby=ns_parser.sortby,
|
||||
ascend=ns_parser.reverse,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -1266,6 +1360,9 @@ class DueDiligenceController(CryptoBaseController):
|
||||
start_date=ns_parser.start,
|
||||
end_date=ns_parser.end,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -1289,6 +1386,9 @@ class DueDiligenceController(CryptoBaseController):
|
||||
messari_view.display_links(
|
||||
symbol=self.symbol.upper(),
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -1391,6 +1491,9 @@ class DueDiligenceController(CryptoBaseController):
|
||||
symbol=self.symbol.upper(),
|
||||
limit=ns_parser.limit,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -1416,6 +1519,9 @@ class DueDiligenceController(CryptoBaseController):
|
||||
messari_view.display_tokenomics(
|
||||
symbol=self.symbol.upper(),
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -1440,6 +1546,9 @@ class DueDiligenceController(CryptoBaseController):
|
||||
messari_view.display_project_info(
|
||||
symbol=self.symbol.upper(),
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -1464,6 +1573,9 @@ class DueDiligenceController(CryptoBaseController):
|
||||
messari_view.display_team(
|
||||
symbol=self.symbol.upper(),
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -1488,6 +1600,9 @@ class DueDiligenceController(CryptoBaseController):
|
||||
messari_view.display_investors(
|
||||
symbol=self.symbol.upper(),
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -1512,6 +1627,9 @@ class DueDiligenceController(CryptoBaseController):
|
||||
messari_view.display_fundraising(
|
||||
symbol=self.symbol.upper(),
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -1536,6 +1654,9 @@ class DueDiligenceController(CryptoBaseController):
|
||||
messari_view.display_governance(
|
||||
symbol=self.symbol.upper(),
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -1644,6 +1765,9 @@ class DueDiligenceController(CryptoBaseController):
|
||||
start_date=ns_parser.start,
|
||||
end_date=ns_parser.end,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -1737,6 +1861,9 @@ class DueDiligenceController(CryptoBaseController):
|
||||
source=None,
|
||||
symbol=self.symbol,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
ascend=ns_parser.reverse,
|
||||
post_kind=ns_parser.kind,
|
||||
filter_=ns_parser.filter,
|
||||
@@ -1780,6 +1907,9 @@ class DueDiligenceController(CryptoBaseController):
|
||||
metric=ns_parser.metric,
|
||||
project=ns_parser.project,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -1811,4 +1941,7 @@ class DueDiligenceController(CryptoBaseController):
|
||||
tokenterminal_view.display_description(
|
||||
project=ns_parser.project,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@@ -40,6 +40,7 @@ def display_crypto_sentiment_analysis(
|
||||
symbol: str,
|
||||
raw: bool = False,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
) -> None:
|
||||
"""Sentiment analysis from FinBrain for Cryptocurrencies
|
||||
@@ -131,4 +132,5 @@ def display_crypto_sentiment_analysis(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"finbrain",
|
||||
sentiment,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -36,6 +36,7 @@ def display_active_addresses(
|
||||
end_date: Optional[str] = None,
|
||||
interval: str = "24h",
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
) -> None:
|
||||
"""Plots active addresses of a certain symbol over time
|
||||
@@ -89,6 +90,7 @@ def display_active_addresses(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"active",
|
||||
df_addresses,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -99,6 +101,7 @@ def display_non_zero_addresses(
|
||||
start_date: str = "2010-01-01",
|
||||
end_date: Optional[str] = None,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
) -> None:
|
||||
"""Plots addresses with non-zero balance of a certain symbol
|
||||
@@ -150,6 +153,7 @@ def display_non_zero_addresses(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"nonzero",
|
||||
df_addresses,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -161,6 +165,7 @@ def display_exchange_net_position_change(
|
||||
start_date: str = "2010-01-01",
|
||||
end_date: Optional[str] = None,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
) -> None:
|
||||
"""Plots 30d change of the supply held in exchange wallets.
|
||||
@@ -231,6 +236,7 @@ def display_exchange_net_position_change(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"change",
|
||||
df_addresses,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -243,6 +249,7 @@ def display_exchange_balances(
|
||||
end_date: Optional[str] = None,
|
||||
percentage: bool = False,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
) -> None:
|
||||
"""Plots total amount of coins held on exchange addresses in units and percentage.
|
||||
@@ -313,6 +320,7 @@ def display_exchange_balances(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"eb",
|
||||
df_balance,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -324,6 +332,7 @@ def display_hashrate(
|
||||
end_date: Optional[str] = None,
|
||||
interval: str = "24h",
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
) -> None:
|
||||
"""Plots dataframe with mean hashrate of btc or eth blockchain and symbol price.
|
||||
@@ -392,4 +401,5 @@ def display_hashrate(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"hr",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -52,6 +52,7 @@ def display_messari_timeseries_list(
|
||||
query: str = "",
|
||||
only_free: bool = True,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Prints table showing messari timeseries list
|
||||
[Source: https://messari.io/]
|
||||
@@ -94,6 +95,7 @@ def display_messari_timeseries_list(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"mt",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
else:
|
||||
console.print("\nUnable to retrieve data from Messari.\n")
|
||||
@@ -108,6 +110,7 @@ def display_messari_timeseries(
|
||||
end_date: Optional[str] = None,
|
||||
interval: str = "1d",
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
) -> None:
|
||||
"""Plots messari timeseries
|
||||
@@ -174,6 +177,7 @@ def display_messari_timeseries(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"mt",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -185,6 +189,7 @@ def display_marketcap_dominance(
|
||||
end_date: Optional[str] = None,
|
||||
interval: str = "1d",
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
) -> None:
|
||||
"""Plots market dominance of a coin over time
|
||||
@@ -242,12 +247,13 @@ def display_marketcap_dominance(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"mcapdom",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@check_api_key(["API_MESSARI_KEY"])
|
||||
def display_links(symbol: str, export: str = "") -> None:
|
||||
def display_links(symbol: str, export: str = "", sheet_name: str = None) -> None:
|
||||
"""Prints table showing coin links
|
||||
[Source: https://messari.io/]
|
||||
|
||||
@@ -275,6 +281,7 @@ def display_links(symbol: str, export: str = "") -> None:
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"links",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
else:
|
||||
console.print("\nUnable to retrieve data from Messari.\n")
|
||||
@@ -287,6 +294,7 @@ def display_roadmap(
|
||||
ascend: bool = True,
|
||||
limit: int = 5,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
) -> None:
|
||||
"""Plots coin roadmap
|
||||
@@ -377,6 +385,7 @@ def display_roadmap(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"rm",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
else:
|
||||
console.print("\nUnable to retrieve data from Messari.\n")
|
||||
@@ -387,6 +396,7 @@ def display_roadmap(
|
||||
def display_tokenomics(
|
||||
symbol: str,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
) -> None:
|
||||
"""Plots coin tokenomics
|
||||
@@ -461,6 +471,7 @@ def display_tokenomics(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"tk",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
else:
|
||||
console.print("\nUnable to retrieve data from Messari.\n")
|
||||
@@ -471,6 +482,7 @@ def display_tokenomics(
|
||||
def display_project_info(
|
||||
symbol: str,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Prints table showing project info
|
||||
[Source: https://messari.io/]
|
||||
@@ -503,6 +515,7 @@ def display_project_info(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"pi",
|
||||
df_info,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -511,6 +524,7 @@ def display_project_info(
|
||||
def display_investors(
|
||||
symbol: str,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Prints table showing coin investors
|
||||
[Source: https://messari.io/]
|
||||
@@ -547,6 +561,7 @@ def display_investors(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"inv",
|
||||
df_individuals,
|
||||
sheet_name,
|
||||
)
|
||||
else:
|
||||
console.print("\nInvestors not found\n")
|
||||
@@ -557,6 +572,7 @@ def display_investors(
|
||||
def display_team(
|
||||
symbol: str,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Prints table showing coin team
|
||||
[Source: https://messari.io/]
|
||||
@@ -593,6 +609,7 @@ def display_team(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"team",
|
||||
df_individuals,
|
||||
sheet_name,
|
||||
)
|
||||
else:
|
||||
console.print("\nTeam not found\n")
|
||||
@@ -603,6 +620,7 @@ def display_team(
|
||||
def display_governance(
|
||||
symbol: str,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Prints table showing coin governance
|
||||
[Source: https://messari.io/]
|
||||
@@ -630,6 +648,7 @@ def display_governance(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"gov",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
else:
|
||||
console.print(f"\n{symbol} governance details not found\n")
|
||||
@@ -640,6 +659,7 @@ def display_governance(
|
||||
def display_fundraising(
|
||||
symbol: str,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
) -> None:
|
||||
"""Display coin fundraising
|
||||
@@ -738,4 +758,5 @@ def display_fundraising(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"fr",
|
||||
df_details,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -23,6 +23,7 @@ def display_coin_potential_returns(
|
||||
limit: Optional[int] = None,
|
||||
price: Optional[int] = None,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Prints table showing potential returns of a certain coin. [Source: CoinGecko]
|
||||
|
||||
@@ -50,11 +51,12 @@ def display_coin_potential_returns(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"prt",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_info(symbol: str, export: str = "") -> None:
|
||||
def display_info(symbol: str, export: str = "", sheet_name: str = None) -> None:
|
||||
"""Prints table showing basic information about loaded coin. [Source: CoinGecko]
|
||||
|
||||
Parameters
|
||||
@@ -83,11 +85,12 @@ def display_info(symbol: str, export: str = "") -> None:
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"info",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_web(symbol: str, export: str = "") -> None:
|
||||
def display_web(symbol: str, export: str = "", sheet_name: str = None) -> None:
|
||||
"""Prints table showing found websites corresponding to loaded coin. [Source: CoinGecko]
|
||||
|
||||
Parameters
|
||||
@@ -116,11 +119,12 @@ def display_web(symbol: str, export: str = "") -> None:
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"web",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_social(symbol: str, export: str = "") -> None:
|
||||
def display_social(symbol: str, export: str = "", sheet_name: str = None) -> None:
|
||||
"""Prints table showing social media corresponding to loaded coin. [Source: CoinGecko]
|
||||
|
||||
Parameters
|
||||
@@ -145,11 +149,12 @@ def display_social(symbol: str, export: str = "") -> None:
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"social",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_dev(symbol: str, export: str = "") -> None:
|
||||
def display_dev(symbol: str, export: str = "", sheet_name: str = None) -> None:
|
||||
"""Prints table showing developers data for loaded coin. [Source: CoinGecko]
|
||||
|
||||
Parameters
|
||||
@@ -175,11 +180,14 @@ def display_dev(symbol: str, export: str = "") -> None:
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"dev",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_ath(symbol: str, currency: str = "usd", export: str = "") -> None:
|
||||
def display_ath(
|
||||
symbol: str, currency: str = "usd", export: str = "", sheet_name: str = None
|
||||
) -> None:
|
||||
"""Prints table showing all time high data for loaded coin. [Source: CoinGecko]
|
||||
|
||||
Parameters
|
||||
@@ -202,11 +210,14 @@ def display_ath(symbol: str, currency: str = "usd", export: str = "") -> None:
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"ath",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_atl(symbol: str, currency: str = "usd", export: str = "") -> None:
|
||||
def display_atl(
|
||||
symbol: str, currency: str = "usd", export: str = "", sheet_name: str = None
|
||||
) -> None:
|
||||
"""Prints table showing all time low data for loaded coin. [Source: CoinGecko]
|
||||
|
||||
Parameters
|
||||
@@ -229,11 +240,12 @@ def display_atl(symbol: str, currency: str = "usd", export: str = "") -> None:
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"atl",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_score(symbol: str, export: str = "") -> None:
|
||||
def display_score(symbol: str, export: str = "", sheet_name: str = None) -> None:
|
||||
"""Prints table showing different kind of scores for loaded coin. [Source: CoinGecko]
|
||||
|
||||
Parameters
|
||||
@@ -259,11 +271,12 @@ def display_score(symbol: str, export: str = "") -> None:
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"score",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_bc(symbol: str, export: str = "") -> None:
|
||||
def display_bc(symbol: str, export: str = "", sheet_name: str = None) -> None:
|
||||
"""Prints table showing urls to blockchain explorers. [Source: CoinGecko]
|
||||
|
||||
Parameters
|
||||
@@ -286,11 +299,12 @@ def display_bc(symbol: str, export: str = "") -> None:
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"bc",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_market(symbol: str, export: str = "") -> None:
|
||||
def display_market(symbol: str, export: str = "", sheet_name: str = None) -> None:
|
||||
"""Prints table showing market data for loaded coin. [Source: CoinGecko]
|
||||
|
||||
Parameters
|
||||
@@ -313,4 +327,5 @@ def display_market(symbol: str, export: str = "") -> None:
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"market",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -30,6 +30,7 @@ def display_github_activity(
|
||||
end_date: Optional[str] = None,
|
||||
interval: str = "1d",
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
) -> None:
|
||||
"""Returns a list of github activity for a given coin and time interval.
|
||||
@@ -89,4 +90,5 @@ def display_github_activity(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"gh",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -32,6 +32,7 @@ def display_fundamental_metric_from_project_over_time(
|
||||
metric: str,
|
||||
project: str,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""Plots fundamental metric from a project over time [Source: Token Terminal]
|
||||
@@ -101,12 +102,13 @@ def display_fundamental_metric_from_project_over_time(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"funot",
|
||||
metric_over_time,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@check_api_key(["API_TOKEN_TERMINAL_KEY"])
|
||||
def display_description(project: str, export: str = ""):
|
||||
def display_description(project: str, export: str = "", sheet_name: str = None):
|
||||
"""Prints description from a project [Source: Token Terminal]
|
||||
|
||||
Parameters
|
||||
@@ -132,4 +134,5 @@ def display_description(project: str, export: str = ""):
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"desc",
|
||||
pd.DataFrame(description.values(), index=description.keys()),
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -89,6 +89,9 @@ class NFTController(BaseController):
|
||||
nftpricefloor_view.display_floor_price(
|
||||
slug=ns_parser.slug,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
raw=ns_parser.raw,
|
||||
limit=ns_parser.limit,
|
||||
)
|
||||
@@ -125,6 +128,9 @@ class NFTController(BaseController):
|
||||
opensea_view.display_collection_stats(
|
||||
slug=ns_parser.slug,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -159,4 +165,7 @@ class NFTController(BaseController):
|
||||
show_fp=ns_parser.fp,
|
||||
limit=ns_parser.limit,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@@ -25,7 +25,11 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_collections(
|
||||
show_fp: bool = False, show_sales: bool = False, limit: int = 5, export: str = ""
|
||||
show_fp: bool = False,
|
||||
show_sales: bool = False,
|
||||
limit: int = 5,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
):
|
||||
"""Display NFT collections. [Source: https://nftpricefloor.com/]
|
||||
|
||||
@@ -81,6 +85,7 @@ def display_collections(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"collections",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -89,6 +94,7 @@ def display_floor_price(
|
||||
slug: str,
|
||||
limit: int = 10,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
raw: bool = False,
|
||||
):
|
||||
@@ -102,6 +108,8 @@ def display_floor_price(
|
||||
Flag to display raw data
|
||||
limit: int
|
||||
Number of raw data to show
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Format to export data
|
||||
external_axes : Optional[List[plt.Axes]], optional
|
||||
@@ -150,4 +158,5 @@ def display_floor_price(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"fp",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -12,7 +12,7 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_collection_stats(slug: str, export: str):
|
||||
def display_collection_stats(slug: str, export: str, sheet_name: str):
|
||||
"""Prints table showing collection stats. [Source: opensea.io]
|
||||
|
||||
Parameters
|
||||
@@ -40,4 +40,5 @@ def display_collection_stats(slug: str, export: str):
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"stats",
|
||||
collection_stats_df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -28,6 +28,7 @@ def display_dex_trades(
|
||||
sortby: str = "tradeAmount",
|
||||
ascend: bool = True,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Prints table showing Trades on Decentralized Exchanges aggregated by DEX or Month
|
||||
[Source: https://graphql.bitquery.io/]
|
||||
@@ -80,6 +81,7 @@ def display_dex_trades(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"lt",
|
||||
df_data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -92,6 +94,7 @@ def display_daily_volume_for_given_pair(
|
||||
sortby: str = "date",
|
||||
ascend: bool = True,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Prints table showing daily volume for given pair
|
||||
[Source: https://graphql.bitquery.io/]
|
||||
@@ -153,6 +156,7 @@ def display_daily_volume_for_given_pair(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"dvcp",
|
||||
df_data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -165,6 +169,7 @@ def display_dex_volume_for_token(
|
||||
sortby: str = "tradeAmount",
|
||||
ascend: bool = True,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Prints table showing token volume on different Decentralized Exchanges.
|
||||
[Source: https://graphql.bitquery.io/]
|
||||
@@ -218,6 +223,7 @@ def display_dex_volume_for_token(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"tv",
|
||||
df_data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -229,6 +235,7 @@ def display_ethereum_unique_senders(
|
||||
sortby: str = "date",
|
||||
ascend: bool = True,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Prints table showing number of unique ethereum addresses which made a transaction in given time interval
|
||||
[Source: https://graphql.bitquery.io/]
|
||||
@@ -279,6 +286,7 @@ def display_ethereum_unique_senders(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"ueat",
|
||||
df_data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -291,6 +299,7 @@ def display_most_traded_pairs(
|
||||
sortby: str = "tradeAmount",
|
||||
ascend: bool = True,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Prints table showing most traded crypto pairs on given decentralized exchange in chosen time period.
|
||||
[Source: https://graphql.bitquery.io/]
|
||||
@@ -339,6 +348,7 @@ def display_most_traded_pairs(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"ttcp",
|
||||
df_data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -351,6 +361,7 @@ def display_spread_for_crypto_pair(
|
||||
sortby: str = "date",
|
||||
ascend: bool = True,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Prints table showing an average bid and ask prices, average spread for given crypto pair for chosen
|
||||
time period. [Source: https://graphql.bitquery.io/]
|
||||
@@ -393,4 +404,5 @@ def display_spread_for_crypto_pair(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"baas",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -30,6 +30,7 @@ def display_btc_circulating_supply(
|
||||
start_date: str = "2010-01-01",
|
||||
end_date: Optional[str] = None,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
) -> None:
|
||||
"""Returns BTC circulating supply [Source: https://api.blockchain.info/]
|
||||
@@ -82,6 +83,7 @@ def display_btc_circulating_supply(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"btccp",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -90,6 +92,7 @@ def display_btc_confirmed_transactions(
|
||||
start_date: str = "2010-01-01",
|
||||
end_date: Optional[str] = None,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
) -> None:
|
||||
"""Returns BTC confirmed transactions [Source: https://api.blockchain.info/]
|
||||
@@ -144,6 +147,7 @@ def display_btc_confirmed_transactions(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"btcct",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -151,6 +155,7 @@ def display_btc_confirmed_transactions(
|
||||
def display_btc_single_block(
|
||||
blockhash: str,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Returns BTC block data. [Source: https://api.blockchain.info/]
|
||||
Parameters
|
||||
@@ -199,4 +204,5 @@ def display_btc_single_block(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"btcblockdata",
|
||||
df_data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -11,7 +11,7 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_gwei_fees(export: str = "") -> None:
|
||||
def display_gwei_fees(export: str = "", sheet_name: str = None) -> None:
|
||||
"""Current gwei fees
|
||||
[Source: https://ethgasstation.info]
|
||||
|
||||
@@ -40,4 +40,5 @@ def display_gwei_fees(export: str = "") -> None:
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"gwei",
|
||||
df_fees,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -25,6 +25,7 @@ def display_address_info(
|
||||
sortby: str = "index",
|
||||
ascend: bool = False,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Display info about tokens for given ethereum blockchain balance e.g. ETH balance,
|
||||
balance of all tokens with name and symbol. [Source: Ethplorer]
|
||||
@@ -63,6 +64,7 @@ def display_address_info(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"balance",
|
||||
df_data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -73,6 +75,7 @@ def display_top_tokens(
|
||||
sortby: str = "rank",
|
||||
ascend: bool = True,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Display top ERC20 tokens [Source: Ethplorer]
|
||||
|
||||
@@ -107,6 +110,7 @@ def display_top_tokens(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"top",
|
||||
df_data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -118,6 +122,7 @@ def display_top_token_holders(
|
||||
sortby: str = "balance",
|
||||
ascend: bool = True,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Display info about top ERC20 token holders. [Source: Ethplorer]
|
||||
|
||||
@@ -151,6 +156,7 @@ def display_top_token_holders(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"holders",
|
||||
df_data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -162,6 +168,7 @@ def display_address_history(
|
||||
sortby: str = "timestamp",
|
||||
ascend: bool = True,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Display information about balance historical transactions. [Source: Ethplorer]
|
||||
|
||||
@@ -199,6 +206,7 @@ def display_address_history(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"hist",
|
||||
df_data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -208,6 +216,7 @@ def display_token_info(
|
||||
address: str,
|
||||
social: bool = False,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Display info about ERC20 token. [Source: Ethplorer]
|
||||
|
||||
@@ -242,6 +251,7 @@ def display_token_info(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"info",
|
||||
df_data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -250,6 +260,7 @@ def display_token_info(
|
||||
def display_tx_info(
|
||||
tx_hash: str,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Display info about transaction. [Source: Ethplorer]
|
||||
|
||||
@@ -269,7 +280,13 @@ def display_tx_info(
|
||||
title="Information About Transactions",
|
||||
)
|
||||
|
||||
export_data(export, os.path.dirname(os.path.abspath(__file__)), "tx", df)
|
||||
export_data(
|
||||
export,
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"tx",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -281,6 +298,7 @@ def display_token_history(
|
||||
ascend: bool = False,
|
||||
hash_: bool = False,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Display info about token history. [Source: Ethplorer]
|
||||
|
||||
@@ -327,6 +345,7 @@ def display_token_history(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"th",
|
||||
df_data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -338,6 +357,7 @@ def display_token_historical_prices(
|
||||
sortby: str = "date",
|
||||
ascend: bool = False,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Display token historical prices with volume and market cap, and average price.
|
||||
[Source: Ethplorer]
|
||||
@@ -380,4 +400,5 @@ def display_token_historical_prices(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"prices",
|
||||
df_data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -206,6 +206,9 @@ class OnchainController(BaseController):
|
||||
interval=ns_parser.interval,
|
||||
symbol=ns_parser.symbol,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -244,6 +247,9 @@ class OnchainController(BaseController):
|
||||
limit=ns_parser.limit,
|
||||
platform=ns_parser.platform,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -266,6 +272,9 @@ class OnchainController(BaseController):
|
||||
if ns_parser:
|
||||
shroom_view.display_daily_transactions(
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -307,6 +316,9 @@ class OnchainController(BaseController):
|
||||
start_date=ns_parser.since.strftime("%Y-%m-%d"),
|
||||
end_date=ns_parser.until.strftime("%Y-%m-%d"),
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -348,6 +360,9 @@ class OnchainController(BaseController):
|
||||
start_date=ns_parser.since.strftime("%Y-%m-%d"),
|
||||
end_date=ns_parser.until.strftime("%Y-%m-%d"),
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -415,6 +430,9 @@ class OnchainController(BaseController):
|
||||
start_date=ns_parser.since.strftime("%Y-%m-%d"),
|
||||
end_date=ns_parser.until.strftime("%Y-%m-%d"),
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -435,7 +453,12 @@ class OnchainController(BaseController):
|
||||
)
|
||||
|
||||
if ns_parser:
|
||||
ethgasstation_view.display_gwei_fees(export=ns_parser.export)
|
||||
ethgasstation_view.display_gwei_fees(
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def call_whales(self, other_args: List[str]):
|
||||
@@ -506,6 +529,9 @@ class OnchainController(BaseController):
|
||||
ascend=ns_parser.reverse,
|
||||
show_address=ns_parser.address,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -636,6 +662,9 @@ class OnchainController(BaseController):
|
||||
ascend=ns_parser.reverse,
|
||||
address=self.address,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
else:
|
||||
console.print("You need to set an ethereum address\n")
|
||||
@@ -693,6 +722,9 @@ class OnchainController(BaseController):
|
||||
ascend=ns_parser.reverse,
|
||||
address=self.address,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
else:
|
||||
console.print("You need to set an ethereum address\n")
|
||||
@@ -749,6 +781,9 @@ class OnchainController(BaseController):
|
||||
ascend=ns_parser.reverse,
|
||||
address=self.address,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
else:
|
||||
console.print("You need to set an ethereum address\n")
|
||||
@@ -804,6 +839,9 @@ class OnchainController(BaseController):
|
||||
sortby=ns_parser.sortby,
|
||||
ascend=ns_parser.reverse,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -837,6 +875,9 @@ class OnchainController(BaseController):
|
||||
social=ns_parser.social,
|
||||
address=self.address,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
else:
|
||||
console.print("You need to set an ethereum address\n")
|
||||
@@ -903,6 +944,9 @@ class OnchainController(BaseController):
|
||||
ascend=ns_parser.reverse,
|
||||
address=self.address,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
else:
|
||||
console.print("You need to set an ethereum address\n")
|
||||
@@ -930,6 +974,9 @@ class OnchainController(BaseController):
|
||||
ethplorer_view.display_tx_info(
|
||||
tx_hash=self.address,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
else:
|
||||
console.print("You need to set an ethereum address\n")
|
||||
@@ -986,6 +1033,9 @@ class OnchainController(BaseController):
|
||||
ascend=ns_parser.reverse,
|
||||
address=self.address,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
else:
|
||||
console.print("You need to set an ethereum address\n")
|
||||
@@ -1071,6 +1121,9 @@ class OnchainController(BaseController):
|
||||
sortby=ns_parser.sortby,
|
||||
ascend=ns_parser.reverse,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -1148,6 +1201,9 @@ class OnchainController(BaseController):
|
||||
sortby=ns_parser.sortby,
|
||||
ascend=ns_parser.reverse,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -1223,6 +1279,9 @@ class OnchainController(BaseController):
|
||||
sortby=ns_parser.sortby,
|
||||
ascend=ns_parser.reverse,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -1294,6 +1353,9 @@ class OnchainController(BaseController):
|
||||
sortby=ns_parser.sortby,
|
||||
ascend=ns_parser.reverse,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -1404,6 +1466,9 @@ class OnchainController(BaseController):
|
||||
sortby=ns_parser.sortby,
|
||||
ascend=ns_parser.reverse,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -1481,6 +1546,9 @@ class OnchainController(BaseController):
|
||||
sortby=ns_parser.sortby,
|
||||
ascend=ns_parser.reverse,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
else:
|
||||
@@ -1505,6 +1573,9 @@ class OnchainController(BaseController):
|
||||
sortby=ns_parser.sortby,
|
||||
ascend=ns_parser.reverse,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
except Exception:
|
||||
similar_cmd = difflib.get_close_matches(
|
||||
@@ -1551,4 +1622,7 @@ class OnchainController(BaseController):
|
||||
blockchain_view.display_btc_single_block(
|
||||
blockhash=ns_parser.blockhash,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@@ -32,6 +32,7 @@ logger = logging.getLogger(__name__)
|
||||
@check_api_key(["API_SHROOM_KEY"])
|
||||
def display_daily_transactions(
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""Get daily transactions for certain symbols in ethereum blockchain
|
||||
@@ -76,6 +77,7 @@ def display_daily_transactions(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"dt",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -86,6 +88,7 @@ def display_dapp_stats(
|
||||
raw: bool = False,
|
||||
limit: int = 10,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""Get daily transactions for certain symbols in ethereum blockchain
|
||||
@@ -144,6 +147,7 @@ def display_dapp_stats(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"ds",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -155,6 +159,7 @@ def display_total_value_locked(
|
||||
symbol: str = "USDC",
|
||||
interval: int = 1,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
) -> None:
|
||||
|
||||
@@ -218,4 +223,5 @@ def display_total_value_locked(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"tvl",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -26,6 +26,7 @@ def display_whales_transactions(
|
||||
ascend: bool = False,
|
||||
show_address: bool = False,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Display huge value transactions from major blockchains. [Source: https://docs.whale-alert.io/]
|
||||
|
||||
@@ -77,4 +78,5 @@ def display_whales_transactions(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"whales",
|
||||
df_data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -29,6 +29,7 @@ def display_altcoin_index(
|
||||
start_date: str = "2010-01-01",
|
||||
end_date: Optional[str] = None,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
) -> None:
|
||||
"""Displays altcoin index overtime
|
||||
@@ -86,4 +87,5 @@ def display_altcoin_index(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"altindex",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -22,6 +22,7 @@ def display_trading_pairs(
|
||||
sortby: str = "quote_increment",
|
||||
ascend: bool = True,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Displays a list of available currency pairs for trading. [Source: Coinbase]
|
||||
|
||||
@@ -51,4 +52,5 @@ def display_trading_pairs(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"cbpairs",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -71,7 +71,7 @@ CURRENCIES = [
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_global_market(export: str = "") -> None:
|
||||
def display_global_market(export: str = "", sheet_name: str = None) -> None:
|
||||
"""Return data frame with most important global crypto statistics like:
|
||||
market_cap_usd, volume_24h_usd, bitcoin_dominance_percentage, cryptocurrencies_number,
|
||||
market_cap_ath_value, market_cap_ath_date, volume_24h_ath_value, volume_24h_ath_date,
|
||||
@@ -98,6 +98,7 @@ def display_global_market(export: str = "") -> None:
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"global",
|
||||
df_data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -108,6 +109,7 @@ def display_all_coins_market_info(
|
||||
ascend: bool = True,
|
||||
limit: int = 15,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Displays basic market information for all coins from CoinPaprika API. [Source: CoinPaprika]
|
||||
|
||||
@@ -152,6 +154,7 @@ def display_all_coins_market_info(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"markets",
|
||||
df_data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -162,6 +165,7 @@ def display_all_coins_info(
|
||||
ascend: bool = True,
|
||||
limit: int = 15,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Displays basic coin information for all coins from CoinPaprika API. [Source: CoinPaprika]
|
||||
|
||||
@@ -206,6 +210,7 @@ def display_all_coins_info(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"info",
|
||||
df_data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -216,6 +221,7 @@ def display_all_exchanges(
|
||||
ascend: bool = True,
|
||||
limit: int = 15,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""List exchanges from CoinPaprika API. [Source: CoinPaprika]
|
||||
|
||||
@@ -260,6 +266,7 @@ def display_all_exchanges(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"exchanges",
|
||||
df_data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -271,6 +278,7 @@ def display_exchange_markets(
|
||||
limit: int = 15,
|
||||
links: bool = False,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Get all markets for given exchange [Source: CoinPaprika]
|
||||
|
||||
@@ -317,11 +325,12 @@ def display_exchange_markets(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"exmarkets",
|
||||
df_data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_all_platforms(export: str) -> None:
|
||||
def display_all_platforms(export: str = "", sheet_name: str = None) -> None:
|
||||
"""List all smart contract platforms like ethereum, solana, cosmos, polkadot, kusama.
|
||||
[Source: CoinPaprika]
|
||||
|
||||
@@ -342,6 +351,7 @@ def display_all_platforms(export: str) -> None:
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"platforms",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -352,6 +362,7 @@ def display_contracts(
|
||||
ascend: bool = True,
|
||||
limit: int = 15,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Gets all contract addresses for given platform. [Source: CoinPaprika]
|
||||
|
||||
@@ -387,4 +398,5 @@ def display_contracts(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"contracts",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -12,6 +12,8 @@ from openbb_terminal.decorators import check_api_key
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# pylint: disable=too-many-arguments
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@check_api_key(["API_CRYPTO_PANIC_KEY"])
|
||||
@@ -24,6 +26,7 @@ def display_news(
|
||||
ascend: bool = False,
|
||||
links: bool = False,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Display recent posts from CryptoPanic news aggregator platform.
|
||||
[Source: https://cryptopanic.com/]
|
||||
@@ -75,4 +78,5 @@ def display_news(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"news",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -31,6 +31,7 @@ def display_btc_rainbow(
|
||||
start_date: str = "2010-01-01",
|
||||
end_date: Optional[str] = None,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""Displays bitcoin rainbow chart
|
||||
@@ -147,4 +148,5 @@ def display_btc_rainbow(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"btcrb",
|
||||
df_data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -27,6 +27,7 @@ def display_crypto_rates(
|
||||
rate_type: str = "borrow",
|
||||
limit: int = 10,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
) -> None:
|
||||
"""Displays crypto {borrow,supply} interest rates for cryptocurrencies across several platforms
|
||||
@@ -119,4 +120,5 @@ def display_crypto_rates(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"cr",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -309,6 +309,9 @@ class OverviewController(BaseController):
|
||||
slug=ns_parser.slug,
|
||||
limit=ns_parser.limit,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
sortby=" ".join(ns_parser.sortby),
|
||||
ascend=not ns_parser.reverse,
|
||||
)
|
||||
@@ -350,6 +353,9 @@ class OverviewController(BaseController):
|
||||
start_date=ns_parser.since.strftime("%Y-%m-%d"),
|
||||
end_date=ns_parser.until.strftime("%Y-%m-%d"),
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -408,6 +414,9 @@ class OverviewController(BaseController):
|
||||
end_date=ns_parser.until.strftime("%Y-%m-%d"),
|
||||
period=ns_parser.period,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -576,6 +585,9 @@ class OverviewController(BaseController):
|
||||
pycoingecko_view.display_holdings_overview(
|
||||
symbol=ns_parser.coin,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
show_bar=ns_parser.bar,
|
||||
limit=ns_parser.limit,
|
||||
)
|
||||
@@ -632,6 +644,9 @@ class OverviewController(BaseController):
|
||||
pycoingecko_view.display_categories(
|
||||
limit=ns_parser.limit,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
sortby=ns_parser.sortby,
|
||||
pie=ns_parser.pie,
|
||||
)
|
||||
@@ -702,6 +717,9 @@ class OverviewController(BaseController):
|
||||
pycoingecko_view.display_stablecoins(
|
||||
limit=ns_parser.limit,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
sortby=ns_parser.sortby,
|
||||
ascend=ns_parser.reverse,
|
||||
pie=ns_parser.pie,
|
||||
@@ -765,6 +783,9 @@ class OverviewController(BaseController):
|
||||
platforms=ns_parser.platforms,
|
||||
limit=ns_parser.limit,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -840,6 +861,9 @@ class OverviewController(BaseController):
|
||||
pycoingecko_view.display_exchanges(
|
||||
limit=ns_parser.limit,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
sortby=ns_parser.sortby,
|
||||
ascend=ns_parser.reverse,
|
||||
links=ns_parser.urls,
|
||||
@@ -851,6 +875,9 @@ class OverviewController(BaseController):
|
||||
ascend=ns_parser.reverse,
|
||||
sortby=ns_parser.sortby,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -903,6 +930,9 @@ class OverviewController(BaseController):
|
||||
limit=ns_parser.limit,
|
||||
ascend=not ns_parser.reverse,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -959,6 +989,9 @@ class OverviewController(BaseController):
|
||||
sortby=ns_parser.sortby,
|
||||
ascend=not ns_parser.reverse,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -1017,6 +1050,9 @@ class OverviewController(BaseController):
|
||||
sortby=ns_parser.sortby,
|
||||
ascend=not ns_parser.reverse,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -1043,10 +1079,19 @@ class OverviewController(BaseController):
|
||||
if ns_parser:
|
||||
if ns_parser.source == "CoinGecko":
|
||||
pycoingecko_view.display_global_market_info(
|
||||
export=ns_parser.export, pie=ns_parser.pie
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
pie=ns_parser.pie,
|
||||
)
|
||||
elif ns_parser.source == "CoinPaprika":
|
||||
coinpaprika_view.display_global_market(export=ns_parser.export)
|
||||
coinpaprika_view.display_global_market(
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def call_defi(self, other_args):
|
||||
@@ -1066,7 +1111,12 @@ class OverviewController(BaseController):
|
||||
parser, other_args, EXPORT_ONLY_RAW_DATA_ALLOWED
|
||||
)
|
||||
if ns_parser:
|
||||
pycoingecko_view.display_global_defi_info(export=ns_parser.export)
|
||||
pycoingecko_view.display_global_defi_info(
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def call_markets(self, other_args):
|
||||
@@ -1130,6 +1180,9 @@ class OverviewController(BaseController):
|
||||
limit=ns_parser.limit,
|
||||
ascend=ns_parser.reverse,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
sortby=ns_parser.sortby,
|
||||
)
|
||||
|
||||
@@ -1206,6 +1259,9 @@ class OverviewController(BaseController):
|
||||
exchange=ns_parser.exchange,
|
||||
limit=ns_parser.limit,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
sortby=ns_parser.sortby,
|
||||
ascend=ns_parser.reverse,
|
||||
links=ns_parser.urls,
|
||||
@@ -1276,6 +1332,9 @@ class OverviewController(BaseController):
|
||||
ascend=not ns_parser.reverse,
|
||||
sortby=ns_parser.sortby,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -1292,7 +1351,12 @@ class OverviewController(BaseController):
|
||||
parser, other_args, EXPORT_ONLY_RAW_DATA_ALLOWED
|
||||
)
|
||||
if ns_parser:
|
||||
coinpaprika_view.display_all_platforms(export=ns_parser.export)
|
||||
coinpaprika_view.display_all_platforms(
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def call_contracts(self, other_args):
|
||||
@@ -1364,6 +1428,9 @@ class OverviewController(BaseController):
|
||||
ascend=not ns_parser.reverse,
|
||||
sortby=ns_parser.sortby,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -1411,6 +1478,9 @@ class OverviewController(BaseController):
|
||||
coinbase_view.display_trading_pairs(
|
||||
limit=ns_parser.limit,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
sortby=ns_parser.sortby,
|
||||
ascend=not ns_parser.reverse,
|
||||
)
|
||||
@@ -1496,6 +1566,9 @@ class OverviewController(BaseController):
|
||||
cryptopanic_view.display_news(
|
||||
limit=ns_parser.limit,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
sortby=ns_parser.sortby,
|
||||
ascend=ns_parser.reverse,
|
||||
links=ns_parser.urls,
|
||||
|
||||
@@ -37,6 +37,7 @@ def display_crypto_heatmap(
|
||||
category: str = "",
|
||||
limit: int = 15,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
) -> None:
|
||||
"""Shows cryptocurrencies heatmap [Source: CoinGecko]
|
||||
@@ -47,6 +48,8 @@ def display_crypto_heatmap(
|
||||
Category (e.g., stablecoins). Empty for no category (default: )
|
||||
limit: int
|
||||
Number of top cryptocurrencies to display
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Export dataframe data to csv,json,xlsx
|
||||
external_axes : Optional[List[plt.Axes]], optional
|
||||
@@ -128,12 +131,17 @@ def display_crypto_heatmap(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"hm",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_holdings_overview(
|
||||
symbol: str, show_bar: bool = False, export: str = "", limit: int = 15
|
||||
symbol: str,
|
||||
show_bar: bool = False,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
limit: int = 15,
|
||||
) -> None:
|
||||
"""Shows overview of public companies that holds ethereum or bitcoin. [Source: CoinGecko]
|
||||
|
||||
@@ -143,6 +151,8 @@ def display_holdings_overview(
|
||||
Cryptocurrency: ethereum or bitcoin
|
||||
show_bar : bool
|
||||
Whether to show a bar graph for the data
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Export dataframe data to csv,json,xlsx
|
||||
limit: int
|
||||
@@ -193,12 +203,17 @@ def display_holdings_overview(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"cghold",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_exchange_rates(
|
||||
sortby: str = "Name", ascend: bool = False, limit: int = 15, export: str = ""
|
||||
sortby: str = "Name",
|
||||
ascend: bool = False,
|
||||
limit: int = 15,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Shows list of crypto, fiats, commodity exchange rates. [Source: CoinGecko]
|
||||
|
||||
@@ -229,13 +244,16 @@ def display_exchange_rates(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"exrates",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
else:
|
||||
console.print("Unable to retrieve data from CoinGecko.")
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_global_market_info(pie: bool = False, export: str = "") -> None:
|
||||
def display_global_market_info(
|
||||
pie: bool = False, export: str = "", sheet_name: str = None
|
||||
) -> None:
|
||||
"""Shows global statistics about crypto. [Source: CoinGecko]
|
||||
- market cap change
|
||||
- number of markets
|
||||
@@ -292,13 +310,14 @@ def display_global_market_info(pie: bool = False, export: str = "") -> None:
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"cgglobal",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
else:
|
||||
console.print("Unable to retrieve data from CoinGecko.")
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_global_defi_info(export: str = "") -> None:
|
||||
def display_global_defi_info(export: str = "", sheet_name: str = None) -> None:
|
||||
"""Shows global statistics about Decentralized Finances. [Source: CoinGecko]
|
||||
|
||||
Parameters
|
||||
@@ -322,6 +341,7 @@ def display_global_defi_info(export: str = "") -> None:
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"defi",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
else:
|
||||
console.print("Unable to retrieve data from CoinGecko.")
|
||||
@@ -331,6 +351,7 @@ def display_global_defi_info(export: str = "") -> None:
|
||||
def display_stablecoins(
|
||||
limit: int = 15,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
sortby: str = "Market_Cap_[$]",
|
||||
ascend: bool = False,
|
||||
pie: bool = True,
|
||||
@@ -407,6 +428,7 @@ def display_stablecoins(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"cgstables",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
else:
|
||||
console.print("\nUnable to retrieve data from CoinGecko.\n")
|
||||
@@ -417,6 +439,7 @@ def display_categories(
|
||||
sortby: str = "market_cap_desc",
|
||||
limit: int = 15,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
pie: bool = False,
|
||||
) -> None:
|
||||
"""Shows top cryptocurrency categories by market capitalization
|
||||
@@ -429,6 +452,8 @@ def display_categories(
|
||||
Key by which to sort data
|
||||
limit: int
|
||||
Number of records to display
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Export dataframe data to csv,json,xlsx file
|
||||
pie: bool
|
||||
@@ -473,6 +498,7 @@ def display_categories(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"cgcategories",
|
||||
df_data,
|
||||
sheet_name,
|
||||
)
|
||||
else:
|
||||
console.print("\nUnable to retrieve data from CoinGecko.\n")
|
||||
@@ -485,6 +511,7 @@ def display_exchanges(
|
||||
limit: int = 15,
|
||||
links: bool = False,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Shows list of top exchanges from CoinGecko. [Source: CoinGecko]
|
||||
|
||||
@@ -523,6 +550,7 @@ def display_exchanges(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"exchanges",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
else:
|
||||
console.print("Unable to retrieve data from CoinGecko.")
|
||||
@@ -530,7 +558,11 @@ def display_exchanges(
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_platforms(
|
||||
sortby: str = "Name", ascend: bool = True, limit: int = 15, export: str = ""
|
||||
sortby: str = "Name",
|
||||
ascend: bool = True,
|
||||
limit: int = 15,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Shows list of financial platforms. [Source: CoinGecko]
|
||||
|
||||
@@ -561,6 +593,7 @@ def display_platforms(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"platforms",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
else:
|
||||
console.print("\nUnable to retrieve data from CoinGecko.\n")
|
||||
@@ -568,7 +601,11 @@ def display_platforms(
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_products(
|
||||
sortby: str = "Platform", ascend: bool = False, limit: int = 15, export: str = ""
|
||||
sortby: str = "Platform",
|
||||
ascend: bool = False,
|
||||
limit: int = 15,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Shows list of financial products. [Source: CoinGecko]
|
||||
|
||||
@@ -599,6 +636,7 @@ def display_products(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"products",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
else:
|
||||
console.print("Unable to retrieve data from CoinGecko.")
|
||||
@@ -606,7 +644,11 @@ def display_products(
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_indexes(
|
||||
sortby: str = "Name", ascend: bool = True, limit: int = 15, export: str = ""
|
||||
sortby: str = "Name",
|
||||
ascend: bool = True,
|
||||
limit: int = 15,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Shows list of crypto indexes. [Source: CoinGecko]
|
||||
|
||||
@@ -636,6 +678,7 @@ def display_indexes(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"indexes",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
else:
|
||||
console.print("Unable to retrieve data from CoinGecko.")
|
||||
@@ -643,7 +686,11 @@ def display_indexes(
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_derivatives(
|
||||
sortby: str = "Rank", ascend: bool = False, limit: int = 15, export: str = ""
|
||||
sortby: str = "Rank",
|
||||
ascend: bool = False,
|
||||
limit: int = 15,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Shows list of crypto derivatives. [Source: CoinGecko]
|
||||
|
||||
@@ -675,6 +722,7 @@ def display_derivatives(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"derivatives",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
else:
|
||||
console.print("Unable to retrieve data from CoinGecko.")
|
||||
|
||||
@@ -21,6 +21,7 @@ def display_crypto_hacks(
|
||||
ascend: bool = False,
|
||||
slug: str = "polyntwork-rekt",
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Display list of major crypto-related hacks. If slug is passed
|
||||
individual crypto hack is displayed instead of list of crypto hacks
|
||||
@@ -48,6 +49,7 @@ def display_crypto_hacks(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"ch",
|
||||
text,
|
||||
sheet_name,
|
||||
)
|
||||
else:
|
||||
df = rekt_model.get_crypto_hacks(sortby, ascend)
|
||||
@@ -73,4 +75,5 @@ def display_crypto_hacks(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"ch",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -132,8 +132,5 @@ def display_fundamental_metrics(
|
||||
theme.visualize_output()
|
||||
|
||||
export_data(
|
||||
export,
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"fun",
|
||||
metric_series,
|
||||
export, os.path.dirname(os.path.abspath(__file__)), "fun", metric_series
|
||||
)
|
||||
|
||||
@@ -15,7 +15,9 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_overall_withdrawal_fees(limit: int = 15, export: str = "") -> None:
|
||||
def display_overall_withdrawal_fees(
|
||||
limit: int = 15, export: str = "", sheet_name: str = None
|
||||
) -> None:
|
||||
"""Top coins withdrawal fees
|
||||
[Source: https://withdrawalfees.com/]
|
||||
|
||||
@@ -46,11 +48,14 @@ def display_overall_withdrawal_fees(limit: int = 15, export: str = "") -> None:
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"withdrawal_fees",
|
||||
df_fees,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_overall_exchange_withdrawal_fees(export: str = "") -> None:
|
||||
def display_overall_exchange_withdrawal_fees(
|
||||
export: str = "", sheet_name: str = None
|
||||
) -> None:
|
||||
"""Exchange withdrawal fees
|
||||
[Source: https://withdrawalfees.com/]
|
||||
|
||||
@@ -79,11 +84,14 @@ def display_overall_exchange_withdrawal_fees(export: str = "") -> None:
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"exchange_withdrawal_fees",
|
||||
df_fees,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_crypto_withdrawal_fees(symbol: str, export: str = "") -> None:
|
||||
def display_crypto_withdrawal_fees(
|
||||
symbol: str, export: str = "", sheet_name: str = None
|
||||
) -> None:
|
||||
"""Coin withdrawal fees per exchange
|
||||
[Source: https://withdrawalfees.com/]
|
||||
|
||||
@@ -117,4 +125,5 @@ def display_crypto_withdrawal_fees(symbol: str, export: str = "") -> None:
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"crypto_withdrawal_fees",
|
||||
df_fees,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -217,6 +217,9 @@ class QaController(CryptoBaseController):
|
||||
sortby=ns_parser.sortby,
|
||||
ascend=ns_parser.reverse,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -234,7 +237,13 @@ class QaController(CryptoBaseController):
|
||||
parser, other_args, export_allowed=EXPORT_ONLY_RAW_DATA_ALLOWED
|
||||
)
|
||||
if ns_parser:
|
||||
qa_view.display_summary(data=self.data, export=ns_parser.export)
|
||||
qa_view.display_summary(
|
||||
data=self.data,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def call_line(self, other_args: List[str]):
|
||||
@@ -328,6 +337,9 @@ class QaController(CryptoBaseController):
|
||||
data=self.data,
|
||||
target=self.target,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -389,6 +401,9 @@ class QaController(CryptoBaseController):
|
||||
target=self.target,
|
||||
multiplicative=ns_parser.multiplicative,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -500,6 +515,9 @@ class QaController(CryptoBaseController):
|
||||
target=self.target,
|
||||
window=ns_parser.n_window,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -533,6 +551,9 @@ class QaController(CryptoBaseController):
|
||||
target=self.target,
|
||||
window=ns_parser.n_window,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -586,6 +607,9 @@ class QaController(CryptoBaseController):
|
||||
window=ns_parser.n_window,
|
||||
quantile=ns_parser.f_quantile,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -625,6 +649,9 @@ class QaController(CryptoBaseController):
|
||||
target=self.target,
|
||||
window=ns_parser.n_window,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -664,6 +691,9 @@ class QaController(CryptoBaseController):
|
||||
target=self.target,
|
||||
window=ns_parser.n_window,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -741,4 +771,7 @@ class QaController(CryptoBaseController):
|
||||
fuller_reg=ns_parser.fuller_reg,
|
||||
kpss_reg=ns_parser.kpss_reg,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@@ -234,6 +234,9 @@ class TechnicalAnalysisController(CryptoBaseController):
|
||||
window=ns_parser.n_length,
|
||||
offset=ns_parser.n_offset,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -288,6 +291,9 @@ class TechnicalAnalysisController(CryptoBaseController):
|
||||
window=ns_parser.n_length,
|
||||
offset=ns_parser.n_offset,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -339,6 +345,9 @@ class TechnicalAnalysisController(CryptoBaseController):
|
||||
window=ns_parser.n_length,
|
||||
offset=ns_parser.n_offset,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -390,6 +399,9 @@ class TechnicalAnalysisController(CryptoBaseController):
|
||||
window=ns_parser.n_length,
|
||||
offset=ns_parser.n_offset,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -444,6 +456,9 @@ class TechnicalAnalysisController(CryptoBaseController):
|
||||
window=ns_parser.n_length,
|
||||
offset=ns_parser.n_offset,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -507,6 +522,9 @@ class TechnicalAnalysisController(CryptoBaseController):
|
||||
end_date=ns_parser.end,
|
||||
offset=ns_parser.n_offset,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -557,6 +575,9 @@ class TechnicalAnalysisController(CryptoBaseController):
|
||||
window=ns_parser.n_length,
|
||||
scalar=ns_parser.n_scalar,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -616,6 +637,9 @@ class TechnicalAnalysisController(CryptoBaseController):
|
||||
n_slow=ns_parser.n_slow,
|
||||
n_signal=ns_parser.n_signal,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -680,6 +704,9 @@ class TechnicalAnalysisController(CryptoBaseController):
|
||||
scalar=ns_parser.n_scalar,
|
||||
drift=ns_parser.n_drift,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -742,6 +769,9 @@ class TechnicalAnalysisController(CryptoBaseController):
|
||||
slowdperiod=ns_parser.n_slowdperiod,
|
||||
slowkperiod=ns_parser.n_slowkperiod,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -783,6 +813,9 @@ class TechnicalAnalysisController(CryptoBaseController):
|
||||
data=self.stock,
|
||||
window=ns_parser.n_length,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -824,6 +857,9 @@ class TechnicalAnalysisController(CryptoBaseController):
|
||||
data=self.stock["Adj Close"],
|
||||
window=ns_parser.n_length,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -885,6 +921,9 @@ class TechnicalAnalysisController(CryptoBaseController):
|
||||
scalar=ns_parser.n_scalar,
|
||||
drift=ns_parser.n_drift,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -942,6 +981,9 @@ class TechnicalAnalysisController(CryptoBaseController):
|
||||
window=ns_parser.n_length,
|
||||
scalar=ns_parser.n_scalar,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -1011,6 +1053,9 @@ class TechnicalAnalysisController(CryptoBaseController):
|
||||
n_std=ns_parser.n_std,
|
||||
mamode=ns_parser.s_mamode,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -1062,6 +1107,9 @@ class TechnicalAnalysisController(CryptoBaseController):
|
||||
upper_length=ns_parser.n_length_upper,
|
||||
lower_length=ns_parser.n_length_lower,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -1135,6 +1183,9 @@ class TechnicalAnalysisController(CryptoBaseController):
|
||||
mamode=ns_parser.s_mamode,
|
||||
offset=ns_parser.n_offset,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -1174,6 +1225,9 @@ class TechnicalAnalysisController(CryptoBaseController):
|
||||
data=self.stock,
|
||||
use_open=ns_parser.b_use_open,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -1230,6 +1284,9 @@ class TechnicalAnalysisController(CryptoBaseController):
|
||||
fast=ns_parser.n_length_fast,
|
||||
slow=ns_parser.n_length_slow,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -1258,6 +1315,9 @@ class TechnicalAnalysisController(CryptoBaseController):
|
||||
symbol=self.coin,
|
||||
data=self.stock,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -1308,4 +1368,7 @@ class TechnicalAnalysisController(CryptoBaseController):
|
||||
start_date=ns_parser.start,
|
||||
end_date=ns_parser.end,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@@ -123,6 +123,9 @@ class ToolsController(BaseController):
|
||||
initial_pool_value=ns_parser.value,
|
||||
narrative=ns_parser.narrative,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -179,4 +182,7 @@ class ToolsController(BaseController):
|
||||
compounding_times=ns_parser.compounding,
|
||||
narrative=ns_parser.narrative,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@@ -14,7 +14,11 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_apy(
|
||||
apr: float, compounding_times: int, narrative: bool = False, export: str = ""
|
||||
apr: float,
|
||||
compounding_times: int,
|
||||
narrative: bool = False,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
):
|
||||
"""Displays APY value converted from APR
|
||||
|
||||
@@ -49,6 +53,7 @@ def display_apy(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"aprtoapy",
|
||||
apy_str,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -60,6 +65,7 @@ def display_il(
|
||||
initial_pool_value: int,
|
||||
narrative: bool = False,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
):
|
||||
"""Displays Impermanent Loss in a custom liquidity pool
|
||||
|
||||
@@ -102,4 +108,5 @@ def display_il(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"il",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -129,7 +129,7 @@ def check_api_key(api_keys):
|
||||
undefined_apis_name = ", ".join(undefined_apis)
|
||||
console.print(
|
||||
f"[red]{undefined_apis_name} not defined. "
|
||||
"Set API Keys in ~/.openbb_terminal/.env or under keys menu.[/red]\n"
|
||||
"Set API Keys in ~/.openbb_terminal/.env or under keys menu.[/red]"
|
||||
) # pragma: allowlist secret
|
||||
return None
|
||||
return func(*args, **kwargs)
|
||||
|
||||
@@ -597,6 +597,7 @@ class EconometricsController(BaseController):
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
f"{ns_parser.name}_show",
|
||||
df.head(ns_parser.limit),
|
||||
ns_parser.sheet_name,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -640,6 +641,7 @@ class EconometricsController(BaseController):
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
f"{dataset}_{col}_desc",
|
||||
df,
|
||||
ns_parser.sheet_name,
|
||||
)
|
||||
else:
|
||||
df = self.datasets[ns_parser.name]
|
||||
@@ -657,6 +659,7 @@ class EconometricsController(BaseController):
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
f"{ns_parser.name}_desc",
|
||||
df,
|
||||
ns_parser.sheet_name,
|
||||
)
|
||||
else:
|
||||
console.print("Empty dataset")
|
||||
@@ -1524,7 +1527,13 @@ class EconometricsController(BaseController):
|
||||
parser, other_args, EXPORT_ONLY_RAW_DATA_ALLOWED
|
||||
)
|
||||
if ns_parser:
|
||||
regression_model.get_comparison(self.regression, ns_parser.export)
|
||||
regression_model.get_comparison(
|
||||
self.regression,
|
||||
ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
console.print()
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -1748,6 +1757,9 @@ class EconometricsController(BaseController):
|
||||
significant=ns_parser.significant,
|
||||
plot=ns_parser.plot,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
else:
|
||||
|
||||
@@ -28,6 +28,7 @@ def show_options(
|
||||
datasets: Dict[str, pd.DataFrame],
|
||||
dataset_name: str = None,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
):
|
||||
"""Plot custom data
|
||||
|
||||
@@ -37,6 +38,8 @@ def show_options(
|
||||
The loaded in datasets
|
||||
dataset_name: str
|
||||
The name of the dataset you wish to show options for
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Format to export image
|
||||
"""
|
||||
@@ -60,6 +63,7 @@ def show_options(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
f"{dataset}_options",
|
||||
data_values.set_index("column"),
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -67,6 +71,7 @@ def show_options(
|
||||
def display_plot(
|
||||
data: Union[pd.Series, pd.DataFrame, Dict[str, pd.DataFrame]],
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.axes]] = None,
|
||||
):
|
||||
"""Plot data from a dataset
|
||||
@@ -75,6 +80,8 @@ def display_plot(
|
||||
----------
|
||||
data: Union[pd.Series, pd.DataFrame, Dict[str: pd.DataFrame]
|
||||
Dictionary with key being dataset.column and dataframes being values
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Format to export image
|
||||
external_axes:Optional[List[plt.axes]]
|
||||
@@ -122,6 +129,7 @@ def display_plot(
|
||||
export,
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"plot",
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -132,6 +140,7 @@ def display_norm(
|
||||
column: str = "",
|
||||
plot: bool = True,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.axes]] = None,
|
||||
):
|
||||
"""Determine the normality of a timeseries.
|
||||
@@ -146,6 +155,8 @@ def display_norm(
|
||||
Column for y data
|
||||
plot : bool
|
||||
Whether you wish to plot a histogram
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Format to export data.
|
||||
external_axes: Optional[List[plt.axes]]
|
||||
@@ -188,6 +199,7 @@ def display_norm(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
f"{column}_{dataset}_norm",
|
||||
results,
|
||||
sheet_name,
|
||||
)
|
||||
else:
|
||||
console.print()
|
||||
@@ -201,6 +213,7 @@ def display_root(
|
||||
fuller_reg: str = "c",
|
||||
kpss_reg: str = "c",
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
):
|
||||
"""Determine the normality of a timeseries.
|
||||
|
||||
@@ -216,6 +229,8 @@ def display_root(
|
||||
Type of regression of ADF test. Choose c, ct, ctt, or nc
|
||||
kpss_reg : str
|
||||
Type of regression for KPSS test. Choose c or ct
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Format to export data.
|
||||
"""
|
||||
@@ -240,6 +255,7 @@ def display_root(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
f"{dataset}_{column}_root",
|
||||
results,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -250,6 +266,7 @@ def display_granger(
|
||||
lags: int = 3,
|
||||
confidence_level: float = 0.05,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
):
|
||||
"""Show granger tests
|
||||
|
||||
@@ -307,6 +324,7 @@ def display_granger(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
f'{dependent_series.name.replace(".","-")}_{independent_series.name.replace(".","-")}_granger',
|
||||
granger_df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -316,6 +334,7 @@ def display_cointegration_test(
|
||||
significant: bool = False,
|
||||
plot: bool = True,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.axes]] = None,
|
||||
):
|
||||
"""Estimates long-run and short-run cointegration relationship for series y and x and apply
|
||||
@@ -393,4 +412,5 @@ def display_cointegration_test(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"coint",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -434,7 +434,7 @@ def get_fdols(Y: pd.DataFrame, X: pd.DataFrame) -> Any:
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_comparison(regressions: Dict, export: str = ""):
|
||||
def get_comparison(regressions: Dict, export: str = "", sheet_name: str = None):
|
||||
"""Compare regression results between Panel Data regressions.
|
||||
|
||||
Parameters
|
||||
@@ -477,6 +477,7 @@ def get_comparison(regressions: Dict, export: str = ""):
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"regressions_compare",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
return comparison_result
|
||||
|
||||
@@ -27,6 +27,7 @@ def display_panel(
|
||||
entity_effects: bool = False,
|
||||
time_effects: bool = False,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
):
|
||||
"""Based on the regression type, this function decides what regression to run.
|
||||
|
||||
@@ -72,6 +73,7 @@ def display_panel(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
f"{dependent}_{regression_type}_regression",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
return model
|
||||
@@ -83,6 +85,7 @@ def display_dwat(
|
||||
dependent_variable: pd.Series,
|
||||
plot: bool = True,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.axes]] = None,
|
||||
):
|
||||
"""Show Durbin-Watson autocorrelation tests
|
||||
@@ -134,6 +137,7 @@ def display_dwat(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
f"{dependent_variable.name}_dwat",
|
||||
autocorr,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -142,6 +146,7 @@ def display_bgod(
|
||||
model: statsmodels.regression.linear_model.RegressionResultsWrapper,
|
||||
lags: int = 3,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
):
|
||||
"""Show Breusch-Godfrey autocorrelation test
|
||||
|
||||
@@ -173,7 +178,13 @@ def display_bgod(
|
||||
f"The result {round(p_value, 2)} indicates no existence of autocorrelation."
|
||||
)
|
||||
|
||||
export_data(export, os.path.dirname(os.path.abspath(__file__)), "results_bgod", df)
|
||||
export_data(
|
||||
export,
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"results_bgod",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
console.print()
|
||||
|
||||
@@ -182,6 +193,7 @@ def display_bgod(
|
||||
def display_bpag(
|
||||
model: statsmodels.regression.linear_model.RegressionResultsWrapper,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
):
|
||||
"""Show Breusch-Pagan heteroscedasticity test
|
||||
|
||||
@@ -211,6 +223,12 @@ def display_bpag(
|
||||
f"The result {round(p_value, 2)} indicates no existence of heteroscedasticity."
|
||||
)
|
||||
|
||||
export_data(export, os.path.dirname(os.path.abspath(__file__)), "results_bpag", df)
|
||||
export_data(
|
||||
export,
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"results_bpag",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
console.print()
|
||||
|
||||
@@ -28,6 +28,7 @@ logger = logging.getLogger(__name__)
|
||||
def realtime_performance_sector(
|
||||
raw: bool = False,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""Display Real-Time Performance sector. [Source: AlphaVantage]
|
||||
@@ -81,6 +82,7 @@ def realtime_performance_sector(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"rtps",
|
||||
df_rtp,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -91,6 +93,7 @@ def display_real_gdp(
|
||||
start_year: int = 2010,
|
||||
raw: bool = False,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""Display US GDP from AlphaVantage
|
||||
@@ -135,6 +138,7 @@ def display_real_gdp(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"gdp",
|
||||
gdp,
|
||||
sheet_name,
|
||||
)
|
||||
if raw:
|
||||
print_rich_table(
|
||||
@@ -148,6 +152,7 @@ def display_gdp_capita(
|
||||
start_year: int = 2010,
|
||||
raw: bool = False,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""Display US GDP per Capita from AlphaVantage
|
||||
@@ -188,6 +193,7 @@ def display_gdp_capita(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"gdpc",
|
||||
gdp,
|
||||
sheet_name,
|
||||
)
|
||||
if raw:
|
||||
print_rich_table(
|
||||
@@ -204,6 +210,7 @@ def display_inflation(
|
||||
start_year: int = 2010,
|
||||
raw: bool = False,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""Display US Inflation from AlphaVantage
|
||||
@@ -243,6 +250,7 @@ def display_inflation(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"inf",
|
||||
inf,
|
||||
sheet_name,
|
||||
)
|
||||
if raw:
|
||||
print_rich_table(
|
||||
@@ -260,6 +268,7 @@ def display_cpi(
|
||||
start_year: int = 2010,
|
||||
raw: bool = False,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""Display US consumer price index (CPI) from AlphaVantage
|
||||
@@ -304,6 +313,7 @@ def display_cpi(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"cpi",
|
||||
cpi,
|
||||
sheet_name,
|
||||
)
|
||||
if raw:
|
||||
print_rich_table(
|
||||
@@ -319,6 +329,7 @@ def display_treasury_yield(
|
||||
start_date: str = "2010-01-01",
|
||||
raw: bool = False,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""Display historical treasury yield for given maturity
|
||||
@@ -363,6 +374,7 @@ def display_treasury_yield(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"tyld",
|
||||
yld,
|
||||
sheet_name,
|
||||
)
|
||||
if raw:
|
||||
print_rich_table(
|
||||
@@ -379,6 +391,7 @@ def display_unemployment(
|
||||
start_year: int = 2010,
|
||||
raw: bool = False,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""Display US unemployment AlphaVantage
|
||||
@@ -420,6 +433,7 @@ def display_unemployment(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"unemp",
|
||||
un,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
if raw:
|
||||
|
||||
@@ -25,7 +25,7 @@ def format_large_numbers(num: float) -> str:
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_debt(export: str = "", limit: int = 20):
|
||||
def display_debt(export: str = "", sheet_name: str = None, limit: int = 20):
|
||||
"""Displays external debt for given countries [Source: Wikipedia]
|
||||
|
||||
Parameters
|
||||
@@ -48,5 +48,9 @@ def display_debt(export: str = "", limit: int = 20):
|
||||
)
|
||||
if export:
|
||||
export_data(
|
||||
export, os.path.dirname(os.path.abspath(__file__)), "cdebt", debt_df
|
||||
export,
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"cdebt",
|
||||
debt_df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -32,6 +32,7 @@ def show_macro_data(
|
||||
raw: bool = False,
|
||||
external_axes: Optional[List[plt.axes]] = None,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
):
|
||||
"""Show the received macro data about a company [Source: EconDB]
|
||||
|
||||
@@ -133,6 +134,7 @@ def show_macro_data(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"macro_data",
|
||||
df_rounded,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
theme.style_primary_axis(ax)
|
||||
@@ -151,6 +153,7 @@ def show_treasuries(
|
||||
raw: bool = False,
|
||||
external_axes: Optional[List[plt.axes]] = None,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
):
|
||||
"""Display U.S. Treasury rates [Source: EconDB]
|
||||
|
||||
@@ -228,6 +231,7 @@ def show_treasuries(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"treasuries_data",
|
||||
treasury_data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -312,22 +312,37 @@ class EconomyController(BaseController):
|
||||
if not ns_parser.type:
|
||||
wsj_view.display_overview(
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
elif ns_parser.type == "indices":
|
||||
wsj_view.display_indices(
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
if ns_parser.type == "usbonds":
|
||||
wsj_view.display_usbonds(
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
if ns_parser.type == "glbonds":
|
||||
wsj_view.display_glbonds(
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
if ns_parser.type == "currencies":
|
||||
wsj_view.display_currencies(
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -384,6 +399,9 @@ class EconomyController(BaseController):
|
||||
sortby=ns_parser.sortby,
|
||||
ascend=ns_parser.reverse,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
else:
|
||||
console.print(
|
||||
@@ -394,6 +412,9 @@ class EconomyController(BaseController):
|
||||
console.print("[red]Commodity flag valid with Finviz only.[/red]")
|
||||
wsj_view.display_futures(
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -479,6 +500,9 @@ class EconomyController(BaseController):
|
||||
country_codes=ns_parser.countries,
|
||||
raw=ns_parser.raw,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -626,6 +650,9 @@ class EconomyController(BaseController):
|
||||
symbol=ns_parser.currency,
|
||||
raw=ns_parser.raw,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
self.update_runtime_choices()
|
||||
@@ -725,6 +752,9 @@ class EconomyController(BaseController):
|
||||
limit=ns_parser.limit,
|
||||
raw=ns_parser.raw,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
get_data=True,
|
||||
)
|
||||
|
||||
@@ -878,6 +908,9 @@ class EconomyController(BaseController):
|
||||
column=ns_parser.column,
|
||||
raw=ns_parser.raw,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
returns=ns_parser.returns,
|
||||
)
|
||||
|
||||
@@ -1005,6 +1038,9 @@ class EconomyController(BaseController):
|
||||
end_date=ns_parser.end_date,
|
||||
raw=ns_parser.raw,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
self.update_runtime_choices()
|
||||
@@ -1041,6 +1077,9 @@ class EconomyController(BaseController):
|
||||
date=ns_parser.date.strftime("%Y-%m-%d") if ns_parser.date else "",
|
||||
raw=ns_parser.raw,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
# TODO: Add `Investing` to sources again when `investpy` is fixed
|
||||
@@ -1137,6 +1176,9 @@ class EconomyController(BaseController):
|
||||
end_date=end_date,
|
||||
limit=ns_parser.limit,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -1334,6 +1376,9 @@ class EconomyController(BaseController):
|
||||
dataset_yaxis_1=dataset_yaxis1,
|
||||
dataset_yaxis_2=dataset_yaxis2,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -1359,6 +1404,9 @@ class EconomyController(BaseController):
|
||||
alphavantage_view.realtime_performance_sector(
|
||||
raw=ns_parser.raw,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -1419,6 +1467,9 @@ class EconomyController(BaseController):
|
||||
sortby=ns_parser.sortby,
|
||||
ascend=ns_parser.reverse,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -1477,6 +1528,9 @@ class EconomyController(BaseController):
|
||||
sortby=ns_parser.sortby,
|
||||
ascend=ns_parser.reverse,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -1494,7 +1548,13 @@ class EconomyController(BaseController):
|
||||
parser, other_args, export_allowed=EXPORT_ONLY_RAW_DATA_ALLOWED, limit=20
|
||||
)
|
||||
if ns_parser:
|
||||
commodity_view.display_debt(export=ns_parser.export, limit=ns_parser.limit)
|
||||
commodity_view.display_debt(
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
limit=ns_parser.limit,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def call_spectrum(self, other_args: List[str]):
|
||||
|
||||
@@ -12,7 +12,9 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@check_api_key(["API_FINNHUB_KEY"])
|
||||
def economy_calendar_events(country: str, limit: int, impact: str, export: str):
|
||||
def economy_calendar_events(
|
||||
country: str, limit: int, impact: str, export: str = "", sheet_name: str = None
|
||||
):
|
||||
"""Output economy calendar impact events. [Source: Finnhub]
|
||||
|
||||
Parameters
|
||||
@@ -82,4 +84,5 @@ def economy_calendar_events(country: str, limit: int, impact: str, export: str):
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"events",
|
||||
df_econ_calendar,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -33,6 +33,7 @@ def display_valuation(
|
||||
sortby: str = "Name",
|
||||
ascend: bool = True,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
):
|
||||
"""Display group (sectors, industry or country) valuation data. [Source: Finviz]
|
||||
|
||||
@@ -64,6 +65,7 @@ def display_valuation(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"valuation",
|
||||
df_group,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -73,6 +75,7 @@ def display_performance(
|
||||
sortby: str = "Name",
|
||||
ascend: bool = True,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
):
|
||||
"""View group (sectors, industry or country) performance data. [Source: Finviz]
|
||||
|
||||
@@ -104,17 +107,20 @@ def display_performance(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"performance",
|
||||
df_group,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_spectrum(group: str = "sector", export: str = ""):
|
||||
def display_spectrum(group: str = "sector", export: str = "", sheet_name: str = None):
|
||||
"""Display finviz spectrum in system viewer [Source: Finviz]
|
||||
|
||||
Parameters
|
||||
----------
|
||||
group: str
|
||||
Group by category. Available groups can be accessed through get_groups().
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Format to export data
|
||||
"""
|
||||
@@ -127,6 +133,7 @@ def display_spectrum(group: str = "sector", export: str = ""):
|
||||
export,
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"spectrum",
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
img.show()
|
||||
@@ -138,6 +145,7 @@ def display_future(
|
||||
sortby: str = "ticker",
|
||||
ascend: bool = False,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
):
|
||||
"""Display table of a particular future type. [Source: Finviz]
|
||||
|
||||
@@ -166,4 +174,5 @@ def display_future(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
future_type.lower(),
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -28,6 +28,8 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
register_matplotlib_converters()
|
||||
|
||||
# pylint: disable=too-many-arguments
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def format_units(num: int) -> str:
|
||||
@@ -81,6 +83,7 @@ def display_fred_series(
|
||||
get_data: bool = False,
|
||||
raw: bool = False,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""Display (multiple) series from https://fred.stlouisfed.org. [Source: FRED]
|
||||
@@ -160,6 +163,7 @@ def display_fred_series(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"fred",
|
||||
data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
if get_data:
|
||||
@@ -189,6 +193,7 @@ def display_yield_curve(
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
raw: bool = False,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
):
|
||||
"""Display yield curve based on US Treasury rates for a specified date.
|
||||
|
||||
@@ -236,4 +241,5 @@ def display_yield_curve(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"ycrv",
|
||||
rates,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -45,6 +45,7 @@ def display_spread_matrix(
|
||||
raw: bool = False,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
):
|
||||
"""Display spread matrix. [Source: Investing.com]
|
||||
|
||||
@@ -198,7 +199,13 @@ def display_spread_matrix(
|
||||
if not external_axes:
|
||||
theme.visualize_output()
|
||||
|
||||
export_data(export, os.path.dirname(os.path.abspath(__file__)), "spread", df)
|
||||
export_data(
|
||||
export,
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"spread",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -207,6 +214,7 @@ def display_yieldcurve(
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
raw: bool = False,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
):
|
||||
"""Display yield curve for specified country. [Source: Investing.com]
|
||||
|
||||
@@ -285,6 +293,7 @@ def display_yieldcurve(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"ycrv",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -297,6 +306,7 @@ def display_economic_calendar(
|
||||
end_date: str = "",
|
||||
limit=100,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
):
|
||||
"""Display economic calendar. [Source: Investing.com]
|
||||
|
||||
@@ -336,4 +346,5 @@ def display_economic_calendar(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"events",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -30,6 +30,7 @@ def display_economic_calendar(
|
||||
end_date: str,
|
||||
limit: int = 10,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
) -> None:
|
||||
"""Display economic calendar for specified country between start and end dates
|
||||
|
||||
@@ -56,7 +57,13 @@ def display_economic_calendar(
|
||||
headers=df.columns,
|
||||
)
|
||||
console.print()
|
||||
export_data(export, os.path.dirname(os.path.abspath(__file__)), "events", df)
|
||||
export_data(
|
||||
export,
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"events",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -65,6 +72,7 @@ def display_big_mac_index(
|
||||
country_codes: List[str] = None,
|
||||
raw: bool = False,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""Display Big Mac Index for given countries
|
||||
@@ -107,7 +115,11 @@ def display_big_mac_index(
|
||||
)
|
||||
|
||||
export_data(
|
||||
export, os.path.dirname(os.path.abspath(__file__)), "bigmac", big_mac
|
||||
export,
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"bigmac",
|
||||
big_mac,
|
||||
sheet_name,
|
||||
)
|
||||
else:
|
||||
logger.error("Unable to get big mac data")
|
||||
|
||||
@@ -18,7 +18,8 @@ from openbb_terminal.helper_funcs import (
|
||||
def show_plot(
|
||||
dataset_yaxis_1,
|
||||
dataset_yaxis_2,
|
||||
export,
|
||||
export: str = "",
|
||||
sheet_name: Optional[str] = "",
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
):
|
||||
"""
|
||||
@@ -104,11 +105,16 @@ def show_plot(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"plot_macro_data",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
def show_options(
|
||||
datasets: Dict[Any, pd.DataFrame], raw: str = "", limit: int = 10, export: str = ""
|
||||
datasets: Dict[Any, pd.DataFrame],
|
||||
raw: str = "",
|
||||
limit: int = 10,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
):
|
||||
"""
|
||||
The ability to plot any data coming from EconDB, FRED or Yahoo Finance.
|
||||
@@ -146,6 +152,7 @@ def show_options(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"dataset",
|
||||
df,
|
||||
sheet_name,
|
||||
)
|
||||
else:
|
||||
options = {
|
||||
|
||||
@@ -279,6 +279,9 @@ class QaController(StockBaseController):
|
||||
sortby=ns_parser.sortby,
|
||||
ascend=ns_parser.reverse,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -297,7 +300,11 @@ class QaController(StockBaseController):
|
||||
)
|
||||
if ns_parser:
|
||||
qa_view.display_summary(
|
||||
data=self.current_source_dataframe, export=ns_parser.export
|
||||
data=self.current_source_dataframe,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -386,6 +393,9 @@ class QaController(StockBaseController):
|
||||
data=self.current_source_dataframe,
|
||||
target=self.current_id,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -447,6 +457,9 @@ class QaController(StockBaseController):
|
||||
target=self.current_id,
|
||||
multiplicative=ns_parser.multiplicative,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -544,6 +557,9 @@ class QaController(StockBaseController):
|
||||
target=self.current_id,
|
||||
window=ns_parser.n_window,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -575,6 +591,9 @@ class QaController(StockBaseController):
|
||||
target=self.current_id,
|
||||
window=ns_parser.n_window,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -624,6 +643,9 @@ class QaController(StockBaseController):
|
||||
window=ns_parser.n_window,
|
||||
quantile=ns_parser.f_quantile,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -661,6 +683,9 @@ class QaController(StockBaseController):
|
||||
target=self.current_id,
|
||||
window=ns_parser.n_window,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -698,6 +723,9 @@ class QaController(StockBaseController):
|
||||
target=self.current_id,
|
||||
window=ns_parser.n_window,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -719,6 +747,9 @@ class QaController(StockBaseController):
|
||||
data=self.current_source_dataframe,
|
||||
target=self.current_id,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -777,4 +808,7 @@ class QaController(StockBaseController):
|
||||
fuller_reg=ns_parser.fuller_reg,
|
||||
kpss_reg=ns_parser.kpss_reg,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@@ -13,7 +13,7 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_overview(export: str = ""):
|
||||
def display_overview(export: str = "", sheet_name: str = None):
|
||||
"""Market overview with daily change. [Source: Wall St. Journal]
|
||||
|
||||
Parameters
|
||||
@@ -38,11 +38,12 @@ def display_overview(export: str = ""):
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"overview",
|
||||
df_data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_indices(export: str = ""):
|
||||
def display_indices(export: str = "", sheet_name: str = None):
|
||||
"""US indices. [Source: Wall St. Journal]
|
||||
|
||||
Parameters
|
||||
@@ -64,11 +65,12 @@ def display_indices(export: str = ""):
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"indices",
|
||||
df_data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_futures(export: str = ""):
|
||||
def display_futures(export: str = "", sheet_name: str = None):
|
||||
"""Futures/Commodities. [Source: Wall St. Journal]
|
||||
|
||||
Parameters
|
||||
@@ -93,11 +95,12 @@ def display_futures(export: str = ""):
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"futures",
|
||||
df_data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_usbonds(export: str = ""):
|
||||
def display_usbonds(export: str = "", sheet_name: str = None):
|
||||
"""US bonds. [Source: Wall St. Journal]
|
||||
|
||||
Parameters
|
||||
@@ -119,11 +122,12 @@ def display_usbonds(export: str = ""):
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"usbonds",
|
||||
df_data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_glbonds(export: str = ""):
|
||||
def display_glbonds(export: str = "", sheet_name: str = None):
|
||||
"""Global bonds. [Source: Wall St. Journal]
|
||||
|
||||
Parameters
|
||||
@@ -145,11 +149,12 @@ def display_glbonds(export: str = ""):
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"glbonds",
|
||||
df_data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_currencies(export: str = ""):
|
||||
def display_currencies(export: str = "", sheet_name: str = None):
|
||||
"""Display currencies. [Source: Wall St. Journal]
|
||||
|
||||
Parameters
|
||||
@@ -171,4 +176,5 @@ def display_currencies(export: str = ""):
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"currencies",
|
||||
df_data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -37,6 +37,7 @@ def show_indices(
|
||||
raw: bool = False,
|
||||
external_axes: Optional[List[plt.axes]] = None,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
):
|
||||
"""Load (and show) the selected indices over time [Source: Yahoo Finance]
|
||||
Parameters
|
||||
@@ -127,6 +128,7 @@ def show_indices(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"index_data",
|
||||
indices_data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
return indices_data
|
||||
|
||||
@@ -62,7 +62,14 @@ class DiscoveryController(BaseController):
|
||||
parser, other_args, export_allowed=EXPORT_ONLY_RAW_DATA_ALLOWED, limit=10
|
||||
)
|
||||
if ns_parser:
|
||||
wsj_view.show_top_mover("gainers", ns_parser.limit, ns_parser.export)
|
||||
wsj_view.show_top_mover(
|
||||
"gainers",
|
||||
ns_parser.limit,
|
||||
ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def call_decliners(self, other_args):
|
||||
@@ -81,7 +88,14 @@ class DiscoveryController(BaseController):
|
||||
limit=10,
|
||||
)
|
||||
if ns_parser:
|
||||
wsj_view.show_top_mover("decliners", ns_parser.limit, ns_parser.export)
|
||||
wsj_view.show_top_mover(
|
||||
"decliners",
|
||||
ns_parser.limit,
|
||||
ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def call_active(self, other_args):
|
||||
@@ -100,4 +114,11 @@ class DiscoveryController(BaseController):
|
||||
limit=10,
|
||||
)
|
||||
if ns_parser:
|
||||
wsj_view.show_top_mover("active", ns_parser.limit, ns_parser.export)
|
||||
wsj_view.show_top_mover(
|
||||
"active",
|
||||
ns_parser.limit,
|
||||
ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@@ -13,7 +13,12 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def show_top_mover(sort_type: str = "gainers", limit: int = 10, export: str = ""):
|
||||
def show_top_mover(
|
||||
sort_type: str = "gainers",
|
||||
limit: int = 10,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
):
|
||||
"""
|
||||
Show top ETF movers from wsj.com
|
||||
|
||||
@@ -23,6 +28,8 @@ def show_top_mover(sort_type: str = "gainers", limit: int = 10, export: str = ""
|
||||
What to show. Either Gainers, Decliners or Activity
|
||||
limit: int
|
||||
Number of etfs to show
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Format to export data
|
||||
"""
|
||||
@@ -43,4 +50,5 @@ def show_top_mover(sort_type: str = "gainers", limit: int = 10, export: str = ""
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
sort_type,
|
||||
data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
@@ -178,12 +178,18 @@ class ETFController(BaseController):
|
||||
name=name_to_search,
|
||||
limit=ns_parser.limit,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
elif ns_parser.source == "StockAnalysis":
|
||||
stockanalysis_view.display_etf_by_name(
|
||||
name=name_to_search,
|
||||
limit=ns_parser.limit,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
else:
|
||||
console.print("Wrong source choice!\n")
|
||||
@@ -193,6 +199,9 @@ class ETFController(BaseController):
|
||||
description=description_to_search,
|
||||
limit=ns_parser.limit,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -307,7 +316,11 @@ class ETFController(BaseController):
|
||||
|
||||
if ns_parser:
|
||||
stockanalysis_view.view_overview(
|
||||
symbol=self.etf_name, export=ns_parser.export
|
||||
symbol=self.etf_name,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -339,6 +352,9 @@ class ETFController(BaseController):
|
||||
symbol=self.etf_name,
|
||||
limit=ns_parser.limit,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
console.print()
|
||||
else:
|
||||
@@ -535,6 +551,7 @@ class ETFController(BaseController):
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
f"{self.etf_name}",
|
||||
self.etf_data,
|
||||
ns_parser.sheet_name,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -634,6 +651,9 @@ class ETFController(BaseController):
|
||||
raw=ns_parser.raw,
|
||||
min_pct_to_display=ns_parser.min,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -723,4 +743,10 @@ class ETFController(BaseController):
|
||||
)
|
||||
if ns_parser:
|
||||
etf_list = ns_parser.names.upper().split(",")
|
||||
stockanalysis_view.view_comparisons(etf_list, export=ns_parser.export)
|
||||
stockanalysis_view.view_comparisons(
|
||||
etf_list,
|
||||
export=ns_parser.export,
|
||||
sheet_name=" ".join(ns_parser.sheet_name)
|
||||
if ns_parser.sheet_name
|
||||
else None,
|
||||
)
|
||||
|
||||
@@ -19,6 +19,7 @@ def display_etf_by_name(
|
||||
name: str,
|
||||
limit: int = 10,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
):
|
||||
"""Display a selection of ETFs based on name filtered by total assets. [Source: Finance Database]
|
||||
|
||||
@@ -28,6 +29,8 @@ def display_etf_by_name(
|
||||
Search by name to find ETFs matching the criteria.
|
||||
limit: int
|
||||
Limit of ETFs to display
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Type of format to export data
|
||||
"""
|
||||
@@ -50,7 +53,11 @@ def display_etf_by_name(
|
||||
)
|
||||
|
||||
export_data(
|
||||
export, os.path.dirname(os.path.abspath(__file__)), "ln_fd", table_data_sorted
|
||||
export,
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"ln_fd",
|
||||
table_data_sorted,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@@ -59,6 +66,7 @@ def display_etf_by_description(
|
||||
description: str,
|
||||
limit: int = 10,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
):
|
||||
"""Display a selection of ETFs based on description filtered by total assets.
|
||||
[Source: Finance Database]
|
||||
@@ -69,6 +77,8 @@ def display_etf_by_description(
|
||||
Search by description to find ETFs matching the criteria.
|
||||
limit: int
|
||||
Limit of ETFs to display
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Type of format to export data
|
||||
"""
|
||||
@@ -90,7 +100,13 @@ def display_etf_by_description(
|
||||
title="ETFs by Total Assets",
|
||||
)
|
||||
|
||||
export_data(export, os.path.dirname(os.path.abspath(__file__)), "ld", data)
|
||||
export_data(
|
||||
export,
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"ld",
|
||||
data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
@@ -98,6 +114,7 @@ def display_etf_by_category(
|
||||
category: str,
|
||||
limit: int = 10,
|
||||
export: str = "",
|
||||
sheet_name: str = None,
|
||||
):
|
||||
"""Display a selection of ETFs based on a category filtered by total assets.
|
||||
[Source: Finance Database]
|
||||
@@ -108,6 +125,8 @@ def display_etf_by_category(
|
||||
Search by description to find ETFs matching the criteria.
|
||||
limit: int
|
||||
Limit of ETFs to display
|
||||
sheet_name: str
|
||||
Optionally specify the name of the sheet the data is exported to.
|
||||
export: str
|
||||
Type of format to export data
|
||||
"""
|
||||
@@ -134,4 +153,5 @@ def display_etf_by_category(
|
||||
os.path.join(os.path.dirname(os.path.abspath(__file__)), "screener"),
|
||||
"sbc",
|
||||
data,
|
||||
sheet_name,
|
||||
)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user