mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-10-27 04:31:13 +00:00
decorated functions (#1282)
* decorated functions and removed assertion tests that are now caught by decorator logs * modified functions with @property * fixed bc of coingecko * fixed outedated tests
This commit is contained in:
2
.pre-commit-config.yaml
vendored
2
.pre-commit-config.yaml
vendored
@@ -10,7 +10,7 @@ repos:
|
||||
- id: check-merge-conflict
|
||||
- id: detect-private-key
|
||||
- repo: https://github.com/psf/black
|
||||
rev: 21.11b1
|
||||
rev: 22.1.0
|
||||
hooks:
|
||||
- id: black
|
||||
- repo: https://github.com/pycqa/flake8
|
||||
|
||||
@@ -1,10 +1,15 @@
|
||||
"""Covid Model"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
import warnings
|
||||
import pandas as pd
|
||||
import numpy as np
|
||||
|
||||
import numpy as np
|
||||
import pandas as pd
|
||||
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
global_cases_time_series = (
|
||||
"https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_"
|
||||
@@ -16,6 +21,7 @@ global_deaths_time_series = (
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_global_cases(country: str) -> pd.DataFrame:
|
||||
"""Get historical cases for given country
|
||||
|
||||
@@ -44,6 +50,7 @@ def get_global_cases(country: str) -> pd.DataFrame:
|
||||
return cases
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_global_deaths(country: str) -> pd.DataFrame:
|
||||
"""Get historical deaths for given country
|
||||
|
||||
@@ -72,6 +79,7 @@ def get_global_deaths(country: str) -> pd.DataFrame:
|
||||
return deaths
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_case_slopes(days_back: int = 30, threshold: int = 10000) -> pd.DataFrame:
|
||||
"""Load cases and find slope over period
|
||||
|
||||
|
||||
@@ -1,23 +1,28 @@
|
||||
"""Covid View"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
import os
|
||||
|
||||
import matplotlib.dates as mdates
|
||||
import matplotlib.pyplot as plt
|
||||
import pandas as pd
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
import gamestonk_terminal.feature_flags as gtff
|
||||
from gamestonk_terminal.alternative.covid import covid_model
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import (
|
||||
plot_autoscale,
|
||||
export_data,
|
||||
plot_autoscale,
|
||||
print_rich_table,
|
||||
)
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_covid_ov(
|
||||
country, raw: bool = False, limit: int = 10, export: str = ""
|
||||
) -> None:
|
||||
@@ -82,6 +87,7 @@ def display_covid_ov(
|
||||
export_data(export, os.path.dirname(os.path.abspath(__file__)), "ov", ov)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_covid_stat(
|
||||
country, stat: str = "cases", raw: bool = False, limit: int = 10, export: str = ""
|
||||
) -> None:
|
||||
@@ -150,6 +156,7 @@ def display_covid_stat(
|
||||
export_data(export, os.path.dirname(os.path.abspath(__file__)), stat, data)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_country_slopes(
|
||||
days_back: int = 30,
|
||||
limit: int = 10,
|
||||
|
||||
@@ -1,10 +1,17 @@
|
||||
"""FinBrain Model"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
|
||||
import pandas as pd
|
||||
import requests
|
||||
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_sentiment(ticker: str) -> pd.DataFrame:
|
||||
"""Gets Sentiment analysis provided by FinBrain's API [Source: finbrain]
|
||||
|
||||
|
||||
@@ -1,32 +1,39 @@
|
||||
"""FinBrain View Module"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
import os
|
||||
from matplotlib import pyplot as plt
|
||||
|
||||
import matplotlib.dates as mdates
|
||||
import pandas as pd
|
||||
from pandas.plotting import register_matplotlib_converters
|
||||
import numpy as np
|
||||
from gamestonk_terminal.helper_funcs import (
|
||||
plot_autoscale,
|
||||
export_data,
|
||||
print_rich_table,
|
||||
)
|
||||
import pandas as pd
|
||||
from matplotlib import pyplot as plt
|
||||
from pandas.plotting import register_matplotlib_converters
|
||||
|
||||
from gamestonk_terminal import feature_flags as gtff
|
||||
from gamestonk_terminal.common.behavioural_analysis import finbrain_model
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
from gamestonk_terminal import feature_flags as gtff
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import (
|
||||
export_data,
|
||||
plot_autoscale,
|
||||
print_rich_table,
|
||||
)
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
register_matplotlib_converters()
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def sentiment_coloring(val: float, last_val: float) -> str:
|
||||
if float(val) > last_val:
|
||||
return f"[green]{val}[/green]"
|
||||
return f"[red]{val}[/red]"
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def plot_sentiment(sentiment: pd.DataFrame, ticker: str) -> None:
|
||||
"""Plot Sentiment analysis provided by FinBrain's API
|
||||
|
||||
@@ -83,6 +90,7 @@ def plot_sentiment(sentiment: pd.DataFrame, ticker: str) -> None:
|
||||
plt.show()
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_sentiment_analysis(ticker: str, export: str = ""):
|
||||
"""Sentiment analysis from FinBrain
|
||||
|
||||
|
||||
@@ -1,11 +1,18 @@
|
||||
"""Finnhub Model"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
from typing import Dict
|
||||
|
||||
import requests
|
||||
|
||||
from gamestonk_terminal import config_terminal as cfg
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_sentiment_stats(ticker: str) -> Dict:
|
||||
"""Get sentiment stats [Source: finnhub]
|
||||
|
||||
|
||||
@@ -1,15 +1,20 @@
|
||||
"""Finnhub View"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
import os
|
||||
|
||||
import pandas as pd
|
||||
|
||||
from gamestonk_terminal.helper_funcs import export_data
|
||||
from gamestonk_terminal.common.behavioural_analysis import finnhub_model
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import export_data
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_sentiment_stats(ticker: str, export: str = ""):
|
||||
"""
|
||||
Sentiment stats which displays buzz, news score, articles last week, articles weekly average,
|
||||
|
||||
@@ -1,10 +1,17 @@
|
||||
"""Google Model"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
|
||||
import pandas as pd
|
||||
from pytrends.request import TrendReq
|
||||
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_mentions(ticker: str) -> pd.DataFrame:
|
||||
"""Get interest over time from google api [Source: google]
|
||||
|
||||
@@ -23,6 +30,7 @@ def get_mentions(ticker: str) -> pd.DataFrame:
|
||||
return pytrend.interest_over_time()
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_regions(ticker: str) -> pd.DataFrame:
|
||||
"""Get interest by region from google api [Source: google]
|
||||
|
||||
@@ -41,6 +49,7 @@ def get_regions(ticker: str) -> pd.DataFrame:
|
||||
return pytrend.interest_by_region()
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_queries(ticker: str) -> pd.DataFrame:
|
||||
"""Get related queries from google api [Source: google]
|
||||
|
||||
@@ -59,6 +68,7 @@ def get_queries(ticker: str) -> pd.DataFrame:
|
||||
return pytrend.related_queries()
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_rise(ticker: str) -> pd.DataFrame:
|
||||
"""Get top rising related queries with this stock's query [Source: google]
|
||||
|
||||
|
||||
@@ -1,21 +1,27 @@
|
||||
"""Google View"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
import os
|
||||
from datetime import datetime
|
||||
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
from gamestonk_terminal import config_plot as cfp
|
||||
from gamestonk_terminal import feature_flags as gtff
|
||||
from gamestonk_terminal.common.behavioural_analysis import google_model
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import (
|
||||
plot_autoscale,
|
||||
export_data,
|
||||
plot_autoscale,
|
||||
print_rich_table,
|
||||
)
|
||||
from gamestonk_terminal.common.behavioural_analysis import google_model
|
||||
from gamestonk_terminal import config_plot as cfp, feature_flags as gtff
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_mentions(ticker: str, start: datetime, export: str = ""):
|
||||
"""Plot weekly bars of stock's interest over time. other users watchlist. [Source: Google]
|
||||
|
||||
@@ -64,6 +70,7 @@ def display_mentions(ticker: str, start: datetime, export: str = ""):
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_regions(ticker: str, num: int = 5, export: str = ""):
|
||||
"""Plot bars of regions based on stock's interest. [Source: Google]
|
||||
|
||||
@@ -98,6 +105,7 @@ def display_regions(ticker: str, num: int = 5, export: str = ""):
|
||||
export_data(export, os.path.dirname(os.path.abspath(__file__)), "regions", df)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_queries(ticker: str, num: int = 5, export: str = ""):
|
||||
"""Print top related queries with this stock's query. [Source: Google]
|
||||
|
||||
@@ -126,6 +134,7 @@ def display_queries(ticker: str, num: int = 5, export: str = ""):
|
||||
export_data(export, os.path.dirname(os.path.abspath(__file__)), "queries", df)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_rise(ticker: str, num: int, export: str = ""):
|
||||
"""Print top rising related queries with this stock's query. [Source: Google]
|
||||
|
||||
|
||||
@@ -1,17 +1,23 @@
|
||||
"""Reddit Model"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
from typing import List, Dict, Tuple
|
||||
import logging
|
||||
from datetime import datetime, timedelta
|
||||
import pandas as pd
|
||||
from prawcore.exceptions import ResponseException
|
||||
from requests import HTTPError
|
||||
from psaw import PushshiftAPI
|
||||
import praw
|
||||
from typing import Dict, List, Tuple
|
||||
|
||||
import finviz
|
||||
import pandas as pd
|
||||
import praw
|
||||
from prawcore.exceptions import ResponseException
|
||||
from psaw import PushshiftAPI
|
||||
from requests import HTTPError
|
||||
|
||||
from gamestonk_terminal import config_terminal as cfg
|
||||
from gamestonk_terminal.rich_config import console
|
||||
from gamestonk_terminal.common.behavioural_analysis.reddit_helpers import find_tickers
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
l_sub_reddits = [
|
||||
"Superstonk",
|
||||
@@ -27,6 +33,7 @@ l_sub_reddits = [
|
||||
# pylint:disable=inconsistent-return-statements
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_watchlists(
|
||||
n_to_get: int,
|
||||
) -> Tuple[List[praw.models.reddit.submission.Submission], Dict, int]:
|
||||
@@ -95,6 +102,7 @@ def get_watchlists(
|
||||
return subs, d_watchlist_tickers, n_flair_posts_found
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_popular_tickers(
|
||||
n_top: int, posts_to_look_at: int, subreddits: str = ""
|
||||
) -> pd.DataFrame:
|
||||
@@ -229,6 +237,7 @@ def get_popular_tickers(
|
||||
return popular_tickers_df
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_spac_community(
|
||||
limit: int, popular: bool
|
||||
) -> Tuple[List[praw.models.reddit.submission.Submission], Dict]:
|
||||
@@ -298,6 +307,7 @@ def get_spac_community(
|
||||
return subs, d_watchlist_tickers
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_spac(
|
||||
limit: int = 5,
|
||||
) -> Tuple[List[praw.models.reddit.submission.Submission], Dict, int]:
|
||||
@@ -374,6 +384,7 @@ def get_spac(
|
||||
return subs, d_watchlist_tickers, n_flair_posts_found
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_wsb_community(
|
||||
limit: int = 10, new: bool = False
|
||||
) -> List[praw.models.reddit.submission.Submission]:
|
||||
@@ -415,6 +426,7 @@ def get_wsb_community(
|
||||
return subs
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_due_dilligence(
|
||||
ticker: str, limit: int = 5, n_days: int = 3, show_all_flairs: bool = False
|
||||
) -> List[praw.models.reddit.submission.Submission]:
|
||||
|
||||
@@ -1,20 +1,25 @@
|
||||
"""Reddit View"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
import os
|
||||
import warnings
|
||||
from datetime import datetime
|
||||
from typing import Dict
|
||||
|
||||
import finviz
|
||||
import praw
|
||||
import pandas as pd
|
||||
import praw
|
||||
|
||||
from gamestonk_terminal.common.behavioural_analysis import reddit_model
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import export_data, print_rich_table
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def print_and_record_reddit_post(
|
||||
submissions_dict: Dict, submission: praw.models.reddit.submission.Submission
|
||||
):
|
||||
@@ -68,6 +73,7 @@ def print_and_record_reddit_post(
|
||||
console.print("\n")
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_watchlist(num: int):
|
||||
"""Print other users watchlist. [Source: Reddit]
|
||||
|
||||
@@ -105,6 +111,7 @@ def display_watchlist(num: int):
|
||||
console.print("")
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_popular_tickers(
|
||||
n_top: int = 10, posts_to_look_at: int = 50, subreddits: str = "", export: str = ""
|
||||
):
|
||||
@@ -143,6 +150,7 @@ def display_popular_tickers(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_spac_community(limit: int = 10, popular: bool = False):
|
||||
"""Look at tickers mentioned in r/SPACs [Source: Reddit]
|
||||
|
||||
@@ -183,6 +191,7 @@ def display_spac_community(limit: int = 10, popular: bool = False):
|
||||
console.print("")
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_spac(limit: int = 5):
|
||||
"""Look at posts containing 'spac' in top communities
|
||||
|
||||
@@ -220,6 +229,7 @@ def display_spac(limit: int = 5):
|
||||
console.print("")
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_wsb_community(limit: int = 10, new: bool = False):
|
||||
"""Show WSB posts
|
||||
|
||||
@@ -236,6 +246,7 @@ def display_wsb_community(limit: int = 10, new: bool = False):
|
||||
print_and_record_reddit_post({}, sub)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_due_diligence(
|
||||
ticker: str, limit: int = 10, n_days: int = 3, show_all_flairs: bool = False
|
||||
):
|
||||
|
||||
@@ -3,12 +3,16 @@ __docformat__ = "numpy"
|
||||
|
||||
from typing import Union, Dict
|
||||
from datetime import datetime, timedelta
|
||||
import requests
|
||||
import logging
|
||||
import pandas as pd
|
||||
|
||||
import requests
|
||||
from gamestonk_terminal import config_terminal as cfg
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_historical(ticker: str, start: str, end: str, number: int) -> pd.DataFrame:
|
||||
"""Get hour-level sentiment data for the chosen ticker
|
||||
|
||||
|
||||
@@ -1,19 +1,25 @@
|
||||
"""SentimentInvestor View"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
import os
|
||||
from datetime import datetime
|
||||
import matplotlib.dates as mdates
|
||||
from matplotlib import pyplot as plt
|
||||
import pandas as pd
|
||||
|
||||
from gamestonk_terminal.common.behavioural_analysis import sentimentinvestor_model
|
||||
from gamestonk_terminal.helper_funcs import export_data, print_rich_table
|
||||
from gamestonk_terminal import feature_flags as gtff
|
||||
from gamestonk_terminal.common.behavioural_analysis import sentimentinvestor_model
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import export_data, print_rich_table
|
||||
|
||||
# pylint: disable=E1101
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_historical(
|
||||
ticker: str,
|
||||
start: str,
|
||||
|
||||
@@ -1,12 +1,18 @@
|
||||
"""Stocktwits Model"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
from typing import Tuple, List, Dict
|
||||
import logging
|
||||
from typing import Dict, List, Tuple
|
||||
|
||||
import pandas as pd
|
||||
import requests
|
||||
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_bullbear(ticker: str) -> Tuple[int, int, int, int]:
|
||||
"""Gets bullbear sentiment for ticker [Source: stocktwits]
|
||||
|
||||
@@ -44,6 +50,7 @@ def get_bullbear(ticker: str) -> Tuple[int, int, int, int]:
|
||||
return 0, 0, 0, 0
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_messages(ticker: str, limit: int = 30) -> List[str]:
|
||||
"""Get last messages for a given ticker [Source: stocktwits]
|
||||
|
||||
@@ -71,6 +78,7 @@ def get_messages(ticker: str, limit: int = 30) -> List[str]:
|
||||
return messages
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_trending() -> pd.DataFrame:
|
||||
"""Get trending tickers from stocktwits [Source: stocktwits]
|
||||
|
||||
@@ -95,6 +103,7 @@ def get_trending() -> pd.DataFrame:
|
||||
return pd.DataFrame()
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_stalker(user: str, limit: int = 30) -> List[Dict]:
|
||||
"""Gets messages from given user [Source: stocktwits]
|
||||
|
||||
|
||||
@@ -1,13 +1,19 @@
|
||||
"""Stocktwits View"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
|
||||
import pandas as pd
|
||||
|
||||
from gamestonk_terminal.common.behavioural_analysis import stocktwits_model
|
||||
from gamestonk_terminal.rich_config import console
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import print_rich_table
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_bullbear(ticker: str):
|
||||
"""
|
||||
Print bullbear sentiment based on last 30 messages on the board.
|
||||
@@ -29,6 +35,7 @@ def display_bullbear(ticker: str):
|
||||
console.print("")
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_messages(ticker: str, limit: int = 30):
|
||||
"""Print up to 30 of the last messages on the board. [Source: Stocktwits]
|
||||
|
||||
@@ -49,6 +56,7 @@ def display_messages(ticker: str, limit: int = 30):
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_trending():
|
||||
"""Show trensing stocks on stocktwits"""
|
||||
df_trending = stocktwits_model.get_trending()
|
||||
@@ -61,6 +69,7 @@ def display_trending():
|
||||
console.print("")
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_stalker(user: str, limit: int = 10):
|
||||
"""Show last posts for given user
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
"""Twitter Model"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
from typing import Optional
|
||||
|
||||
import pandas as pd
|
||||
@@ -8,12 +9,16 @@ import requests
|
||||
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
|
||||
|
||||
from gamestonk_terminal import config_terminal as cfg
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import clean_tweet, get_data
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
analyzer = SentimentIntensityAnalyzer()
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def load_analyze_tweets(
|
||||
ticker: str,
|
||||
count: int,
|
||||
|
||||
@@ -1,23 +1,26 @@
|
||||
"""Twitter view"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
import os
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
import pandas as pd
|
||||
|
||||
from dateutil import parser as dparse
|
||||
|
||||
import gamestonk_terminal.config_plot as cfg_plot
|
||||
from gamestonk_terminal import feature_flags as gtff
|
||||
from gamestonk_terminal.common.behavioural_analysis import twitter_model
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import export_data, plot_autoscale
|
||||
import gamestonk_terminal.config_plot as cfg_plot
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_inference(ticker: str, num: int, export: str = ""):
|
||||
"""Infer sentiment from past n tweets
|
||||
|
||||
@@ -65,6 +68,7 @@ def display_inference(ticker: str, num: int, export: str = ""):
|
||||
export_data(export, os.path.dirname(os.path.abspath(__file__)), "infer", df_tweets)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_sentiment(ticker: str, n_tweets: int, n_days_past: int, export: str = ""):
|
||||
"""Plot sentiments from ticker
|
||||
|
||||
|
||||
@@ -1,12 +1,18 @@
|
||||
""" News View """
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
|
||||
import requests
|
||||
|
||||
from gamestonk_terminal import config_terminal as cfg
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def news(
|
||||
term: str,
|
||||
num: int,
|
||||
|
||||
@@ -1,14 +1,21 @@
|
||||
"""Arima Prediction Model"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
from typing import Union, List, Tuple, Any
|
||||
import logging
|
||||
from typing import Any, List, Tuple, Union
|
||||
|
||||
import pandas as pd
|
||||
import pmdarima
|
||||
from statsmodels.tsa.arima.model import ARIMA
|
||||
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
ICS = ["aic", "aicc", "bic", "hqic", "oob"]
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_arima_model(
|
||||
values: Union[pd.Series, pd.DataFrame],
|
||||
arima_order: str,
|
||||
|
||||
@@ -3,6 +3,7 @@ __docformat__ = "numpy"
|
||||
|
||||
|
||||
import datetime
|
||||
import logging
|
||||
import os
|
||||
from typing import Union
|
||||
|
||||
@@ -17,6 +18,7 @@ from gamestonk_terminal.common.prediction_techniques.pred_helper import (
|
||||
print_pretty_prediction,
|
||||
)
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import (
|
||||
export_data,
|
||||
get_next_stock_market_days,
|
||||
@@ -25,12 +27,14 @@ from gamestonk_terminal.helper_funcs import (
|
||||
)
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
register_matplotlib_converters()
|
||||
|
||||
# pylint:disable=too-many-arguments
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_arima(
|
||||
dataset: str,
|
||||
values: Union[pd.DataFrame, pd.Series],
|
||||
|
||||
@@ -1,16 +1,22 @@
|
||||
"""ETS Prediction Model"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
from typing import Union
|
||||
|
||||
import numpy as np
|
||||
import pandas as pd
|
||||
from statsmodels.tsa.holtwinters import ExponentialSmoothing
|
||||
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
TRENDS = ["N", "A", "Ad"]
|
||||
SEASONS = ["N", "A", "M"]
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_exponential_smoothing_model(
|
||||
data: Union[pd.Series, np.ndarray],
|
||||
trend: str = "N",
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import datetime
|
||||
import logging
|
||||
import os
|
||||
import warnings
|
||||
from typing import Union
|
||||
|
||||
import matplotlib.pyplot as plt
|
||||
import matplotlib.dates as mdates
|
||||
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
import pandas as pd
|
||||
from pandas.plotting import register_matplotlib_converters
|
||||
@@ -21,6 +21,7 @@ from gamestonk_terminal.common.prediction_techniques.pred_helper import (
|
||||
print_pretty_prediction,
|
||||
)
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import (
|
||||
export_data,
|
||||
get_next_stock_market_days,
|
||||
@@ -29,12 +30,15 @@ from gamestonk_terminal.helper_funcs import (
|
||||
)
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
register_matplotlib_converters()
|
||||
|
||||
warnings.filterwarnings("ignore")
|
||||
# pylint:disable=too-many-arguments
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_exponential_smoothing(
|
||||
ticker: str,
|
||||
values: Union[pd.DataFrame, pd.Series],
|
||||
|
||||
@@ -1,18 +1,24 @@
|
||||
"""KNN Prediction Model"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
from typing import Tuple, Any, Union
|
||||
import pandas as pd
|
||||
import logging
|
||||
from typing import Any, Tuple, Union
|
||||
|
||||
import numpy as np
|
||||
import pandas as pd
|
||||
from sklearn import neighbors
|
||||
|
||||
from gamestonk_terminal.helper_funcs import get_next_stock_market_days
|
||||
from gamestonk_terminal.common.prediction_techniques.pred_helper import (
|
||||
prepare_scale_train_valid_test,
|
||||
)
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import get_next_stock_market_days
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_knn_model_data(
|
||||
data: Union[pd.Series, pd.DataFrame],
|
||||
n_input_days: int,
|
||||
|
||||
@@ -1,23 +1,28 @@
|
||||
""" KNN Prediction View"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
from typing import Union
|
||||
|
||||
import pandas as pd
|
||||
from pandas.plotting import register_matplotlib_converters
|
||||
|
||||
from gamestonk_terminal.common.prediction_techniques.pred_helper import (
|
||||
print_pretty_prediction,
|
||||
plot_data_predictions,
|
||||
)
|
||||
from gamestonk_terminal.common.prediction_techniques import knn_model
|
||||
from gamestonk_terminal.common.prediction_techniques.pred_helper import (
|
||||
plot_data_predictions,
|
||||
print_pretty_prediction,
|
||||
)
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
register_matplotlib_converters()
|
||||
|
||||
# pylint:disable=too-many-arguments
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_k_nearest_neighbors(
|
||||
ticker: str,
|
||||
data: Union[pd.DataFrame, pd.Series],
|
||||
|
||||
@@ -1,14 +1,21 @@
|
||||
"""Monte Carlo Model"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
from typing import Union
|
||||
import pandas as pd
|
||||
|
||||
import numpy as np
|
||||
import pandas as pd
|
||||
from scipy.stats import norm
|
||||
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
DISTRIBUTIONS = ["normal", "lognormal"]
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_mc_brownian(
|
||||
data: Union[pd.Series, np.ndarray], n_future: int, n_sims: int, use_log=True
|
||||
) -> np.ndarray:
|
||||
|
||||
@@ -1,26 +1,31 @@
|
||||
"""Monte Carlo View"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
from typing import Union
|
||||
import logging
|
||||
import os
|
||||
from typing import Union
|
||||
|
||||
import pandas as pd
|
||||
import numpy as np
|
||||
import seaborn as sns
|
||||
import matplotlib.pyplot as plt
|
||||
import matplotlib.dates as mdates
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
import pandas as pd
|
||||
import seaborn as sns
|
||||
|
||||
from gamestonk_terminal.common.prediction_techniques import mc_model
|
||||
from gamestonk_terminal.helper_funcs import (
|
||||
plot_autoscale,
|
||||
get_next_stock_market_days,
|
||||
export_data,
|
||||
)
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
from gamestonk_terminal import feature_flags as gtff
|
||||
from gamestonk_terminal.common.prediction_techniques import mc_model
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import (
|
||||
export_data,
|
||||
get_next_stock_market_days,
|
||||
plot_autoscale,
|
||||
)
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_mc_forecast(
|
||||
data: Union[pd.Series, np.ndarray],
|
||||
n_future: int,
|
||||
|
||||
@@ -1,39 +1,44 @@
|
||||
"""Neural Network Prediction Models"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
from typing import List, Any, Union, Tuple
|
||||
import pandas as pd
|
||||
import logging
|
||||
from typing import Any, List, Tuple, Union
|
||||
|
||||
import numpy as np
|
||||
import pandas as pd
|
||||
from tensorflow.keras.callbacks import EarlyStopping
|
||||
from tensorflow.keras.models import Sequential
|
||||
from tensorflow.keras.layers import (
|
||||
LSTM,
|
||||
SimpleRNN,
|
||||
AvgPool1D,
|
||||
Conv1D,
|
||||
Dense,
|
||||
Dropout,
|
||||
Conv1D,
|
||||
MaxPool1D,
|
||||
AvgPool1D,
|
||||
Flatten,
|
||||
MaxPool1D,
|
||||
SimpleRNN,
|
||||
)
|
||||
from tensorflow.keras.models import Sequential
|
||||
from tensorflow.keras.optimizers import (
|
||||
SGD,
|
||||
Adadelta,
|
||||
Adagrad,
|
||||
Adam,
|
||||
Adamax,
|
||||
Adagrad,
|
||||
Adadelta,
|
||||
Ftrl,
|
||||
Nadam,
|
||||
RMSprop,
|
||||
SGD,
|
||||
)
|
||||
from gamestonk_terminal.helper_funcs import get_next_stock_market_days
|
||||
from gamestonk_terminal.common.prediction_techniques.pred_helper import (
|
||||
prepare_scale_train_valid_test,
|
||||
forecast,
|
||||
)
|
||||
|
||||
from gamestonk_terminal import config_neural_network_models as cfg_nn_models
|
||||
from gamestonk_terminal.common.prediction_techniques.pred_helper import (
|
||||
forecast,
|
||||
prepare_scale_train_valid_test,
|
||||
)
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import get_next_stock_market_days
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
optimizers = {
|
||||
"Adam": Adam,
|
||||
@@ -56,6 +61,7 @@ else:
|
||||
# pylint:disable=too-many-arguments
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def build_neural_network_model(
|
||||
Layers: List[Any], n_inputs: int, n_days: int
|
||||
) -> Sequential:
|
||||
@@ -136,6 +142,7 @@ def build_neural_network_model(
|
||||
return model
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def mlp_model(
|
||||
data: Union[pd.Series, pd.DataFrame],
|
||||
n_input: int,
|
||||
@@ -256,6 +263,7 @@ def mlp_model(
|
||||
return forecast_data_df, preds, y_valid, y_dates_valid, scaler
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def rnn_model(
|
||||
data: Union[pd.Series, pd.DataFrame],
|
||||
n_input: int,
|
||||
@@ -369,6 +377,7 @@ def rnn_model(
|
||||
return forecast_data_df, preds, y_valid, y_dates_valid, scaler
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def lstm_model(
|
||||
data: Union[pd.Series, pd.DataFrame],
|
||||
n_input: int,
|
||||
@@ -482,6 +491,7 @@ def lstm_model(
|
||||
return forecast_data_df, preds, y_valid, y_dates_valid, scaler
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def conv1d_model(
|
||||
data: Union[pd.Series, pd.DataFrame],
|
||||
n_input: int,
|
||||
|
||||
@@ -1,20 +1,27 @@
|
||||
""" Neural Networks View"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
from typing import Union
|
||||
|
||||
import numpy as np
|
||||
import pandas as pd
|
||||
|
||||
from gamestonk_terminal.common.prediction_techniques import neural_networks_model
|
||||
from gamestonk_terminal.common.prediction_techniques.pred_helper import (
|
||||
plot_data_predictions,
|
||||
print_pretty_prediction,
|
||||
)
|
||||
from gamestonk_terminal.common.prediction_techniques import neural_networks_model
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
# pylint:disable=too-many-arguments
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_mlp(
|
||||
dataset: str,
|
||||
data: Union[pd.Series, pd.DataFrame],
|
||||
@@ -97,6 +104,7 @@ def display_mlp(
|
||||
console.print("")
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_rnn(
|
||||
dataset: str,
|
||||
data: Union[pd.Series, pd.DataFrame],
|
||||
@@ -178,6 +186,7 @@ def display_rnn(
|
||||
console.print("")
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_lstm(
|
||||
dataset: str,
|
||||
data: Union[pd.Series, pd.DataFrame],
|
||||
@@ -259,6 +268,7 @@ def display_lstm(
|
||||
console.print("")
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_conv1d(
|
||||
dataset: str,
|
||||
data: Union[pd.Series, pd.DataFrame],
|
||||
|
||||
@@ -1,16 +1,22 @@
|
||||
"""Regression Model"""
|
||||
__docformat__ = "numpy"
|
||||
from typing import Tuple, List, Any, Union
|
||||
import pandas as pd
|
||||
import logging
|
||||
from typing import Any, List, Tuple, Union
|
||||
|
||||
import numpy as np
|
||||
from sklearn import linear_model
|
||||
from sklearn import pipeline
|
||||
from sklearn import preprocessing
|
||||
import pandas as pd
|
||||
from sklearn import linear_model, pipeline, preprocessing
|
||||
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
# The tsxv dependence was removed so this fails. Taking from didiers source
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def split_train(
|
||||
sequence: np.ndarray, numInputs: int, numOutputs: int, numJumps: int
|
||||
) -> Tuple[List, List]:
|
||||
@@ -64,6 +70,7 @@ def split_train(
|
||||
return X, y
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_regression_model(
|
||||
values: Union[pd.Series, pd.DataFrame],
|
||||
poly_order: int,
|
||||
|
||||
@@ -1,35 +1,39 @@
|
||||
""" Regression View"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
from typing import Union
|
||||
import logging
|
||||
import os
|
||||
from typing import Union
|
||||
|
||||
import matplotlib.pyplot as plt
|
||||
import pandas as pd
|
||||
from pandas.plotting import register_matplotlib_converters
|
||||
|
||||
from gamestonk_terminal.helper_funcs import (
|
||||
patch_pandas_text_adjustment,
|
||||
get_next_stock_market_days,
|
||||
plot_autoscale,
|
||||
export_data,
|
||||
)
|
||||
|
||||
from gamestonk_terminal import feature_flags as gtff
|
||||
from gamestonk_terminal.common.prediction_techniques import regression_model
|
||||
from gamestonk_terminal.common.prediction_techniques.pred_helper import (
|
||||
print_pretty_prediction,
|
||||
price_prediction_backtesting_color,
|
||||
print_prediction_kpis,
|
||||
print_pretty_prediction,
|
||||
)
|
||||
|
||||
from gamestonk_terminal.common.prediction_techniques import regression_model
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
from gamestonk_terminal import feature_flags as gtff
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import (
|
||||
export_data,
|
||||
get_next_stock_market_days,
|
||||
patch_pandas_text_adjustment,
|
||||
plot_autoscale,
|
||||
)
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
register_matplotlib_converters()
|
||||
|
||||
# pylint:disable=too-many-arguments
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_regression(
|
||||
dataset: str,
|
||||
values: Union[pd.Series, pd.DataFrame],
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
"""Quantitative Analysis Model"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
import warnings
|
||||
from typing import Any, Tuple
|
||||
|
||||
@@ -10,10 +11,16 @@ from scipy import stats
|
||||
from statsmodels.tsa.seasonal import seasonal_decompose
|
||||
from statsmodels.tsa.stattools import adfuller, kpss
|
||||
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
|
||||
# TODO : Since these are common/ they should be independent of 'stock' info.
|
||||
# df_stock should be replaced with a generic df and a column variable
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_summary(df: pd.DataFrame) -> pd.DataFrame:
|
||||
"""Print summary statistics
|
||||
|
||||
@@ -29,6 +36,7 @@ def get_summary(df: pd.DataFrame) -> pd.DataFrame:
|
||||
return df_stats
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_seasonal_decomposition(
|
||||
df: pd.DataFrame, multiplicative: bool
|
||||
) -> Tuple[Any, pd.DataFrame, pd.DataFrame]:
|
||||
@@ -65,6 +73,7 @@ def get_seasonal_decomposition(
|
||||
return result, pd.DataFrame(cycle), pd.DataFrame(trend)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_normality(data: pd.DataFrame) -> pd.DataFrame:
|
||||
"""
|
||||
Look at the distribution of returns and generate statistics on the relation to the normal curve.
|
||||
@@ -118,6 +127,7 @@ def get_normality(data: pd.DataFrame) -> pd.DataFrame:
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_unitroot(df: pd.DataFrame, fuller_reg: str, kpss_reg: str) -> pd.DataFrame:
|
||||
"""Calculate test statistics for unit roots
|
||||
|
||||
|
||||
@@ -1,35 +1,38 @@
|
||||
"""Quantitative Analysis View"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
import os
|
||||
import warnings
|
||||
from typing import Any
|
||||
from datetime import datetime
|
||||
from typing import Any
|
||||
|
||||
import matplotlib.pyplot as plt
|
||||
import matplotlib.dates as mdates
|
||||
import matplotlib
|
||||
from matplotlib import gridspec
|
||||
|
||||
import matplotlib.dates as mdates
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
import pandas as pd
|
||||
import seaborn as sns
|
||||
import statsmodels.api as sm
|
||||
from detecta import detect_cusum
|
||||
from matplotlib import gridspec
|
||||
from pandas.plotting import register_matplotlib_converters
|
||||
from scipy import stats
|
||||
from statsmodels.graphics.gofplots import qqplot
|
||||
|
||||
from gamestonk_terminal.rich_config import console
|
||||
from gamestonk_terminal import feature_flags as gtff
|
||||
from gamestonk_terminal.common.quantitative_analysis import qa_model
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_classes import LineAnnotateDrawer
|
||||
from gamestonk_terminal.helper_funcs import (
|
||||
export_data,
|
||||
plot_autoscale,
|
||||
print_rich_table,
|
||||
)
|
||||
from gamestonk_terminal.helper_classes import LineAnnotateDrawer
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
register_matplotlib_converters()
|
||||
|
||||
@@ -37,6 +40,7 @@ register_matplotlib_converters()
|
||||
# df_stock should be replaced with a generic df and a column variable
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def color_red(val: Any) -> str:
|
||||
"""Adds red to dataframe value"""
|
||||
if val > 0.05:
|
||||
@@ -44,6 +48,7 @@ def color_red(val: Any) -> str:
|
||||
return round(val, 4)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_summary(df: pd.DataFrame, export: str):
|
||||
"""Show summary statistics
|
||||
|
||||
@@ -72,6 +77,7 @@ def display_summary(df: pd.DataFrame, export: str):
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_hist(
|
||||
name: str,
|
||||
df: pd.DataFrame,
|
||||
@@ -114,6 +120,7 @@ def display_hist(
|
||||
console.print("")
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_cdf(
|
||||
name: str,
|
||||
df: pd.DataFrame,
|
||||
@@ -194,6 +201,7 @@ def display_cdf(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_bw(
|
||||
name: str,
|
||||
df: pd.DataFrame,
|
||||
@@ -254,6 +262,7 @@ def display_bw(
|
||||
console.print("")
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_acf(name: str, df: pd.DataFrame, target: str, lags: int):
|
||||
"""Show Auto and Partial Auto Correlation of returns and change in returns
|
||||
|
||||
@@ -304,6 +313,7 @@ def display_acf(name: str, df: pd.DataFrame, target: str, lags: int):
|
||||
console.print("")
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_cusum(df: pd.DataFrame, target: str, threshold: float, drift: float):
|
||||
"""Cumulative sum algorithm (CUSUM) to detect abrupt changes in data
|
||||
|
||||
@@ -325,6 +335,7 @@ def display_cusum(df: pd.DataFrame, target: str, threshold: float, drift: float)
|
||||
console.print("")
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_seasonal(
|
||||
name: str,
|
||||
df: pd.DataFrame,
|
||||
@@ -409,6 +420,7 @@ def display_seasonal(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_normality(df: pd.DataFrame, target: str, export: str = ""):
|
||||
"""View normality statistics
|
||||
|
||||
@@ -443,6 +455,7 @@ def display_normality(df: pd.DataFrame, target: str, export: str = ""):
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_qqplot(name: str, df: pd.DataFrame, target: str):
|
||||
"""Show QQ plot for data against normal quantiles
|
||||
|
||||
@@ -472,6 +485,7 @@ def display_qqplot(name: str, df: pd.DataFrame, target: str):
|
||||
console.print("")
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_unitroot(
|
||||
df: pd.DataFrame, target: str, fuller_reg: str, kpss_reg: str, export: str = ""
|
||||
):
|
||||
@@ -508,6 +522,7 @@ def display_unitroot(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_raw(
|
||||
df: pd.DataFrame, sort: str = "", des: bool = False, num: int = 20, export: str = ""
|
||||
) -> None:
|
||||
@@ -551,6 +566,7 @@ def display_raw(
|
||||
console.print("")
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_line(
|
||||
data: pd.Series,
|
||||
title: str = "",
|
||||
|
||||
@@ -1,12 +1,18 @@
|
||||
"""Rolling Statistics"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
from typing import Tuple
|
||||
|
||||
import pandas as pd
|
||||
import pandas_ta as ta
|
||||
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_rolling_avg(df: pd.DataFrame, length: int) -> Tuple[pd.DataFrame, pd.DataFrame]:
|
||||
"""Return rolling mean and standard deviation
|
||||
|
||||
@@ -30,6 +36,7 @@ def get_rolling_avg(df: pd.DataFrame, length: int) -> Tuple[pd.DataFrame, pd.Dat
|
||||
return pd.DataFrame(rolling_mean), pd.DataFrame(rolling_std)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_spread(df: pd.DataFrame, length: int) -> Tuple[pd.DataFrame, pd.DataFrame]:
|
||||
"""Standard Deviation and Variance
|
||||
|
||||
@@ -57,6 +64,7 @@ def get_spread(df: pd.DataFrame, length: int) -> Tuple[pd.DataFrame, pd.DataFram
|
||||
return pd.DataFrame(df_sd), pd.DataFrame(df_var)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_quantile(
|
||||
df: pd.DataFrame, length: int, quantile_pct: float
|
||||
) -> Tuple[pd.DataFrame, pd.DataFrame]:
|
||||
@@ -88,6 +96,7 @@ def get_quantile(
|
||||
return pd.DataFrame(df_med), pd.DataFrame(df_quantile)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_skew(df: pd.DataFrame, length: int) -> pd.DataFrame:
|
||||
"""Skewness Indicator
|
||||
|
||||
@@ -107,6 +116,7 @@ def get_skew(df: pd.DataFrame, length: int) -> pd.DataFrame:
|
||||
return df_skew
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_kurtosis(df: pd.DataFrame, length: int) -> pd.DataFrame:
|
||||
"""Kurtosis Indicator
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
"""Rolling Statistics View"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
import os
|
||||
|
||||
import matplotlib.pyplot as plt
|
||||
@@ -10,12 +11,16 @@ from pandas.plotting import register_matplotlib_converters
|
||||
from gamestonk_terminal import feature_flags as gtff
|
||||
from gamestonk_terminal.common.quantitative_analysis import rolling_model
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import export_data, plot_autoscale
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
register_matplotlib_converters()
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_mean_std(
|
||||
name: str, df: pd.DataFrame, target: str, length: int, export: str = ""
|
||||
):
|
||||
@@ -86,6 +91,7 @@ def display_mean_std(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_spread(
|
||||
name: str, df: pd.DataFrame, target: str, length: int, export: str = ""
|
||||
):
|
||||
@@ -147,6 +153,7 @@ def display_spread(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_quantile(
|
||||
name: str,
|
||||
df: pd.DataFrame,
|
||||
@@ -203,6 +210,7 @@ def display_quantile(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_skew(
|
||||
name: str, df: pd.DataFrame, target: str, length: int, export: str = ""
|
||||
):
|
||||
@@ -256,6 +264,7 @@ def display_skew(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_kurtosis(
|
||||
name: str, df: pd.DataFrame, target: str, length: int, export: str = ""
|
||||
):
|
||||
|
||||
@@ -1,13 +1,18 @@
|
||||
"""Custom Indicator Models"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
from typing import Any, Tuple
|
||||
|
||||
import pandas as pd
|
||||
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def calculate_fib_levels(
|
||||
df_stock: pd.DataFrame,
|
||||
period: int = 120,
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
"""Custom TA indicators"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
import os
|
||||
from typing import Any
|
||||
|
||||
@@ -10,6 +11,7 @@ import pandas as pd
|
||||
from gamestonk_terminal import config_plot as cfp
|
||||
from gamestonk_terminal import feature_flags as gtff
|
||||
from gamestonk_terminal.common.technical_analysis import custom_indicators_model
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import (
|
||||
export_data,
|
||||
plot_autoscale,
|
||||
@@ -17,7 +19,10 @@ from gamestonk_terminal.helper_funcs import (
|
||||
)
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def fibonacci_retracement(
|
||||
df_stock: pd.DataFrame,
|
||||
period: int = 120,
|
||||
|
||||
@@ -1,10 +1,17 @@
|
||||
"""Momentum Technical Analysis"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
|
||||
import pandas as pd
|
||||
import pandas_ta as ta
|
||||
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def cci(
|
||||
high_vals: pd.Series,
|
||||
low_vals: pd.Series,
|
||||
@@ -43,6 +50,7 @@ def cci(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def macd(
|
||||
values: pd.DataFrame,
|
||||
n_fast: int = 12,
|
||||
@@ -71,6 +79,7 @@ def macd(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def rsi(values: pd.Series, length: int, scalar: float, drift: int) -> pd.DataFrame:
|
||||
"""Relative strength index
|
||||
|
||||
@@ -95,6 +104,7 @@ def rsi(values: pd.Series, length: int, scalar: float, drift: int) -> pd.DataFra
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def stoch(
|
||||
high_vals: pd.Series,
|
||||
low_vals: pd.Series,
|
||||
@@ -136,6 +146,7 @@ def stoch(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def fisher(high_vals: pd.Series, low_vals: pd.Series, length: int = 14) -> pd.DataFrame:
|
||||
"""Fisher Transform
|
||||
|
||||
@@ -156,6 +167,7 @@ def fisher(high_vals: pd.Series, low_vals: pd.Series, length: int = 14) -> pd.Da
|
||||
return pd.DataFrame(ta.fisher(high=high_vals, low=low_vals, length=length).dropna())
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def cg(values: pd.Series, length: int) -> pd.DataFrame:
|
||||
"""Center of gravity
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
"""Momentum View"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
import os
|
||||
|
||||
import matplotlib.pyplot as plt
|
||||
@@ -11,12 +12,16 @@ from pandas.plotting import register_matplotlib_converters
|
||||
from gamestonk_terminal import feature_flags as gtff
|
||||
from gamestonk_terminal.common.technical_analysis import momentum_model
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import export_data, plot_autoscale
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
register_matplotlib_converters()
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_cci(
|
||||
df: pd.DataFrame,
|
||||
length: int = 14,
|
||||
@@ -81,6 +86,7 @@ def display_cci(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_macd(
|
||||
values: pd.Series,
|
||||
n_fast: int = 12,
|
||||
@@ -147,6 +153,7 @@ def display_macd(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_rsi(
|
||||
prices: pd.Series,
|
||||
length: int = 14,
|
||||
@@ -212,6 +219,7 @@ def display_rsi(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_stoch(
|
||||
df_stock: pd.DataFrame,
|
||||
fastkperiod: int = 14,
|
||||
@@ -289,6 +297,7 @@ def display_stoch(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_fisher(
|
||||
df_stock: pd.DataFrame,
|
||||
length: int = 14,
|
||||
@@ -367,6 +376,7 @@ def display_fisher(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_cg(
|
||||
values: pd.Series,
|
||||
length: int = 14,
|
||||
|
||||
@@ -1,13 +1,20 @@
|
||||
"""Overlap Technical Analysis"""
|
||||
___docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
|
||||
import pandas as pd
|
||||
import pandas_ta as ta
|
||||
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
WINDOW_LENGTHS = [20, 50]
|
||||
WINDOW_LENGTHS2 = [10, 20]
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def ema(values: pd.DataFrame, length: int, offset: int) -> pd.DataFrame:
|
||||
"""Gets exponential moving average (EMA) for stock
|
||||
|
||||
@@ -28,6 +35,7 @@ def ema(values: pd.DataFrame, length: int, offset: int) -> pd.DataFrame:
|
||||
return pd.DataFrame(ta.ema(values, length=length, offset=offset)).dropna()
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def sma(values: pd.DataFrame, length: int, offset: int) -> pd.DataFrame:
|
||||
"""Gets simple moving average (EMA) for stock
|
||||
|
||||
@@ -48,6 +56,7 @@ def sma(values: pd.DataFrame, length: int, offset: int) -> pd.DataFrame:
|
||||
return pd.DataFrame(ta.sma(values, length=length, offset=offset)).dropna()
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def wma(values: pd.DataFrame, length: int, offset: int) -> pd.DataFrame:
|
||||
"""Gets weighted moving average (WMA) for stock
|
||||
|
||||
@@ -68,6 +77,7 @@ def wma(values: pd.DataFrame, length: int, offset: int) -> pd.DataFrame:
|
||||
return pd.DataFrame(ta.wma(values, length=length, offset=offset)).dropna()
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def hma(values: pd.DataFrame, length: int, offset: int) -> pd.DataFrame:
|
||||
"""Gets hull moving average (HMA) for stock
|
||||
|
||||
@@ -88,6 +98,7 @@ def hma(values: pd.DataFrame, length: int, offset: int) -> pd.DataFrame:
|
||||
return pd.DataFrame(ta.hma(values, length=length, offset=offset)).dropna()
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def zlma(values: pd.DataFrame, length: int, offset: int) -> pd.DataFrame:
|
||||
"""Gets zero-lagged exponential moving average (ZLEMA) for stock
|
||||
|
||||
@@ -108,6 +119,7 @@ def zlma(values: pd.DataFrame, length: int, offset: int) -> pd.DataFrame:
|
||||
return pd.DataFrame(ta.zlma(values, length=length, offset=offset)).dropna()
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def vwap(day_df: pd.DataFrame, offset: int) -> pd.DataFrame:
|
||||
"""Gets volume weighted average price (VWAP)
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
"""TA Overlap View"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
import os
|
||||
from typing import List
|
||||
|
||||
@@ -12,12 +13,16 @@ from pandas.plotting import register_matplotlib_converters
|
||||
import gamestonk_terminal.feature_flags as gtff
|
||||
from gamestonk_terminal.common.technical_analysis import overlap_model
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import export_data, plot_autoscale
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
register_matplotlib_converters()
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def view_ma(
|
||||
values: pd.Series,
|
||||
length: List[int] = None,
|
||||
@@ -98,6 +103,7 @@ def view_ma(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def view_vwap(
|
||||
s_ticker: str,
|
||||
df_stock: pd.DataFrame,
|
||||
|
||||
@@ -1,10 +1,17 @@
|
||||
"""Trend Indicators Technical Analysis Model"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
|
||||
import pandas as pd
|
||||
import pandas_ta as ta
|
||||
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def adx(
|
||||
high_values: pd.Series,
|
||||
low_values: pd.Series,
|
||||
@@ -47,6 +54,7 @@ def adx(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def aroon(
|
||||
high_values: pd.Series, low_values: pd.Series, length: int = 25, scalar: int = 100
|
||||
) -> pd.DataFrame:
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
"""Trend Indicators View"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
import os
|
||||
|
||||
import matplotlib.pyplot as plt
|
||||
@@ -10,12 +11,16 @@ from pandas.plotting import register_matplotlib_converters
|
||||
from gamestonk_terminal import feature_flags as gtff
|
||||
from gamestonk_terminal.common.technical_analysis import trend_indicators_model
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import export_data, plot_autoscale
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
register_matplotlib_converters()
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_adx(
|
||||
df_stock: pd.DataFrame,
|
||||
length: int = 14,
|
||||
@@ -93,6 +98,7 @@ def display_adx(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_aroon(
|
||||
df_stock: pd.DataFrame,
|
||||
length: int = 25,
|
||||
|
||||
@@ -1,12 +1,19 @@
|
||||
"""Volatility Technical Indicators"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
|
||||
import pandas as pd
|
||||
import pandas_ta as ta
|
||||
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
MAMODES = ["ema", "sma", "wma", "hma", "zlma"]
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def bbands(
|
||||
close_values: pd.Series, length: int = 15, n_std: float = 2, mamode: str = "ema"
|
||||
) -> pd.DataFrame:
|
||||
@@ -38,6 +45,7 @@ def bbands(
|
||||
).dropna()
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def donchian(
|
||||
high_prices: pd.Series,
|
||||
low_prices: pd.Series,
|
||||
@@ -72,6 +80,7 @@ def donchian(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def kc(
|
||||
high_prices: pd.Series,
|
||||
low_prices: pd.Series,
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
"""Volatility Technical Indicators View"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
import os
|
||||
|
||||
import matplotlib.pyplot as plt
|
||||
@@ -10,12 +11,16 @@ from pandas.plotting import register_matplotlib_converters
|
||||
from gamestonk_terminal import feature_flags as gtff
|
||||
from gamestonk_terminal.common.technical_analysis import volatility_model
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import export_data, plot_autoscale
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
register_matplotlib_converters()
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_bbands(
|
||||
df_stock: pd.DataFrame,
|
||||
length: int = 15,
|
||||
@@ -82,6 +87,7 @@ def display_bbands(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_donchian(
|
||||
df_stock: pd.DataFrame,
|
||||
upper_length: int = 20,
|
||||
@@ -149,6 +155,7 @@ def display_donchian(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def view_kc(
|
||||
df_stock: pd.DataFrame,
|
||||
length: int = 20,
|
||||
|
||||
@@ -1,10 +1,17 @@
|
||||
"""Volume Technical Analysis"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
|
||||
import pandas as pd
|
||||
import pandas_ta as ta
|
||||
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def ad(df_stock: pd.DataFrame, use_open: bool = False) -> pd.DataFrame:
|
||||
"""Calculate AD technical indicator
|
||||
|
||||
@@ -39,6 +46,7 @@ def ad(df_stock: pd.DataFrame, use_open: bool = False) -> pd.DataFrame:
|
||||
return pd.DataFrame(df_ta)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def adosc(
|
||||
df_stock: pd.DataFrame, use_open: bool = False, fast: int = 3, slow: int = 10
|
||||
) -> pd.DataFrame:
|
||||
@@ -78,6 +86,7 @@ def adosc(
|
||||
return pd.DataFrame(df_ta)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def obv(df_stock: pd.DataFrame) -> pd.DataFrame:
|
||||
"""On Balance Volume
|
||||
|
||||
|
||||
@@ -1,20 +1,26 @@
|
||||
"""Volume View"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
import os
|
||||
|
||||
import matplotlib.pyplot as plt
|
||||
import pandas as pd
|
||||
from pandas.plotting import register_matplotlib_converters
|
||||
|
||||
from gamestonk_terminal import feature_flags as gtff
|
||||
from gamestonk_terminal.common.technical_analysis import volume_model
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import export_data, plot_autoscale
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
register_matplotlib_converters()
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_ad(
|
||||
df_stock: pd.DataFrame,
|
||||
use_open: bool = False,
|
||||
@@ -95,6 +101,7 @@ def display_ad(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_adosc(
|
||||
df_stock: pd.DataFrame,
|
||||
fast: int = 3,
|
||||
@@ -180,6 +187,7 @@ def display_adosc(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_obv(df_stock: pd.DataFrame, s_ticker: str = "", export: str = ""):
|
||||
"""Plot OBV technical indicator
|
||||
|
||||
|
||||
@@ -1,10 +1,15 @@
|
||||
"""Coindix model"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
from typing import Optional
|
||||
|
||||
import requests
|
||||
import pandas as pd
|
||||
import requests
|
||||
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
VAULTS_FILTERS = ["name", "chain", "protocol", "apy", "tvl", "risk", "link"]
|
||||
CHAINS = [
|
||||
@@ -65,6 +70,7 @@ VAULT_KINDS = [
|
||||
]
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def _risk_mapper(risk_level: int) -> str:
|
||||
"""Helper methods
|
||||
Parameters
|
||||
@@ -81,6 +87,7 @@ def _risk_mapper(risk_level: int) -> str:
|
||||
return mappings.get(risk_level, "Non Eligible")
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def _prepare_params(**kwargs) -> dict:
|
||||
"""Helper method, which handles preparation of parameters for requests to coindix api.
|
||||
|
||||
@@ -103,6 +110,7 @@ def _prepare_params(**kwargs) -> dict:
|
||||
return {k: v.lower() for k, v in params.items()}
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_defi_vaults(
|
||||
chain: Optional[str] = None,
|
||||
protocol: Optional[str] = None,
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
"""Coindix view"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
import os
|
||||
from typing import Optional
|
||||
|
||||
from gamestonk_terminal.cryptocurrency.defi import coindix_model
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import (
|
||||
export_data,
|
||||
long_number_format,
|
||||
@@ -12,7 +14,10 @@ from gamestonk_terminal.helper_funcs import (
|
||||
)
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_defi_vaults(
|
||||
chain: Optional[str] = None,
|
||||
protocol: Optional[str] = None,
|
||||
|
||||
@@ -1,11 +1,18 @@
|
||||
"""DeFi Pulse model"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
|
||||
import pandas as pd
|
||||
import requests
|
||||
from bs4 import BeautifulSoup
|
||||
import pandas as pd
|
||||
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_defipulse_index() -> pd.DataFrame:
|
||||
"""Scrapes data from DeFi Pulse with all DeFi Pulse crypto protocols.
|
||||
[Source: https://defipulse.com/]
|
||||
|
||||
@@ -1,12 +1,18 @@
|
||||
"""DeFi Pulse view"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
import os
|
||||
|
||||
from gamestonk_terminal.cryptocurrency.defi import defipulse_model
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import export_data, print_rich_table
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_defipulse(top: int, sortby: str, descend: bool, export: str = "") -> None:
|
||||
"""Displays all DeFi Pulse crypto protocols.
|
||||
[Source: https://defipulse.com/]
|
||||
|
||||
@@ -1,12 +1,19 @@
|
||||
"""DeFi Rate model"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
|
||||
import pandas as pd
|
||||
import requests
|
||||
from bs4 import BeautifulSoup
|
||||
from bs4.element import Tag
|
||||
import pandas as pd
|
||||
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def _scrape_defirate(url: str, current: bool = True) -> Tag:
|
||||
"""Helper method that scrapes table object from defirate.com
|
||||
[Source: https://defirate.com/]
|
||||
@@ -36,6 +43,7 @@ def _scrape_defirate(url: str, current: bool = True) -> Tag:
|
||||
return table
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_funding_rates(current: bool = True) -> pd.DataFrame:
|
||||
"""Funding rates are transfer payments made between long and short positions on perpetual swap futures markets.
|
||||
They’re designed to keep contract prices consistent with the underlying asset.
|
||||
@@ -63,6 +71,7 @@ def get_funding_rates(current: bool = True) -> pd.DataFrame:
|
||||
return pd.DataFrame(columns=headers, data=fundings)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_lending_rates(current: bool = True) -> pd.DataFrame:
|
||||
"""Decentralized Finance lending – or DeFi lending for short – allows users to supply cryptocurrencies
|
||||
in exchange for earning an annualized return.
|
||||
@@ -92,6 +101,7 @@ def get_lending_rates(current: bool = True) -> pd.DataFrame:
|
||||
return pd.DataFrame(columns=headers, data=lendings)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_borrow_rates(current: bool = True) -> pd.DataFrame:
|
||||
"""One aspect of Decentralized Finance (DeFi) is the ability to take out a loan on top cryptocurrencies at any time
|
||||
in an entirely permissionless fashion.By using smart contracts, borrowers are able to lock collateral to protect
|
||||
|
||||
@@ -1,12 +1,18 @@
|
||||
"""DeFi Rate View"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
import os
|
||||
from gamestonk_terminal.helper_funcs import export_data, print_rich_table
|
||||
|
||||
from gamestonk_terminal.cryptocurrency.defi import defirate_model
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import export_data, print_rich_table
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_funding_rates(top: int, current: bool = True, export: str = "") -> None:
|
||||
"""Display Funding rates - transfer payments made between long and short positions on perpetual swap futures markets
|
||||
[Source: https://defirate.com/]
|
||||
@@ -40,6 +46,7 @@ def display_funding_rates(top: int, current: bool = True, export: str = "") -> N
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_lending_rates(top: int, current: bool = True, export: str = "") -> None:
|
||||
"""Displays top DeFi lendings. Decentralized Finance lending – allows users to supply cryptocurrencies
|
||||
in exchange for earning an annualized return
|
||||
@@ -75,6 +82,7 @@ def display_lending_rates(top: int, current: bool = True, export: str = "") -> N
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_borrow_rates(top: int, current: bool = True, export: str = "") -> None:
|
||||
"""Displays DeFi borrow rates. By using smart contracts, borrowers are able to lock
|
||||
collateral to protect against defaults while seamlessly adding to or closing their
|
||||
|
||||
@@ -2,12 +2,17 @@
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import datetime
|
||||
import requests
|
||||
import logging
|
||||
|
||||
import pandas as pd
|
||||
import requests
|
||||
|
||||
from gamestonk_terminal.cryptocurrency.dataframe_helpers import (
|
||||
very_long_number_formatter,
|
||||
)
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
UNI_URL = "https://api.thegraph.com/subgraphs/name/uniswap/uniswap-v2"
|
||||
|
||||
@@ -45,6 +50,7 @@ PAIRS_FILTERS = [
|
||||
# TODO: convert USD values to int. otherwise sort by these columns won't work
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def query_graph(url: str, query: str) -> dict:
|
||||
"""Helper methods for querying graphql api. [Source: https://thegraph.com/en/]
|
||||
|
||||
@@ -67,6 +73,7 @@ def query_graph(url: str, query: str) -> dict:
|
||||
return {}
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_uni_tokens(skip: int = 0, limit: int = 100) -> pd.DataFrame:
|
||||
"""Get list of tokens trade-able on Uniswap DEX. [Source: https://thegraph.com/en/]
|
||||
|
||||
@@ -103,6 +110,7 @@ def get_uni_tokens(skip: int = 0, limit: int = 100) -> pd.DataFrame:
|
||||
return pd.DataFrame(data["tokens"]).reset_index()
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_uniswap_stats() -> pd.DataFrame:
|
||||
"""Get base statistics about Uniswap DEX. [Source: https://thegraph.com/en/]
|
||||
|
||||
@@ -142,6 +150,7 @@ def get_uniswap_stats() -> pd.DataFrame:
|
||||
return df
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_uniswap_pool_recently_added(
|
||||
last_days: int = 14,
|
||||
min_volume: int = 100,
|
||||
@@ -230,6 +239,7 @@ def get_uniswap_pool_recently_added(
|
||||
]
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_uni_pools_by_volume() -> pd.DataFrame:
|
||||
"""Get uniswap pools by volume. [Source: https://thegraph.com/en/]
|
||||
|
||||
@@ -272,6 +282,7 @@ def get_uni_pools_by_volume() -> pd.DataFrame:
|
||||
]
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_last_uni_swaps(limit: int = 100) -> pd.DataFrame:
|
||||
"""Get the last 100 swaps done on Uniswap [Source: https://thegraph.com/en/]
|
||||
|
||||
|
||||
@@ -1,15 +1,21 @@
|
||||
"""The Graph view"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
import os
|
||||
from gamestonk_terminal.cryptocurrency.defi import graph_model
|
||||
from gamestonk_terminal.helper_funcs import export_data, print_rich_table
|
||||
|
||||
from gamestonk_terminal.cryptocurrency.dataframe_helpers import (
|
||||
very_long_number_formatter,
|
||||
)
|
||||
from gamestonk_terminal.cryptocurrency.defi import graph_model
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import export_data, print_rich_table
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_uni_tokens(
|
||||
skip: int = 0,
|
||||
limit: int = 20,
|
||||
@@ -59,6 +65,7 @@ def display_uni_tokens(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_uni_stats(export: str = "") -> None:
|
||||
"""Displays base statistics about Uniswap DEX. [Source: https://thegraph.com/en/]
|
||||
[Source: https://thegraph.com/en/]
|
||||
@@ -89,6 +96,7 @@ def display_uni_stats(export: str = "") -> None:
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_recently_added(
|
||||
top: int = 20,
|
||||
days: int = 7,
|
||||
@@ -152,6 +160,7 @@ def display_recently_added(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_uni_pools(
|
||||
top: int = 20, sortby: str = "volumeUSD", descend: bool = False, export: str = ""
|
||||
) -> None:
|
||||
@@ -189,6 +198,7 @@ def display_uni_pools(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_last_uni_swaps(
|
||||
top: int = 20, sortby: str = "timestamp", descend: bool = False, export: str = ""
|
||||
) -> None:
|
||||
|
||||
@@ -1,11 +1,17 @@
|
||||
"""Llama model"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
from datetime import datetime
|
||||
import logging
|
||||
import textwrap
|
||||
import requests
|
||||
import pandas as pd
|
||||
from datetime import datetime
|
||||
|
||||
import numpy as np
|
||||
import pandas as pd
|
||||
import requests
|
||||
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
API_URL = "https://api.llama.fi"
|
||||
|
||||
@@ -21,6 +27,7 @@ LLAMA_FILTERS = [
|
||||
]
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_defi_protocols() -> pd.DataFrame:
|
||||
"""Returns information about listed DeFi protocols, their current TVL and changes to it in the last hour/day/week.
|
||||
[Source: https://docs.llama.fi/api]
|
||||
@@ -62,6 +69,7 @@ def get_defi_protocols() -> pd.DataFrame:
|
||||
raise ValueError("Wrong response type\n") from e
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_defi_protocol(protocol: str) -> pd.DataFrame:
|
||||
"""Returns information about historical tvl of a defi protocol.
|
||||
[Source: https://docs.llama.fi/api]
|
||||
@@ -81,6 +89,7 @@ def get_defi_protocol(protocol: str) -> pd.DataFrame:
|
||||
return df
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_defi_tvl() -> pd.DataFrame:
|
||||
"""Returns historical values of the total sum of TVLs from all listed protocols.
|
||||
[Source: https://docs.llama.fi/api]
|
||||
|
||||
@@ -1,25 +1,33 @@
|
||||
"""Llama View"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
import os
|
||||
from matplotlib import ticker, dates as mdates
|
||||
|
||||
import matplotlib.pyplot as plt
|
||||
from matplotlib import dates as mdates
|
||||
from matplotlib import ticker
|
||||
|
||||
from gamestonk_terminal import feature_flags as gtff
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
from gamestonk_terminal.cryptocurrency.cryptocurrency_helpers import read_data_file
|
||||
from gamestonk_terminal.cryptocurrency.dataframe_helpers import (
|
||||
replace_underscores_in_column_names,
|
||||
)
|
||||
from gamestonk_terminal.cryptocurrency.defi import llama_model
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import (
|
||||
export_data,
|
||||
plot_autoscale,
|
||||
long_number_format,
|
||||
plot_autoscale,
|
||||
print_rich_table,
|
||||
)
|
||||
from gamestonk_terminal import feature_flags as gtff
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_grouped_defi_protocols(num: int = 50, export: str = "") -> None:
|
||||
"""Display top dApps (in terms of TVL) grouped by chain.
|
||||
[Source: https://docs.llama.fi/api]
|
||||
@@ -65,6 +73,7 @@ def display_grouped_defi_protocols(num: int = 50, export: str = "") -> None:
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_defi_protocols(
|
||||
top: int, sortby: str, descend: bool, description: bool, export: str = ""
|
||||
) -> None:
|
||||
@@ -128,6 +137,7 @@ def display_defi_protocols(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_historical_tvl(dapps: str = "", export: str = ""):
|
||||
"""Displays historical TVL of different dApps
|
||||
[Source: https://docs.llama.fi/api]
|
||||
@@ -179,6 +189,7 @@ def display_historical_tvl(dapps: str = "", export: str = ""):
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_defi_tvl(top: int, export: str = "") -> None:
|
||||
"""Displays historical values of the total sum of TVLs from all listed protocols.
|
||||
[Source: https://docs.llama.fi/api]
|
||||
|
||||
@@ -1,16 +1,22 @@
|
||||
"""Substack model"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import textwrap
|
||||
import concurrent.futures
|
||||
import logging
|
||||
import textwrap
|
||||
|
||||
import pandas as pd
|
||||
import requests
|
||||
from bs4 import BeautifulSoup
|
||||
from dateutil import parser
|
||||
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def scrape_substack(url: str) -> list:
|
||||
"""Helper method to scrape newsletters from substack.
|
||||
[Source: substack.com]
|
||||
@@ -42,6 +48,7 @@ def scrape_substack(url: str) -> list:
|
||||
return results
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_newsletters() -> pd.DataFrame:
|
||||
"""Scrape all substack newsletters from url list.
|
||||
[Source: substack.com]
|
||||
|
||||
@@ -2,12 +2,18 @@
|
||||
__docformat__ = "numpy"
|
||||
|
||||
|
||||
import logging
|
||||
import os
|
||||
|
||||
from gamestonk_terminal.cryptocurrency.defi import substack_model
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import export_data, print_rich_table
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_newsletters(top: int = 10, export: str = "") -> None:
|
||||
"""Display DeFi related substack newsletters.
|
||||
[Source: substack.com]
|
||||
|
||||
@@ -1,14 +1,21 @@
|
||||
"""Terra Engineer model"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import requests
|
||||
import logging
|
||||
|
||||
import pandas as pd
|
||||
import requests
|
||||
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
api_url = "https://terra.engineer/en"
|
||||
|
||||
ASSETS = ["ust", "luna", "sdt"]
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_history_asset_from_terra_address(
|
||||
asset: str = "ust", address: str = ""
|
||||
) -> pd.DataFrame:
|
||||
|
||||
@@ -1,19 +1,27 @@
|
||||
"""Terra Engineer View"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
import os
|
||||
|
||||
import matplotlib.pyplot as plt
|
||||
from matplotlib import ticker, dates as mdates
|
||||
from gamestonk_terminal.cryptocurrency.defi import terraengineer_model
|
||||
from gamestonk_terminal.helper_funcs import (
|
||||
export_data,
|
||||
plot_autoscale,
|
||||
long_number_format,
|
||||
)
|
||||
from matplotlib import dates as mdates
|
||||
from matplotlib import ticker
|
||||
|
||||
from gamestonk_terminal import feature_flags as gtff
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
from gamestonk_terminal.cryptocurrency.defi import terraengineer_model
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import (
|
||||
export_data,
|
||||
long_number_format,
|
||||
plot_autoscale,
|
||||
)
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_terra_asset_history(
|
||||
asset: str = "", address: str = "", export: str = ""
|
||||
) -> None:
|
||||
@@ -63,6 +71,7 @@ def display_terra_asset_history(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_anchor_yield_reserve(export: str = "") -> None:
|
||||
"""Displays the 30-day history of the Anchor Yield Reserve.
|
||||
[Source: https://docs.llama.fi/api]
|
||||
|
||||
@@ -1,16 +1,22 @@
|
||||
"""Terra Money FCD model"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
import textwrap
|
||||
from typing import Any, Tuple
|
||||
from datetime import datetime
|
||||
import requests
|
||||
from typing import Any, Tuple
|
||||
|
||||
import pandas as pd
|
||||
import requests
|
||||
|
||||
from gamestonk_terminal.cryptocurrency.dataframe_helpers import (
|
||||
denominate_number,
|
||||
prettify_column_names,
|
||||
replace_unicode,
|
||||
)
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
GOV_COLUMNS = [
|
||||
"submitTime",
|
||||
@@ -33,6 +39,7 @@ VALIDATORS_COLUMNS = [
|
||||
]
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def _make_request(endpoint: str) -> dict:
|
||||
"""Helper method handles terra fcd api requests. [Source: https://fcd.terra.dev/v1]
|
||||
|
||||
@@ -58,6 +65,7 @@ def _make_request(endpoint: str) -> dict:
|
||||
raise ValueError(f"Invalid Response: {response.text}") from e
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def _adjust_delegation_info(delegation: dict) -> dict:
|
||||
"""Helper method which removes redundant fields from delegation info dictionary,
|
||||
and denominate value fields. [Source: https://fcd.terra.dev/v1]
|
||||
@@ -84,6 +92,7 @@ def _adjust_delegation_info(delegation: dict) -> dict:
|
||||
return delegation_info
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_staking_account_info(address: str = "") -> Tuple[pd.DataFrame, str]:
|
||||
"""Get staking info for provided terra account [Source: https://fcd.terra.dev/swagger]
|
||||
|
||||
@@ -131,6 +140,7 @@ def get_staking_account_info(address: str = "") -> Tuple[pd.DataFrame, str]:
|
||||
return df, report
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_validators() -> pd.DataFrame:
|
||||
"""Get information about terra validators [Source: https://fcd.terra.dev/swagger]
|
||||
|
||||
@@ -162,6 +172,7 @@ def get_validators() -> pd.DataFrame:
|
||||
return pd.DataFrame(results).sort_values(by="votingPower")
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_proposals(status: str = "") -> pd.DataFrame:
|
||||
"""Get terra blockchain governance proposals list [Source: https://fcd.terra.dev/swagger]
|
||||
|
||||
@@ -217,6 +228,7 @@ def get_proposals(status: str = "") -> pd.DataFrame:
|
||||
return df
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_account_growth(cumulative: bool = True) -> pd.DataFrame:
|
||||
"""Get terra blockchain account growth history [Source: https://fcd.terra.dev/swagger]
|
||||
|
||||
@@ -239,6 +251,7 @@ def get_account_growth(cumulative: bool = True) -> pd.DataFrame:
|
||||
return df
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_staking_ratio_history():
|
||||
"""Get terra blockchain staking ratio history [Source: https://fcd.terra.dev/swagger]
|
||||
|
||||
@@ -255,6 +268,7 @@ def get_staking_ratio_history():
|
||||
return df[["date", "stakingRatio"]]
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_staking_returns_history():
|
||||
"""Get terra blockchain staking returns history [Source: https://fcd.terra.dev/v1]
|
||||
|
||||
|
||||
@@ -1,25 +1,33 @@
|
||||
"""Terra Money FCD view"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
import os
|
||||
|
||||
import matplotlib.pyplot as plt
|
||||
from matplotlib import ticker, dates as mdates
|
||||
from matplotlib import dates as mdates
|
||||
from matplotlib import ticker
|
||||
|
||||
from gamestonk_terminal import feature_flags as gtff
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
from gamestonk_terminal.cryptocurrency.dataframe_helpers import (
|
||||
prettify_column_names,
|
||||
very_long_number_formatter,
|
||||
)
|
||||
from gamestonk_terminal.cryptocurrency.defi import terramoney_fcd_model
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import (
|
||||
export_data,
|
||||
long_number_format,
|
||||
plot_autoscale,
|
||||
print_rich_table,
|
||||
)
|
||||
from gamestonk_terminal.cryptocurrency.dataframe_helpers import (
|
||||
prettify_column_names,
|
||||
very_long_number_formatter,
|
||||
)
|
||||
from gamestonk_terminal import feature_flags as gtff
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_account_staking_info(
|
||||
address: str = "", top: int = 10, export: str = ""
|
||||
) -> None:
|
||||
@@ -50,6 +58,7 @@ def display_account_staking_info(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_validators(
|
||||
top: int = 10, sortby: str = "votingPower", descend: bool = False, export: str = ""
|
||||
) -> None:
|
||||
@@ -94,6 +103,7 @@ def display_validators(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_gov_proposals(
|
||||
top: int = 10,
|
||||
status: str = "all",
|
||||
@@ -138,6 +148,7 @@ def display_gov_proposals(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_account_growth(
|
||||
kind: str = "total", cumulative: bool = False, top: int = 90, export: str = ""
|
||||
) -> None:
|
||||
@@ -198,6 +209,7 @@ def display_account_growth(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_staking_ratio_history(top: int = 90, export: str = "") -> None:
|
||||
"""Display terra blockchain staking ratio history [Source: https://fcd.terra.dev/v1]
|
||||
|
||||
@@ -239,6 +251,7 @@ def display_staking_ratio_history(top: int = 90, export: str = "") -> None:
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_staking_returns_history(top: int = 90, export: str = "") -> None:
|
||||
"""Display terra blockchain staking returns history [Source: https://fcd.terra.dev/swagger]
|
||||
|
||||
|
||||
@@ -1,13 +1,20 @@
|
||||
"""CoinMarketCap model"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
|
||||
import pandas as pd
|
||||
from coinmarketcapapi import CoinMarketCapAPI
|
||||
|
||||
import gamestonk_terminal.config_terminal as cfg
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
FILTERS = ["Symbol", "CMC_Rank", "LastPrice", "DayPctChange", "MarketCap"]
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_cmc_top_n() -> pd.DataFrame:
|
||||
"""Shows top n coins. [Source: CoinMarketCap]
|
||||
|
||||
|
||||
@@ -1,11 +1,16 @@
|
||||
"""CoinMarketCap view"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
import os
|
||||
|
||||
from gamestonk_terminal.cryptocurrency.discovery import coinmarketcap_model
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import export_data, print_rich_table
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
sort_map = {
|
||||
"Symbol": "Symbol",
|
||||
"CMC_Rank": "CMC_Rank",
|
||||
@@ -15,6 +20,7 @@ sort_map = {
|
||||
}
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_cmc_top_coins(
|
||||
top: int = 15,
|
||||
sortby: str = "CMC_Rank",
|
||||
|
||||
@@ -1,9 +1,15 @@
|
||||
"""CoinPaprika model"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
from typing import Optional, Any
|
||||
import logging
|
||||
from typing import Any, Optional
|
||||
|
||||
import pandas as pd
|
||||
|
||||
from gamestonk_terminal.cryptocurrency.coinpaprika_helpers import PaprikaSession
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
CATEGORIES = [
|
||||
"currencies",
|
||||
@@ -17,6 +23,7 @@ CATEGORIES = [
|
||||
FILTERS = ["category", "id", "name"]
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_search_results(
|
||||
query: str, category: Optional[Any] = None, modifier: Optional[Any] = None
|
||||
) -> pd.DataFrame:
|
||||
|
||||
@@ -1,12 +1,18 @@
|
||||
"""CoinPaprika view"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
import os
|
||||
from gamestonk_terminal.helper_funcs import export_data, print_rich_table
|
||||
|
||||
import gamestonk_terminal.cryptocurrency.discovery.coinpaprika_model as paprika
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import export_data, print_rich_table
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_search_results(
|
||||
query: str,
|
||||
category: str,
|
||||
|
||||
@@ -3,10 +3,16 @@ __docformat__ = "numpy"
|
||||
|
||||
# pylint: disable=C0301,E1137
|
||||
|
||||
import requests
|
||||
import logging
|
||||
|
||||
import pandas as pd
|
||||
import requests
|
||||
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import get_user_agent
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
NFT_COLUMNS = [
|
||||
"Name",
|
||||
"Protocols",
|
||||
@@ -31,6 +37,7 @@ DEX_COLUMNS = [
|
||||
]
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def _make_request(url: str) -> dict:
|
||||
"""Helper method handles dappradar api requests. [Source: https://dappradar.com/]
|
||||
|
||||
@@ -55,6 +62,7 @@ def _make_request(url: str) -> dict:
|
||||
raise ValueError(f"Invalid Response: {response.text}") from e
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_top_nfts() -> pd.DataFrame:
|
||||
"""Get top nft collections [Source: https://dappradar.com/]
|
||||
|
||||
@@ -92,6 +100,7 @@ def get_top_nfts() -> pd.DataFrame:
|
||||
return df
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_top_dexes() -> pd.DataFrame:
|
||||
"""Get top dexes by daily volume and users [Source: https://dappradar.com/]
|
||||
|
||||
@@ -119,6 +128,7 @@ def get_top_dexes() -> pd.DataFrame:
|
||||
return df
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_top_games() -> pd.DataFrame:
|
||||
"""Get top blockchain games by daily volume and users [Source: https://dappradar.com/]
|
||||
|
||||
@@ -149,6 +159,7 @@ def get_top_games() -> pd.DataFrame:
|
||||
return df
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_top_dapps() -> pd.DataFrame:
|
||||
"""Get top decentralized applications by daily volume and users [Source: https://dappradar.com/]
|
||||
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
"""DappRadar view"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
import os
|
||||
|
||||
from gamestonk_terminal.cryptocurrency.dataframe_helpers import (
|
||||
very_long_number_formatter,
|
||||
)
|
||||
from gamestonk_terminal.cryptocurrency.discovery import dappradar_model
|
||||
from gamestonk_terminal.helper_funcs import (
|
||||
export_data,
|
||||
print_rich_table,
|
||||
)
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import export_data, print_rich_table
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_top_nfts(top: int = 10, sortby: str = "", export: str = "") -> None:
|
||||
"""Displays top nft collections [Source: https://dappradar.com/]
|
||||
|
||||
@@ -51,6 +54,7 @@ def display_top_nfts(top: int = 10, sortby: str = "", export: str = "") -> None:
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_top_games(top: int = 10, export: str = "", sortby: str = "") -> None:
|
||||
"""Displays top blockchain games [Source: https://dappradar.com/]
|
||||
|
||||
@@ -89,6 +93,7 @@ def display_top_games(top: int = 10, export: str = "", sortby: str = "") -> None
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_top_dexes(top: int = 10, export: str = "", sortby: str = "") -> None:
|
||||
"""Displays top decentralized exchanges [Source: https://dappradar.com/]
|
||||
|
||||
@@ -127,6 +132,7 @@ def display_top_dexes(top: int = 10, export: str = "", sortby: str = "") -> None
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_top_dapps(top: int = 10, export: str = "", sortby: str = "") -> None:
|
||||
"""Displays top decentralized exchanges [Source: https://dappradar.com/]
|
||||
|
||||
|
||||
@@ -1,11 +1,15 @@
|
||||
"""CoinGecko model"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import os
|
||||
import json
|
||||
import logging
|
||||
import os
|
||||
from typing import List
|
||||
import pandas as pd
|
||||
from pycoingecko import CoinGeckoAPI
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
PERIODS = {
|
||||
"1h": "?time=h1",
|
||||
@@ -76,6 +80,7 @@ DEX_FILTERS = [
|
||||
]
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def read_file_data(file_name: str) -> dict:
|
||||
if file_name.split(".")[1] != "json":
|
||||
raise TypeError("Please load json file")
|
||||
@@ -87,12 +92,15 @@ def read_file_data(file_name: str) -> dict:
|
||||
return data
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_categories_keys() -> List[str]:
|
||||
categories = read_file_data("coingecko_categories.json")
|
||||
return list(categories.keys())
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_coins(top: int = 250, category: str = "") -> pd.DataFrame:
|
||||
|
||||
"""Get N coins from CoinGecko [Source: CoinGecko]
|
||||
|
||||
Parameters
|
||||
@@ -149,6 +157,7 @@ GAINERS_LOSERS_COLUMNS = [
|
||||
]
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_gainers_or_losers(
|
||||
top: int = 20, period: str = "1h", typ: str = "gainers"
|
||||
) -> pd.DataFrame:
|
||||
@@ -198,6 +207,7 @@ def get_gainers_or_losers(
|
||||
return sorted_df
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_trending_coins() -> pd.DataFrame:
|
||||
"""Returns trending coins [Source: CoinGecko]
|
||||
|
||||
@@ -219,6 +229,7 @@ def get_trending_coins() -> pd.DataFrame:
|
||||
return df
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_coin_list() -> pd.DataFrame:
|
||||
"""Get list of coins available on CoinGecko [Source: CoinGecko]
|
||||
|
||||
@@ -236,6 +247,7 @@ def get_coin_list() -> pd.DataFrame:
|
||||
).reset_index()
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_coins_for_given_exchange(exchange_id: str = "binance", page: int = 1) -> dict:
|
||||
"""Helper method to get all coins available on binance exchange [Source: CoinGecko]
|
||||
|
||||
@@ -257,6 +269,7 @@ def get_coins_for_given_exchange(exchange_id: str = "binance", page: int = 1) ->
|
||||
return binance_coins["tickers"]
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_mapping_matrix_for_exchange(exchange_id: str, pages: int = 12) -> dict:
|
||||
"""Creates a matrix with all coins available on Binance with corresponding coingecko coin_id. [Source: CoinGecko]
|
||||
|
||||
|
||||
@@ -1,15 +1,21 @@
|
||||
"""CoinGecko view"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
import os
|
||||
|
||||
from pandas.plotting import register_matplotlib_converters
|
||||
|
||||
from gamestonk_terminal.cryptocurrency.dataframe_helpers import (
|
||||
very_long_number_formatter,
|
||||
)
|
||||
from gamestonk_terminal.cryptocurrency.discovery import pycoingecko_model
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import export_data, print_rich_table
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
register_matplotlib_converters()
|
||||
|
||||
# pylint: disable=inconsistent-return-statements
|
||||
@@ -26,6 +32,7 @@ COINS_COLUMNS = [
|
||||
]
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_coins(
|
||||
category: str, top: int = 250, sortby: str = "Symbol", export: str = ""
|
||||
) -> None:
|
||||
@@ -82,6 +89,7 @@ def display_coins(
|
||||
console.print("\nUnable to retrieve data from CoinGecko.\n")
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_gainers(
|
||||
period: str = "1h", top: int = 20, sortby: str = "Symbol", export: str = ""
|
||||
) -> None:
|
||||
@@ -123,6 +131,7 @@ def display_gainers(
|
||||
console.print("\nUnable to retrieve data from CoinGecko.\n")
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_losers(
|
||||
period: str = "1h", top: int = 20, export: str = "", sortby: str = "Symbol"
|
||||
) -> None:
|
||||
@@ -164,6 +173,7 @@ def display_losers(
|
||||
console.print("\nUnable to retrieve data from CoinGecko.\n")
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_trending(export: str = "") -> None:
|
||||
"""Display trending coins [Source: CoinGecko]
|
||||
|
||||
|
||||
@@ -2,20 +2,26 @@
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import argparse
|
||||
|
||||
from typing import Tuple, Union, List
|
||||
import logging
|
||||
from collections import defaultdict
|
||||
from typing import List, Tuple, Union
|
||||
|
||||
import matplotlib.pyplot as plt
|
||||
import mplfinance as mpf
|
||||
import pandas as pd
|
||||
from binance.client import Client
|
||||
from binance.exceptions import BinanceAPIException
|
||||
|
||||
import gamestonk_terminal.config_terminal as cfg
|
||||
from gamestonk_terminal.helper_funcs import plot_autoscale
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.feature_flags import USE_ION as ion
|
||||
from gamestonk_terminal.helper_funcs import plot_autoscale
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def _get_trading_pairs() -> List[dict]:
|
||||
"""Helper method that return all trading pairs on binance. Other methods are use this data as an input for e.g
|
||||
building dataframe with all coins, or to build dict of all trading pairs. [Source: Binance]
|
||||
@@ -51,6 +57,7 @@ def _get_trading_pairs() -> List[dict]:
|
||||
return trading_pairs
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_all_binance_trading_pairs() -> pd.DataFrame:
|
||||
"""Returns all available pairs on Binance in DataFrame format. DataFrame has 3 columns symbol, baseAsset, quoteAsset
|
||||
example row: ETHBTC | ETH | BTC
|
||||
@@ -68,6 +75,7 @@ def get_all_binance_trading_pairs() -> pd.DataFrame:
|
||||
return pd.DataFrame(trading_pairs)[["symbol", "baseAsset", "quoteAsset"]]
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_binance_available_quotes_for_each_coin() -> dict:
|
||||
"""Helper methods that for every coin available on Binance add all quote assets. [Source: Binance]
|
||||
|
||||
@@ -85,6 +93,7 @@ def get_binance_available_quotes_for_each_coin() -> dict:
|
||||
return results
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def check_valid_binance_str(symbol: str) -> str:
|
||||
"""Check if symbol is in defined binance. [Source: Binance]"""
|
||||
client = Client(cfg.API_BINANCE_KEY, cfg.API_BINANCE_SECRET)
|
||||
@@ -97,6 +106,7 @@ def check_valid_binance_str(symbol: str) -> str:
|
||||
) from e
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def show_available_pairs_for_given_symbol(
|
||||
symbol: str = "ETH",
|
||||
) -> Tuple[Union[str, None], list]:
|
||||
@@ -124,6 +134,7 @@ def show_available_pairs_for_given_symbol(
|
||||
return None, []
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def plot_candles(candles_df: pd.DataFrame, title: str) -> None:
|
||||
"""Plot candle chart from dataframe. [Source: Binance]
|
||||
|
||||
|
||||
@@ -1,19 +1,23 @@
|
||||
"""Binance view"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
import os
|
||||
from binance.client import Client
|
||||
|
||||
import numpy as np
|
||||
import pandas as pd
|
||||
from gamestonk_terminal.helper_funcs import (
|
||||
export_data,
|
||||
print_rich_table,
|
||||
)
|
||||
from gamestonk_terminal.cryptocurrency.cryptocurrency_helpers import plot_order_book
|
||||
from binance.client import Client
|
||||
|
||||
import gamestonk_terminal.config_terminal as cfg
|
||||
from gamestonk_terminal.cryptocurrency.cryptocurrency_helpers import plot_order_book
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import export_data, print_rich_table
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_order_book(coin: str, limit: int, currency: str, export: str) -> None:
|
||||
"""Get order book for currency. [Source: Binance]
|
||||
|
||||
@@ -48,6 +52,7 @@ def display_order_book(coin: str, limit: int, currency: str, export: str) -> Non
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_balance(coin: str, currency: str, export: str) -> None:
|
||||
"""Get account holdings for asset. [Source: Binance]
|
||||
|
||||
|
||||
@@ -1,16 +1,23 @@
|
||||
"""Coinbase model"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
from typing import Optional, Any, Tuple
|
||||
import pandas as pd
|
||||
import logging
|
||||
from typing import Any, Optional, Tuple
|
||||
|
||||
import numpy as np
|
||||
import pandas as pd
|
||||
|
||||
from gamestonk_terminal.cryptocurrency.coinbase_helpers import (
|
||||
check_validity_of_product,
|
||||
make_coinbase_request,
|
||||
)
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def show_available_pairs_for_given_symbol(symbol: str = "ETH") -> Tuple[str, list]:
|
||||
pairs = make_coinbase_request("/products")
|
||||
df = pd.DataFrame(pairs)[["base_currency", "quote_currency"]]
|
||||
@@ -25,6 +32,7 @@ def show_available_pairs_for_given_symbol(symbol: str = "ETH") -> Tuple[str, lis
|
||||
return symbol, coin_df["quote_currency"].to_list()
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_trading_pair_info(product_id: str) -> pd.DataFrame:
|
||||
"""Get information about chosen trading pair. [Source: Coinbase]
|
||||
|
||||
@@ -47,6 +55,7 @@ def get_trading_pair_info(product_id: str) -> pd.DataFrame:
|
||||
return df
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_order_book(product_id: str) -> Tuple[np.ndarray, np.ndarray, str, dict]:
|
||||
"""Get orders book for chosen trading pair. [Source: Coinbase]
|
||||
|
||||
@@ -88,6 +97,7 @@ def get_order_book(product_id: str) -> Tuple[np.ndarray, np.ndarray, str, dict]:
|
||||
return bids, asks, product_id, market_book
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_trades(
|
||||
product_id: str, limit: int = 1000, side: Optional[Any] = None
|
||||
) -> pd.DataFrame:
|
||||
@@ -116,6 +126,7 @@ def get_trades(
|
||||
return pd.DataFrame(product)[["time", "price", "size", "side"]]
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_candles(product_id: str, interval: str = "24h") -> pd.DataFrame:
|
||||
"""Get candles for chosen trading pair and time interval. [Source: Coinbase]
|
||||
|
||||
@@ -174,6 +185,7 @@ def get_candles(product_id: str, interval: str = "24h") -> pd.DataFrame:
|
||||
]
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_product_stats(product_id: str) -> pd.DataFrame:
|
||||
"""Get 24 hr stats for the product. Volume is in base currency units.
|
||||
Open, high and low are in quote currency units. [Source: Coinbase]
|
||||
|
||||
@@ -1,18 +1,23 @@
|
||||
"""Coinbase view"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
import os
|
||||
from typing import Optional
|
||||
import pandas as pd
|
||||
from pandas.plotting import register_matplotlib_converters
|
||||
from gamestonk_terminal.helper_funcs import export_data, print_rich_table
|
||||
from gamestonk_terminal.cryptocurrency.due_diligence import coinbase_model
|
||||
from gamestonk_terminal.cryptocurrency.cryptocurrency_helpers import plot_order_book
|
||||
from gamestonk_terminal.cryptocurrency.due_diligence import coinbase_model
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import export_data, print_rich_table
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
register_matplotlib_converters()
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_order_book(product_id: str, export: str = "") -> None:
|
||||
"""Displays a list of available currency pairs for trading. [Source: Coinbase]
|
||||
|
||||
@@ -34,6 +39,7 @@ def display_order_book(product_id: str, export: str = "") -> None:
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_trades(
|
||||
product_id: str, limit: int = 1000, side: Optional[str] = None, export: str = ""
|
||||
) -> None:
|
||||
@@ -69,6 +75,7 @@ def display_trades(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_candles(product_id: str, interval: str = "24h", export: str = "") -> None:
|
||||
"""Get candles for chosen trading pair and time interval. [Source: Coinbase]
|
||||
|
||||
@@ -97,6 +104,7 @@ def display_candles(product_id: str, interval: str = "24h", export: str = "") ->
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_stats(product_id: str, export: str = "") -> None:
|
||||
"""Get 24 hr stats for the product. Volume is in base currency units.
|
||||
Open, high and low are in quote currency units. [Source: Coinbase]
|
||||
|
||||
@@ -1,14 +1,21 @@
|
||||
import json
|
||||
import datetime as dt
|
||||
import json
|
||||
import logging
|
||||
|
||||
import pandas as pd
|
||||
import requests
|
||||
|
||||
from gamestonk_terminal import config_terminal as cfg
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
api_url = "https://open-api.coinglass.com/api/pro/v1/"
|
||||
|
||||
INTERVALS = [0, 1, 2, 4]
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_open_interest_per_exchange(symbol: str, interval: int) -> pd.DataFrame:
|
||||
"""Returns open interest by exchange for a certain symbol
|
||||
[Source: https://coinglass.github.io/API-Reference/]
|
||||
|
||||
@@ -1,16 +1,23 @@
|
||||
import logging
|
||||
import os
|
||||
from matplotlib import pyplot as plt, dates as mdates
|
||||
import pandas as pd
|
||||
|
||||
import pandas as pd
|
||||
from matplotlib import dates as mdates
|
||||
from matplotlib import pyplot as plt
|
||||
|
||||
from gamestonk_terminal import config_plot as cfgPlot
|
||||
from gamestonk_terminal import feature_flags as gtff
|
||||
from gamestonk_terminal.cryptocurrency.due_diligence.coinglass_model import (
|
||||
get_open_interest_per_exchange,
|
||||
)
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import export_data, plot_autoscale
|
||||
from gamestonk_terminal import config_plot as cfgPlot
|
||||
from gamestonk_terminal import feature_flags as gtff
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_open_interest(symbol: str, interval: int, export: str) -> None:
|
||||
"""Displays open interest by exchange for a certain cryptocurrency
|
||||
[Source: https://coinglass.github.io/API-Reference/]
|
||||
@@ -38,6 +45,7 @@ def display_open_interest(symbol: str, interval: int, export: str) -> None:
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def plot_data(df: pd.DataFrame, symbol: str):
|
||||
df_price = df[["price"]].copy()
|
||||
|
||||
|
||||
@@ -1,15 +1,22 @@
|
||||
"""CoinPaprika model"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
from typing import Tuple, Optional, Any
|
||||
from datetime import datetime, timedelta
|
||||
import logging
|
||||
import textwrap
|
||||
from datetime import datetime, timedelta
|
||||
from typing import Any, Optional, Tuple
|
||||
|
||||
import pandas as pd
|
||||
from dateutil import parser
|
||||
|
||||
from gamestonk_terminal.cryptocurrency.coinpaprika_helpers import PaprikaSession
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_coin(coin_id: str = "eth-ethereum") -> dict:
|
||||
"""Get coin by id [Source: CoinPaprika]
|
||||
|
||||
@@ -28,6 +35,7 @@ def get_coin(coin_id: str = "eth-ethereum") -> dict:
|
||||
return coin
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_coin_twitter_timeline(coin_id: str = "eth-ethereum") -> pd.DataFrame:
|
||||
"""Get twitter timeline for given coin id. Not more than last 50 tweets [Source: CoinPaprika]
|
||||
|
||||
@@ -62,6 +70,7 @@ def get_coin_twitter_timeline(coin_id: str = "eth-ethereum") -> pd.DataFrame:
|
||||
return df
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_coin_events_by_id(coin_id: str = "eth-ethereum") -> pd.DataFrame:
|
||||
"""Get all events related to given coin like conferences, start date of futures trading etc. [Source: CoinPaprika]
|
||||
|
||||
@@ -112,6 +121,7 @@ def get_coin_events_by_id(coin_id: str = "eth-ethereum") -> pd.DataFrame:
|
||||
return data
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_coin_exchanges_by_id(coin_id: str = "eth-ethereum") -> pd.DataFrame:
|
||||
"""Get all exchanges for given coin id. [Source: CoinPaprika]
|
||||
|
||||
@@ -134,6 +144,7 @@ def get_coin_exchanges_by_id(coin_id: str = "eth-ethereum") -> pd.DataFrame:
|
||||
return df
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_coin_markets_by_id(
|
||||
coin_id: str = "eth-ethereum", quotes: str = "USD"
|
||||
) -> pd.DataFrame:
|
||||
@@ -182,6 +193,7 @@ def get_coin_markets_by_id(
|
||||
return pd.DataFrame(data)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_ohlc_historical(
|
||||
coin_id: str = "eth-ethereum", quotes: str = "USD", days: int = 90
|
||||
) -> pd.DataFrame:
|
||||
@@ -228,6 +240,7 @@ def get_ohlc_historical(
|
||||
return pd.DataFrame(data)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_tickers_info_for_coin(
|
||||
coin_id: str = "btc-bitcoin", quotes: str = "USD"
|
||||
) -> pd.DataFrame:
|
||||
@@ -313,6 +326,7 @@ def get_tickers_info_for_coin(
|
||||
return df
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def validate_coin(coin: str, coins_dct: dict) -> Tuple[str, Optional[Any]]:
|
||||
"""Helper method that validates if proper coin id or symbol was provided [Source: CoinPaprika]
|
||||
|
||||
@@ -345,6 +359,7 @@ def validate_coin(coin: str, coins_dct: dict) -> Tuple[str, Optional[Any]]:
|
||||
return coin_found, symbol
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def basic_coin_info(coin_id: str = "btc-bitcoin") -> pd.DataFrame:
|
||||
"""Basic coin information [Source: CoinPaprika]
|
||||
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
"""CoinPaprika view"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
import os
|
||||
|
||||
from pandas.plotting import register_matplotlib_converters
|
||||
from gamestonk_terminal.helper_funcs import (
|
||||
export_data,
|
||||
print_rich_table,
|
||||
)
|
||||
from gamestonk_terminal.cryptocurrency.due_diligence import coinpaprika_model
|
||||
|
||||
from gamestonk_terminal.cryptocurrency.dataframe_helpers import (
|
||||
long_number_format_with_type_check,
|
||||
)
|
||||
from gamestonk_terminal.cryptocurrency.due_diligence import coinpaprika_model
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import export_data, print_rich_table
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
register_matplotlib_converters()
|
||||
|
||||
# pylint: disable=inconsistent-return-statements
|
||||
@@ -79,6 +82,7 @@ CURRENCIES = [
|
||||
]
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_twitter(
|
||||
coin_id: str = "btc-bitcoin",
|
||||
top: int = 10,
|
||||
@@ -129,6 +133,7 @@ def display_twitter(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_events(
|
||||
coin_id: str = "btc-bitcoin",
|
||||
top: int = 10,
|
||||
@@ -183,6 +188,7 @@ def display_events(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_exchanges(
|
||||
coin_id: str = "btc-bitcoin",
|
||||
top: int = 10,
|
||||
@@ -227,6 +233,7 @@ def display_exchanges(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_markets(
|
||||
coin_id: str = "btc-bitcoin",
|
||||
currency: str = "USD",
|
||||
@@ -287,6 +294,7 @@ def display_markets(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_price_supply(
|
||||
coin_id: str = "btc-bitcoin",
|
||||
currency: str = "USD",
|
||||
@@ -326,6 +334,7 @@ def display_price_supply(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_basic(
|
||||
coin_id: str = "btc-bitcoin",
|
||||
export: str = "",
|
||||
|
||||
@@ -1,17 +1,23 @@
|
||||
"""Finbrain Crypto Sentiment Analysis"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
import os
|
||||
|
||||
import pandas as pd
|
||||
|
||||
from gamestonk_terminal import feature_flags as gtff
|
||||
from gamestonk_terminal.common.behavioural_analysis.finbrain_model import get_sentiment
|
||||
from gamestonk_terminal.common.behavioural_analysis.finbrain_view import (
|
||||
plot_sentiment,
|
||||
sentiment_coloring,
|
||||
)
|
||||
from gamestonk_terminal.common.behavioural_analysis.finbrain_model import get_sentiment
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import export_data
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
|
||||
try:
|
||||
@@ -21,6 +27,7 @@ except ValueError:
|
||||
COINS = None
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_crypto_sentiment_analysis(coin: str, export: str) -> None:
|
||||
"""Sentiment analysis from FinBrain for Cryptocurrencies
|
||||
|
||||
|
||||
@@ -1,7 +1,13 @@
|
||||
import json
|
||||
import logging
|
||||
|
||||
import pandas as pd
|
||||
import requests
|
||||
|
||||
from gamestonk_terminal import config_terminal as cfg
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
api_url = "https://api.glassnode.com/v1/metrics/"
|
||||
|
||||
@@ -167,6 +173,7 @@ INTERVALS_DISPLAY_EXCHANGE_NET_POSITION_CHANGE = ["24h"]
|
||||
INTERVALS_EXCHANGE_BALANCES = ["24h"]
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_close_price(asset: str, interval: str, since: int, until: int) -> pd.DataFrame:
|
||||
"""Returns the price of a cryptocurrency
|
||||
[Source: https://glassnode.com]
|
||||
@@ -208,6 +215,7 @@ def get_close_price(asset: str, interval: str, since: int, until: int) -> pd.Dat
|
||||
return pd.DataFrame()
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_non_zero_addresses(
|
||||
asset: str, interval: str, since: int, until: int
|
||||
) -> pd.DataFrame:
|
||||
@@ -251,6 +259,7 @@ def get_non_zero_addresses(
|
||||
return pd.DataFrame()
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_active_addresses(
|
||||
asset: str, interval: str, since: int, until: int
|
||||
) -> pd.DataFrame:
|
||||
@@ -294,6 +303,7 @@ def get_active_addresses(
|
||||
return pd.DataFrame()
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_hashrate(asset: str, interval: str, since: int, until: int) -> pd.DataFrame:
|
||||
"""Returns dataframe with mean hashrate of btc or eth blockchain and asset price
|
||||
[Source: https://glassnode.com]
|
||||
@@ -340,6 +350,7 @@ def get_hashrate(asset: str, interval: str, since: int, until: int) -> pd.DataFr
|
||||
return pd.DataFrame()
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_exchange_balances(
|
||||
asset: str, exchange: str, interval: str, since: int, until: int
|
||||
) -> pd.DataFrame:
|
||||
@@ -398,6 +409,7 @@ def get_exchange_balances(
|
||||
return pd.DataFrame()
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_exchange_net_position_change(
|
||||
asset: str, exchange: str, interval: str, since: int, until: int
|
||||
) -> pd.DataFrame:
|
||||
|
||||
@@ -1,10 +1,15 @@
|
||||
from datetime import datetime
|
||||
import logging
|
||||
import os
|
||||
from matplotlib import pyplot as plt, dates as mdates, ticker
|
||||
from datetime import datetime
|
||||
|
||||
import matplotlib
|
||||
import numpy as np
|
||||
from gamestonk_terminal.helper_funcs import export_data, plot_autoscale
|
||||
from matplotlib import dates as mdates
|
||||
from matplotlib import pyplot as plt
|
||||
from matplotlib import ticker
|
||||
|
||||
from gamestonk_terminal import config_plot as cfgPlot
|
||||
from gamestonk_terminal import feature_flags as gtff
|
||||
from gamestonk_terminal.cryptocurrency.due_diligence.glassnode_model import (
|
||||
get_active_addresses,
|
||||
get_close_price,
|
||||
@@ -13,10 +18,14 @@ from gamestonk_terminal.cryptocurrency.due_diligence.glassnode_model import (
|
||||
get_hashrate,
|
||||
get_non_zero_addresses,
|
||||
)
|
||||
from gamestonk_terminal import feature_flags as gtff
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import export_data, plot_autoscale
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_btc_rainbow(since: int, until: int, export: str = ""):
|
||||
"""Displays bitcoin rainbow chart
|
||||
[Price data from source: https://glassnode.com]
|
||||
@@ -136,6 +145,7 @@ def display_btc_rainbow(since: int, until: int, export: str = ""):
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_active_addresses(
|
||||
asset: str, since: int, until: int, interval: str, export: str = ""
|
||||
) -> None:
|
||||
@@ -190,6 +200,7 @@ def display_active_addresses(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_non_zero_addresses(
|
||||
asset: str, since: int, until: int, interval: str, export: str = ""
|
||||
) -> None:
|
||||
@@ -244,6 +255,7 @@ def display_non_zero_addresses(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_exchange_net_position_change(
|
||||
asset: str, exchange: str, since: int, until: int, interval: str, export: str = ""
|
||||
) -> None:
|
||||
@@ -315,6 +327,7 @@ def display_exchange_net_position_change(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_exchange_balances(
|
||||
asset: str,
|
||||
exchange: str,
|
||||
@@ -386,6 +399,7 @@ def display_exchange_balances(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_hashrate(
|
||||
asset: str,
|
||||
since: int,
|
||||
|
||||
@@ -1,25 +1,31 @@
|
||||
"""CoinGecko model"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
from typing import Tuple, Union, Any, Dict, List, Optional
|
||||
import regex as re
|
||||
import logging
|
||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||
|
||||
import pandas as pd
|
||||
import regex as re
|
||||
from pycoingecko import CoinGeckoAPI
|
||||
from gamestonk_terminal.cryptocurrency.discovery.pycoingecko_model import read_file_data
|
||||
from gamestonk_terminal.cryptocurrency.pycoingecko_helpers import (
|
||||
remove_keys,
|
||||
filter_list,
|
||||
find_discord,
|
||||
rename_columns_in_dct,
|
||||
create_dictionary_with_prefixes,
|
||||
DENOMINATION,
|
||||
calc_change,
|
||||
)
|
||||
|
||||
from gamestonk_terminal.cryptocurrency.dataframe_helpers import (
|
||||
replace_underscores_in_column_names,
|
||||
)
|
||||
from gamestonk_terminal.cryptocurrency.discovery.pycoingecko_model import read_file_data
|
||||
from gamestonk_terminal.cryptocurrency.pycoingecko_helpers import (
|
||||
DENOMINATION,
|
||||
calc_change,
|
||||
create_dictionary_with_prefixes,
|
||||
filter_list,
|
||||
find_discord,
|
||||
remove_keys,
|
||||
rename_columns_in_dct,
|
||||
)
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
CHANNELS = {
|
||||
"telegram_channel_identifier": "telegram",
|
||||
"twitter_screen_name": "twitter",
|
||||
@@ -41,6 +47,7 @@ BASE_INFO = [
|
||||
]
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_coin_potential_returns(
|
||||
main_coin: str,
|
||||
vs: Union[str, None] = None,
|
||||
@@ -185,6 +192,7 @@ def get_coin_potential_returns(
|
||||
return pd.DataFrame()
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def check_coin(coin_id: str):
|
||||
coins = read_file_data("coingecko_coins.json")
|
||||
for coin in coins:
|
||||
@@ -195,6 +203,7 @@ def check_coin(coin_id: str):
|
||||
return None
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_coin_market_chart(
|
||||
coin_id: str = "", vs_currency: str = "usd", days: int = 30, **kwargs: Any
|
||||
) -> pd.DataFrame:
|
||||
@@ -227,6 +236,7 @@ def get_coin_market_chart(
|
||||
class Coin:
|
||||
"""Coin class, it holds loaded coin"""
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def __init__(self, symbol: str, load_from_api: bool = False):
|
||||
self.client = CoinGeckoAPI()
|
||||
if load_from_api:
|
||||
@@ -238,9 +248,11 @@ class Coin:
|
||||
if self.coin_symbol:
|
||||
self.coin: Dict[Any, Any] = self._get_coin_info()
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def __str__(self):
|
||||
return f"{self.coin_symbol}"
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def _validate_coin(self, search_coin: str) -> Tuple[Optional[Any], Optional[Any]]:
|
||||
"""Validate if given coin symbol or id exists in list of available coins on CoinGecko.
|
||||
If yes it returns coin id. [Source: CoinGecko]
|
||||
@@ -269,6 +281,7 @@ class Coin:
|
||||
return coin, symbol
|
||||
raise ValueError(f"Could not find coin with the given id: {search_coin}\n")
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def coin_list(self) -> list:
|
||||
"""List all available coins [Source: CoinGecko]
|
||||
|
||||
@@ -280,6 +293,7 @@ class Coin:
|
||||
|
||||
return [token.get("id") for token in self._coin_list]
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def _get_coin_info(self) -> dict:
|
||||
"""Helper method which fetch the coin information by id from CoinGecko API like:
|
||||
(name, price, market, ... including exchange tickers) [Source: CoinGecko]
|
||||
@@ -293,6 +307,7 @@ class Coin:
|
||||
params = dict(localization="false", tickers="false", sparkline=True)
|
||||
return self.client.get_coin_by_id(self.coin_symbol, **params)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def _get_links(self) -> Dict:
|
||||
"""Helper method that extracts links from coin [Source: CoinGecko]
|
||||
|
||||
@@ -304,7 +319,7 @@ class Coin:
|
||||
|
||||
return self.coin.get("links", {})
|
||||
|
||||
@property
|
||||
@log_start_end(log=logger)
|
||||
def get_repositories(self) -> Optional[Any]:
|
||||
"""Get list of all repositories for given coin [Source: CoinGecko]
|
||||
|
||||
@@ -316,7 +331,7 @@ class Coin:
|
||||
|
||||
return self._get_links().get("repos_url")
|
||||
|
||||
@property
|
||||
@log_start_end(log=logger)
|
||||
def get_developers_data(self) -> pd.DataFrame:
|
||||
"""Get coin development data from GitHub or BitBucket like:
|
||||
number of pull requests, contributor etc [Source: CoinGecko]
|
||||
@@ -344,7 +359,7 @@ class Coin:
|
||||
|
||||
return df[df["Value"].notna()]
|
||||
|
||||
@property
|
||||
@log_start_end(log=logger)
|
||||
def get_blockchain_explorers(self) -> Union[pd.DataFrame, Any]:
|
||||
"""Get list of URLs to blockchain explorers for given coin. [Source: CoinGecko]
|
||||
|
||||
@@ -368,7 +383,7 @@ class Coin:
|
||||
return df[df["Value"].notna()]
|
||||
return None
|
||||
|
||||
@property
|
||||
@log_start_end(log=logger)
|
||||
def get_social_media(self) -> pd.DataFrame:
|
||||
"""Get list of URLs to social media like twitter, facebook, reddit... [Source: CoinGecko]
|
||||
|
||||
@@ -402,7 +417,7 @@ class Coin:
|
||||
)
|
||||
return df[df["Value"].notna()]
|
||||
|
||||
@property
|
||||
@log_start_end(log=logger)
|
||||
def get_websites(self) -> pd.DataFrame:
|
||||
"""Get list of URLs to websites like homepage of coin, forum. [Source: CoinGecko]
|
||||
|
||||
@@ -428,7 +443,7 @@ class Coin:
|
||||
)
|
||||
return df[df["Value"].notna()]
|
||||
|
||||
@property
|
||||
@log_start_end(log=logging)
|
||||
def get_categories(self) -> Union[Dict[Any, Any], List[Any]]:
|
||||
"""Coins categories. [Source: CoinGecko]
|
||||
|
||||
@@ -440,6 +455,7 @@ class Coin:
|
||||
|
||||
return self.coin.get("categories", {})
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def _get_base_market_data_info(self) -> dict:
|
||||
"""Helper method that fetches all the base market/price information about given coin. [Source: CoinGecko]
|
||||
|
||||
@@ -465,7 +481,7 @@ class Coin:
|
||||
market_dct.update(prices)
|
||||
return market_dct
|
||||
|
||||
@property
|
||||
@log_start_end(log=logger)
|
||||
def get_base_info(self) -> pd.DataFrame:
|
||||
"""Get all the base information about given coin. [Source: CoinGecko]
|
||||
|
||||
@@ -496,7 +512,7 @@ class Coin:
|
||||
|
||||
return df[df["Value"].notna()]
|
||||
|
||||
@property
|
||||
@log_start_end(log=logger)
|
||||
def get_market_data(self) -> pd.DataFrame:
|
||||
"""Get all the base market information about given coin. [Source: CoinGecko]
|
||||
|
||||
@@ -551,6 +567,7 @@ class Coin:
|
||||
)
|
||||
return df[df["Value"].notna()]
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_all_time_high(self, currency: str = "usd") -> pd.DataFrame:
|
||||
"""Get all time high data for given coin. [Source: CoinGecko]
|
||||
|
||||
@@ -586,6 +603,7 @@ class Coin:
|
||||
df["Metric"] = df["Metric"] + f" {currency.upper()}"
|
||||
return df[df["Value"].notna()]
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_all_time_low(self, currency: str = "usd") -> pd.DataFrame:
|
||||
"""Get all time low data for given coin. [Source: CoinGecko]
|
||||
|
||||
@@ -621,7 +639,7 @@ class Coin:
|
||||
df["Metric"] = df["Metric"] + f" {currency.upper()}"
|
||||
return df[df["Value"].notna()]
|
||||
|
||||
@property
|
||||
@log_start_end(log=logger)
|
||||
def get_scores(self) -> pd.DataFrame:
|
||||
"""Get different kind of scores for given coin. [Source: CoinGecko]
|
||||
|
||||
@@ -666,6 +684,7 @@ class Coin:
|
||||
)
|
||||
return df[df["Value"].notna()]
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_coin_market_chart(
|
||||
self, vs_currency: str = "usd", days: int = 30, **kwargs: Any
|
||||
) -> pd.DataFrame:
|
||||
@@ -696,6 +715,7 @@ class Coin:
|
||||
df["currency"] = vs_currency
|
||||
return df
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_ohlc(self, vs_currency: str = "usd", days: int = 90) -> pd.DataFrame:
|
||||
"""Get Open, High, Low, Close prices for given coin. [Source: CoinGecko]
|
||||
|
||||
|
||||
@@ -1,23 +1,22 @@
|
||||
"""CoinGecko view"""
|
||||
__docformat__ = "numpy"
|
||||
# pylint: disable=C0209
|
||||
|
||||
import logging
|
||||
import os
|
||||
from typing import Union
|
||||
from pandas.plotting import register_matplotlib_converters
|
||||
from gamestonk_terminal.helper_funcs import (
|
||||
export_data,
|
||||
print_rich_table,
|
||||
)
|
||||
import gamestonk_terminal.cryptocurrency.due_diligence.pycoingecko_model as gecko
|
||||
from gamestonk_terminal.cryptocurrency.dataframe_helpers import wrap_text_in_df
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import export_data, print_rich_table
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
register_matplotlib_converters()
|
||||
|
||||
# pylint: disable=inconsistent-return-statements
|
||||
# pylint: disable=R0904, C0302
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_coin_potential_returns(
|
||||
main_coin: str,
|
||||
vs: Union[str, None] = None,
|
||||
@@ -41,11 +40,13 @@ def display_coin_potential_returns(
|
||||
Export dataframe data to csv,json,xlsx file
|
||||
"""
|
||||
df = gecko.get_coin_potential_returns(main_coin, vs, top, price)
|
||||
|
||||
df["Potential Market Cap ($)"] = df.apply(
|
||||
lambda x: "{:,}".format(int(x["Potential Market Cap ($)"])), axis=1
|
||||
lambda x: f"{int(x['Potential Market Cap ($)']):n}", axis=1
|
||||
)
|
||||
|
||||
df["Current Market Cap ($)"] = df.apply(
|
||||
lambda x: "{:,}".format(int(x["Current Market Cap ($)"])), axis=1
|
||||
lambda x: f"{int(x['Current Market Cap ($)']):n}", axis=1
|
||||
)
|
||||
|
||||
print_rich_table(
|
||||
@@ -61,6 +62,7 @@ def display_coin_potential_returns(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_info(symbol: str, export: str) -> None:
|
||||
"""Shows basic information about loaded coin. [Source: CoinGecko]
|
||||
|
||||
@@ -74,7 +76,7 @@ def display_info(symbol: str, export: str) -> None:
|
||||
|
||||
coin = gecko.Coin(symbol)
|
||||
|
||||
df = wrap_text_in_df(coin.get_base_info, w=80)
|
||||
df = wrap_text_in_df(coin.get_base_info(), w=80)
|
||||
|
||||
print_rich_table(
|
||||
df, headers=list(df.columns), show_index=False, title="Basic Coin Information"
|
||||
@@ -89,6 +91,7 @@ def display_info(symbol: str, export: str) -> None:
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_web(symbol: str, export: str) -> None:
|
||||
"""Shows found websites corresponding to loaded coin. [Source: CoinGecko]
|
||||
|
||||
@@ -102,7 +105,7 @@ def display_web(symbol: str, export: str) -> None:
|
||||
|
||||
coin = gecko.Coin(symbol)
|
||||
|
||||
df = coin.get_websites
|
||||
df = coin.get_websites()
|
||||
|
||||
print_rich_table(
|
||||
df, headers=list(df.columns), show_index=False, title="Websites for Loaded Coin"
|
||||
@@ -117,6 +120,7 @@ def display_web(symbol: str, export: str) -> None:
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_social(symbol: str, export: str) -> None:
|
||||
"""Shows social media corresponding to loaded coin. [Source: CoinGecko]
|
||||
|
||||
@@ -128,7 +132,7 @@ def display_social(symbol: str, export: str) -> None:
|
||||
Export dataframe data to csv,json,xlsx file
|
||||
"""
|
||||
coin = gecko.Coin(symbol)
|
||||
df = coin.get_social_media
|
||||
df = coin.get_social_media()
|
||||
|
||||
print_rich_table(
|
||||
df,
|
||||
@@ -146,6 +150,7 @@ def display_social(symbol: str, export: str) -> None:
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_dev(symbol: str, export: str) -> None:
|
||||
"""Shows developers data for loaded coin. [Source: CoinGecko]
|
||||
|
||||
@@ -158,7 +163,7 @@ def display_dev(symbol: str, export: str) -> None:
|
||||
"""
|
||||
coin = gecko.Coin(symbol)
|
||||
|
||||
df = coin.get_developers_data
|
||||
df = coin.get_developers_data()
|
||||
|
||||
print_rich_table(
|
||||
df,
|
||||
@@ -176,6 +181,7 @@ def display_dev(symbol: str, export: str) -> None:
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_ath(symbol: str, currency: str, export: str) -> None:
|
||||
"""Shows all time high data for loaded coin. [Source: CoinGecko]
|
||||
|
||||
@@ -204,6 +210,7 @@ def display_ath(symbol: str, currency: str, export: str) -> None:
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_atl(symbol: str, currency: str, export: str) -> None:
|
||||
"""Shows all time low data for loaded coin. [Source: CoinGecko]
|
||||
|
||||
@@ -232,6 +239,7 @@ def display_atl(symbol: str, currency: str, export: str) -> None:
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_score(symbol: str, export: str) -> None:
|
||||
"""Shows different kind of scores for loaded coin. [Source: CoinGecko]
|
||||
|
||||
@@ -244,7 +252,7 @@ def display_score(symbol: str, export: str) -> None:
|
||||
"""
|
||||
coin = gecko.Coin(symbol)
|
||||
|
||||
df = coin.get_scores
|
||||
df = coin.get_scores()
|
||||
|
||||
print_rich_table(
|
||||
df,
|
||||
@@ -262,6 +270,7 @@ def display_score(symbol: str, export: str) -> None:
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_bc(symbol: str, export: str) -> None:
|
||||
"""Shows urls to blockchain explorers. [Source: CoinGecko]
|
||||
|
||||
@@ -274,7 +283,7 @@ def display_bc(symbol: str, export: str) -> None:
|
||||
"""
|
||||
coin = gecko.Coin(symbol)
|
||||
|
||||
df = coin.get_blockchain_explorers
|
||||
df = coin.get_blockchain_explorers()
|
||||
|
||||
print_rich_table(
|
||||
df, headers=list(df.columns), show_index=False, title="Blockchain URLs"
|
||||
@@ -289,6 +298,7 @@ def display_bc(symbol: str, export: str) -> None:
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_market(symbol: str, export: str) -> None:
|
||||
"""Shows market data for loaded coin. [Source: CoinGecko]
|
||||
|
||||
@@ -301,7 +311,7 @@ def display_market(symbol: str, export: str) -> None:
|
||||
"""
|
||||
coin = gecko.Coin(symbol)
|
||||
|
||||
df = coin.get_market_data
|
||||
df = coin.get_market_data()
|
||||
|
||||
print_rich_table(
|
||||
df, headers=list(df.columns), show_index=False, title="Market Data"
|
||||
|
||||
@@ -1,12 +1,19 @@
|
||||
""" nftcalendar.io Model """
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
|
||||
import pandas as pd
|
||||
import requests
|
||||
from bs4 import BeautifulSoup
|
||||
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import get_user_agent
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_nft_drops(url: str) -> pd.DataFrame:
|
||||
"""Get NFT drops [Source: nftcalendar.io]
|
||||
|
||||
@@ -56,6 +63,7 @@ def get_nft_drops(url: str) -> pd.DataFrame:
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_nft_today_drops() -> pd.DataFrame:
|
||||
"""Get NFT today drops [Source: nftcalendar.io]
|
||||
|
||||
@@ -67,6 +75,7 @@ def get_nft_today_drops() -> pd.DataFrame:
|
||||
return get_nft_drops("https://nftcalendar.io/")
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_nft_upcoming_drops() -> pd.DataFrame:
|
||||
"""Get NFT upcoming drops [Source: nftcalendar.io]
|
||||
|
||||
@@ -78,6 +87,7 @@ def get_nft_upcoming_drops() -> pd.DataFrame:
|
||||
return get_nft_drops("https://nftcalendar.io/events")
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_nft_ongoing_drops() -> pd.DataFrame:
|
||||
"""Get NFT ongoing drops [Source: nftcalendar.io]
|
||||
|
||||
@@ -89,6 +99,7 @@ def get_nft_ongoing_drops() -> pd.DataFrame:
|
||||
return get_nft_drops("https://nftcalendar.io/events/ongoing/")
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_nft_newest_drops() -> pd.DataFrame:
|
||||
"""Get NFT newest drops [Source: nftcalendar.io]
|
||||
|
||||
|
||||
@@ -1,12 +1,18 @@
|
||||
""" nftcalendar.io View """
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
import os
|
||||
from gamestonk_terminal.helper_funcs import export_data
|
||||
|
||||
from gamestonk_terminal.cryptocurrency.nft import nftcalendar_model
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import export_data
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_nft_today_drops(num: int, export: str):
|
||||
"""Display NFT today drops. [Source: nftcalendar.io]
|
||||
|
||||
@@ -36,6 +42,7 @@ def display_nft_today_drops(num: int, export: str):
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_nft_upcoming_drops(num: int, export: str):
|
||||
"""Display NFT upcoming drops. [Source: nftcalendar.io]
|
||||
|
||||
@@ -65,6 +72,7 @@ def display_nft_upcoming_drops(num: int, export: str):
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_nft_ongoing_drops(num: int, export: str):
|
||||
"""Display NFT ongoing drops. [Source: nftcalendar.io]
|
||||
|
||||
@@ -94,6 +102,7 @@ def display_nft_ongoing_drops(num: int, export: str):
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_nft_newest_drops(num: int, export: str):
|
||||
"""Display NFT newest drops. [Source: nftcalendar.io]
|
||||
|
||||
|
||||
@@ -1,12 +1,19 @@
|
||||
""" opensea.io Model """
|
||||
|
||||
import logging
|
||||
from datetime import datetime
|
||||
import requests
|
||||
|
||||
import pandas as pd
|
||||
import requests
|
||||
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
API_URL = "https://api.opensea.io/api/v1"
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_collection_stats(slug: str) -> pd.DataFrame:
|
||||
"""Get stats of a nft collection [Source: opensea.io]
|
||||
|
||||
|
||||
@@ -1,11 +1,17 @@
|
||||
""" opensea.io View """
|
||||
|
||||
import logging
|
||||
import os
|
||||
from gamestonk_terminal.helper_funcs import export_data, print_rich_table
|
||||
|
||||
from gamestonk_terminal.cryptocurrency.nft.opensea_model import get_collection_stats
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import export_data, print_rich_table
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_collection_stats(slug: str, export: str):
|
||||
"""Display collection stats. [Source: opensea.io]
|
||||
|
||||
|
||||
@@ -3,25 +3,31 @@ __docformat__ = "numpy"
|
||||
|
||||
import datetime
|
||||
import json
|
||||
import logging
|
||||
import os
|
||||
from typing import Optional
|
||||
|
||||
import numpy as np
|
||||
from requests.exceptions import HTTPError
|
||||
from requests.adapters import HTTPAdapter
|
||||
|
||||
import requests
|
||||
import pandas as pd
|
||||
import requests
|
||||
from requests.adapters import HTTPAdapter
|
||||
from requests.exceptions import HTTPError
|
||||
|
||||
from gamestonk_terminal import config_terminal as cfg
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class BitQueryApiKeyException(Exception):
|
||||
"""Bit Query Api Key Exception object"""
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def __init__(self, message: str):
|
||||
super().__init__(message)
|
||||
self.message = message
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def __str__(self) -> str:
|
||||
return f"BitQueryApiKeyException: {self.message}"
|
||||
|
||||
@@ -123,6 +129,7 @@ DECENTRALIZED_EXCHANGES_MAP = {e.lower(): e for e in DECENTRALIZED_EXCHANGES}
|
||||
NETWORKS = ["bsc", "ethereum", "matic"]
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def _extract_dex_trades(data: dict) -> pd.DataFrame:
|
||||
"""Helper method that extracts from bitquery api response data from nested dictionary:
|
||||
response = {'ethereum' : {'dexTrades' : <data>}}. If 'dexTrades' is None, raises Exception.
|
||||
@@ -144,6 +151,7 @@ def _extract_dex_trades(data: dict) -> pd.DataFrame:
|
||||
return pd.json_normalize(dex_trades)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def query_graph(url: str, query: str) -> dict:
|
||||
"""Helper methods for querying graphql api. [Source: https://bitquery.io/]
|
||||
|
||||
@@ -191,6 +199,7 @@ def query_graph(url: str, query: str) -> dict:
|
||||
return data["data"]
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_erc20_tokens() -> pd.DataFrame:
|
||||
"""Helper method that loads ~1500 most traded erc20 token.
|
||||
[Source: json file]
|
||||
@@ -211,6 +220,7 @@ def get_erc20_tokens() -> pd.DataFrame:
|
||||
return df[["name", "symbol", "address", "count"]]
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def find_token_address(token: str) -> Optional[str]:
|
||||
"""Helper methods that search for ERC20 coin base on provided symbol or token address.
|
||||
If erc20 token address is provided, then function checks if it's proper address and returns it back.
|
||||
@@ -244,6 +254,7 @@ def find_token_address(token: str) -> Optional[str]:
|
||||
return found_token.iloc[0]["address"]
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_dex_trades_by_exchange(
|
||||
trade_amount_currency: str = "USD", limit: int = 90
|
||||
) -> pd.DataFrame:
|
||||
@@ -296,6 +307,7 @@ def get_dex_trades_by_exchange(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_dex_trades_monthly(
|
||||
trade_amount_currency: str = "USD", limit: int = 90
|
||||
) -> pd.DataFrame:
|
||||
@@ -352,6 +364,7 @@ def get_dex_trades_monthly(
|
||||
return df[["date", "trades", "tradeAmount"]]
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_daily_dex_volume_for_given_pair(
|
||||
limit: int = 100,
|
||||
token: str = "UNI",
|
||||
@@ -449,6 +462,7 @@ def get_daily_dex_volume_for_given_pair(
|
||||
].sort_values(by="date", ascending=False)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_token_volume_on_dexes(
|
||||
token: str = "UNI",
|
||||
trade_amount_currency: str = "USD",
|
||||
@@ -507,6 +521,7 @@ def get_token_volume_on_dexes(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_ethereum_unique_senders(interval: str = "day", limit: int = 90) -> pd.DataFrame:
|
||||
"""Get number of unique ethereum addresses which made a transaction in given time interval.
|
||||
|
||||
@@ -562,6 +577,7 @@ def get_ethereum_unique_senders(interval: str = "day", limit: int = 90) -> pd.Da
|
||||
return df[UEAT_FILTERS]
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_most_traded_pairs(
|
||||
network: str = "ethereum", exchange: str = "Uniswap", limit: int = 90
|
||||
) -> pd.DataFrame:
|
||||
@@ -611,6 +627,7 @@ def get_most_traded_pairs(
|
||||
return df[TTCP_FILTERS]
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_spread_for_crypto_pair(
|
||||
token: str = "WETH", vs: str = "USDT", limit: int = 30
|
||||
) -> pd.DataFrame:
|
||||
|
||||
@@ -1,17 +1,22 @@
|
||||
"""The BitQuery view"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
import os
|
||||
|
||||
from gamestonk_terminal.cryptocurrency.dataframe_helpers import (
|
||||
very_long_number_formatter,
|
||||
prettify_column_names,
|
||||
very_long_number_formatter,
|
||||
)
|
||||
from gamestonk_terminal.cryptocurrency.onchain import bitquery_model
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import export_data, print_rich_table
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_dex_trades(
|
||||
trade_amount_currency: str = "USD",
|
||||
kind: str = "dex",
|
||||
@@ -73,6 +78,7 @@ def display_dex_trades(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_daily_volume_for_given_pair(
|
||||
token: str = "WBTC",
|
||||
vs: str = "USDT",
|
||||
@@ -137,6 +143,7 @@ def display_daily_volume_for_given_pair(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_dex_volume_for_token(
|
||||
token: str = "WBTC",
|
||||
trade_amount_currency: str = "USD",
|
||||
@@ -195,6 +202,7 @@ def display_dex_volume_for_token(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_ethereum_unique_senders(
|
||||
interval: str = "days",
|
||||
limit: int = 10,
|
||||
@@ -253,6 +261,7 @@ def display_ethereum_unique_senders(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_most_traded_pairs(
|
||||
exchange="Uniswap",
|
||||
days: int = 10,
|
||||
@@ -307,6 +316,7 @@ def display_most_traded_pairs(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_spread_for_crypto_pair(
|
||||
token="ETH",
|
||||
vs="USDC",
|
||||
|
||||
@@ -1,10 +1,17 @@
|
||||
"""Blockchain model"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import requests
|
||||
import logging
|
||||
|
||||
import pandas as pd
|
||||
import requests
|
||||
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def _make_request(endpoint: str) -> dict:
|
||||
"""Helper method handles Blockchain API requests. [Source: https://api.blockchain.info/]
|
||||
|
||||
@@ -30,6 +37,7 @@ def _make_request(endpoint: str) -> dict:
|
||||
raise ValueError(f"Invalid Response: {response.text}") from e
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_btc_circulating_supply() -> pd.DataFrame:
|
||||
"""Returns BTC circulating supply [Source: https://api.blockchain.info/]
|
||||
|
||||
@@ -48,6 +56,7 @@ def get_btc_circulating_supply() -> pd.DataFrame:
|
||||
return df
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_btc_confirmed_transactions() -> pd.DataFrame:
|
||||
"""Returns BTC confirmed transactions [Source: https://api.blockchain.info/]
|
||||
|
||||
|
||||
@@ -1,20 +1,28 @@
|
||||
"""Blockchain View"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
import os
|
||||
from datetime import datetime
|
||||
|
||||
import matplotlib.pyplot as plt
|
||||
from matplotlib import ticker, dates as mdates
|
||||
from gamestonk_terminal.cryptocurrency.onchain import blockchain_model
|
||||
from gamestonk_terminal.helper_funcs import (
|
||||
export_data,
|
||||
plot_autoscale,
|
||||
long_number_format,
|
||||
)
|
||||
from matplotlib import dates as mdates
|
||||
from matplotlib import ticker
|
||||
|
||||
from gamestonk_terminal import feature_flags as gtff
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
from gamestonk_terminal.cryptocurrency.onchain import blockchain_model
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import (
|
||||
export_data,
|
||||
long_number_format,
|
||||
plot_autoscale,
|
||||
)
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_btc_circulating_supply(since: int, until: int, export: str) -> None:
|
||||
"""Returns BTC circulating supply [Source: https://api.blockchain.info/]
|
||||
|
||||
@@ -62,6 +70,7 @@ def display_btc_circulating_supply(since: int, until: int, export: str) -> None:
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_btc_confirmed_transactions(since: int, until: int, export: str) -> None:
|
||||
"""Returns BTC confirmed transactions [Source: https://api.blockchain.info/]
|
||||
|
||||
|
||||
@@ -1,8 +1,15 @@
|
||||
"""ETH Gas Station model"""
|
||||
import logging
|
||||
|
||||
import pandas as pd
|
||||
import requests
|
||||
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_gwei_fees() -> pd.DataFrame:
|
||||
"""Returns the most recent Ethereum gas fees in gwei
|
||||
[Source: https://ethgasstation.info]
|
||||
|
||||
@@ -1,11 +1,16 @@
|
||||
"""ETH Gas Station view"""
|
||||
import logging
|
||||
import os
|
||||
|
||||
from gamestonk_terminal.helper_funcs import export_data, print_rich_table
|
||||
from gamestonk_terminal.cryptocurrency.onchain.ethgasstation_model import get_gwei_fees
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import export_data, print_rich_table
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_gwei_fees(export: str) -> None:
|
||||
"""Current gwei fees
|
||||
[Source: https://ethgasstation.info]
|
||||
|
||||
@@ -1,15 +1,20 @@
|
||||
"""Ethplorer model"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
import textwrap
|
||||
|
||||
from datetime import datetime
|
||||
from typing import Any, Optional
|
||||
from time import sleep
|
||||
from typing import Any, Optional
|
||||
|
||||
import pandas as pd
|
||||
import requests
|
||||
from gamestonk_terminal.cryptocurrency.dataframe_helpers import create_df_index
|
||||
|
||||
import gamestonk_terminal.config_terminal as cfg
|
||||
from gamestonk_terminal.cryptocurrency.dataframe_helpers import create_df_index
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
PRICES_FILTERS = [
|
||||
"date",
|
||||
@@ -50,6 +55,7 @@ HOLDERS_FILTERS = [
|
||||
]
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def split_cols_with_dot(column: str) -> str:
|
||||
"""Split column name in data frame columns whenever there is a dot between 2 words.
|
||||
E.g. price.availableSupply -> priceAvailableSupply.
|
||||
@@ -65,6 +71,7 @@ def split_cols_with_dot(column: str) -> str:
|
||||
Value of column with replaced format.
|
||||
"""
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def replace(string: str, char: str, index: int) -> str:
|
||||
"""Helper method which replaces values with dot as a separator and converts it to camelCase format
|
||||
|
||||
@@ -92,6 +99,7 @@ def split_cols_with_dot(column: str) -> str:
|
||||
return column
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def enrich_social_media(dct: dict) -> None:
|
||||
"""Searching inside dictionary if there are any information about twitter, reddit or coingecko. If yes it
|
||||
updates dictionary with url to given social media site.
|
||||
@@ -113,6 +121,7 @@ def enrich_social_media(dct: dict) -> None:
|
||||
dct[k] = v + dct[k]
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def make_request(endpoint: str, address: Optional[str] = None, **kwargs: Any) -> dict:
|
||||
"""Helper method that handles request for Ethplorer API [Source: https://ethplorer.io/]
|
||||
|
||||
@@ -152,6 +161,7 @@ def make_request(endpoint: str, address: Optional[str] = None, **kwargs: Any) ->
|
||||
return response
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_token_decimals(address: str) -> Optional[int]:
|
||||
"""Helper methods that gets token decimals number. [Source: Ethplorer]
|
||||
|
||||
@@ -171,6 +181,7 @@ def get_token_decimals(address: str) -> Optional[int]:
|
||||
return None
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_address_info(address: str) -> pd.DataFrame:
|
||||
"""Get info about tokens on you ethereum blockchain balance. Eth balance, balance of all tokens which
|
||||
have name and symbol. [Source: Ethplorer]
|
||||
@@ -237,6 +248,7 @@ def get_address_info(address: str) -> pd.DataFrame:
|
||||
return df
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_top_tokens() -> pd.DataFrame:
|
||||
"""Get top 50 tokens. [Source: Ethplorer]
|
||||
|
||||
@@ -265,6 +277,7 @@ def get_top_tokens() -> pd.DataFrame:
|
||||
return df
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_top_token_holders(address) -> pd.DataFrame:
|
||||
"""Get info about top token holders. [Source: Ethplorer]
|
||||
|
||||
@@ -288,6 +301,7 @@ def get_top_token_holders(address) -> pd.DataFrame:
|
||||
return df
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_address_history(address) -> pd.DataFrame:
|
||||
"""Get information about balance historical transactions. [Source: Ethplorer]
|
||||
|
||||
@@ -321,6 +335,7 @@ def get_address_history(address) -> pd.DataFrame:
|
||||
return df[cols]
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_token_info(address) -> pd.DataFrame:
|
||||
"""Get info about ERC20 token. [Source: Ethplorer]
|
||||
|
||||
@@ -382,6 +397,7 @@ def get_token_info(address) -> pd.DataFrame:
|
||||
return df
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_tx_info(tx_hash) -> pd.DataFrame:
|
||||
"""Get info about transaction. [Source: Ethplorer]
|
||||
|
||||
@@ -424,6 +440,7 @@ def get_tx_info(tx_hash) -> pd.DataFrame:
|
||||
return df
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_token_history(address) -> pd.DataFrame:
|
||||
"""Get info about token historical transactions. [Source: Ethplorer]
|
||||
|
||||
@@ -467,6 +484,7 @@ def get_token_history(address) -> pd.DataFrame:
|
||||
return df[["timestamp", "name", "symbol", "value", "from", "to", "transactionHash"]]
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_token_historical_price(address) -> pd.DataFrame:
|
||||
"""Get token historical prices with volume and market cap, and average price. [Source: Ethplorer]
|
||||
|
||||
|
||||
@@ -1,15 +1,21 @@
|
||||
"""Ethplorer view"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
import os
|
||||
from gamestonk_terminal.helper_funcs import export_data, print_rich_table
|
||||
|
||||
from gamestonk_terminal.cryptocurrency.dataframe_helpers import (
|
||||
very_long_number_formatter,
|
||||
)
|
||||
from gamestonk_terminal.cryptocurrency.onchain import ethplorer_model
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import export_data, print_rich_table
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_address_info(
|
||||
address: str,
|
||||
top: int = 15,
|
||||
@@ -57,6 +63,7 @@ def display_address_info(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_top_tokens(
|
||||
top: int = 15,
|
||||
sortby: str = "rank",
|
||||
@@ -101,6 +108,7 @@ def display_top_tokens(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_top_token_holders(
|
||||
address: str,
|
||||
top: int = 10,
|
||||
@@ -145,6 +153,7 @@ def display_top_token_holders(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_address_history(
|
||||
address: str,
|
||||
top: int = 10,
|
||||
@@ -191,6 +200,7 @@ def display_address_history(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_token_info(
|
||||
address: str,
|
||||
social: bool = False,
|
||||
@@ -231,6 +241,7 @@ def display_token_info(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_tx_info(
|
||||
tx_hash: str,
|
||||
export: str = "",
|
||||
@@ -263,6 +274,7 @@ def display_tx_info(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_token_history(
|
||||
address: str,
|
||||
top: int = 10,
|
||||
@@ -319,6 +331,7 @@ def display_token_history(
|
||||
)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_token_historical_prices(
|
||||
address: str,
|
||||
top: int = 30,
|
||||
|
||||
@@ -1,12 +1,18 @@
|
||||
"""Whale Alert model"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
from typing import Optional
|
||||
import logging
|
||||
import textwrap
|
||||
import requests
|
||||
import pandas as pd
|
||||
from typing import Optional
|
||||
|
||||
import numpy as np
|
||||
import pandas as pd
|
||||
import requests
|
||||
|
||||
import gamestonk_terminal.config_terminal as cfg
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
FILTERS = [
|
||||
"date",
|
||||
@@ -22,14 +28,17 @@ FILTERS = [
|
||||
class ApiKeyException(Exception):
|
||||
"""Api Key Exception object"""
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def __init__(self, message: str):
|
||||
super().__init__(message)
|
||||
self.message = message
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def __str__(self) -> str:
|
||||
return f"ApiKeyException: {self.message}"
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def make_request(params: Optional[dict] = None) -> dict:
|
||||
"""Helper methods for requests [Source: https://docs.whale-alert.io/]
|
||||
|
||||
@@ -56,6 +65,7 @@ def make_request(params: Optional[dict] = None) -> dict:
|
||||
raise ValueError(f"Invalid Response: {response.text}") from e
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_whales_transactions(min_value: int = 800000, limit: int = 100) -> pd.DataFrame:
|
||||
"""Whale Alert's API allows you to retrieve live and historical transaction data from major blockchains.
|
||||
Supported blockchain: Bitcoin, Ethereum, Ripple, NEO, EOS, Stellar and Tron. [Source: https://docs.whale-alert.io/]
|
||||
|
||||
@@ -1,16 +1,22 @@
|
||||
"""Whale Alert view"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
import os
|
||||
|
||||
from gamestonk_terminal.cryptocurrency.onchain import whale_alert_model
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import (
|
||||
export_data,
|
||||
long_number_format,
|
||||
print_rich_table,
|
||||
)
|
||||
from gamestonk_terminal.cryptocurrency.onchain import whale_alert_model
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_whales_transactions(
|
||||
min_value: int = 800000,
|
||||
top: int = 100,
|
||||
|
||||
@@ -1,15 +1,21 @@
|
||||
"""Blockchain Center Model"""
|
||||
import json
|
||||
import logging
|
||||
from datetime import datetime
|
||||
|
||||
import pandas as pd
|
||||
import requests
|
||||
from bs4 import BeautifulSoup
|
||||
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import get_user_agent
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
DAYS = [30, 90, 365]
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_altcoin_index(period: int, since: int, until: int) -> pd.DataFrame:
|
||||
"""Get altcoin index overtime
|
||||
[Source: https://blockchaincenter.net]
|
||||
|
||||
@@ -1,16 +1,24 @@
|
||||
"""Blockchain Center View"""
|
||||
import logging
|
||||
import os
|
||||
from matplotlib import pyplot as plt, dates as mdates
|
||||
|
||||
from matplotlib import dates as mdates
|
||||
from matplotlib import pyplot as plt
|
||||
|
||||
from gamestonk_terminal import feature_flags as gtff
|
||||
from gamestonk_terminal.config_plot import PLOT_DPI
|
||||
from gamestonk_terminal.cryptocurrency.overview.blockchaincenter_model import (
|
||||
get_altcoin_index,
|
||||
DAYS,
|
||||
get_altcoin_index,
|
||||
)
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import export_data, plot_autoscale
|
||||
from gamestonk_terminal import feature_flags as gtff
|
||||
from gamestonk_terminal.rich_config import console
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def display_altcoin_index(
|
||||
period: int, since: int, until: int, export: str = ""
|
||||
) -> None:
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
"""Coinbase model"""
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import logging
|
||||
import pandas as pd
|
||||
from gamestonk_terminal.cryptocurrency.coinbase_helpers import (
|
||||
make_coinbase_request,
|
||||
)
|
||||
from gamestonk_terminal.cryptocurrency.coinbase_helpers import make_coinbase_request
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
PAIRS_FILTERS = [
|
||||
"id",
|
||||
@@ -18,6 +20,7 @@ PAIRS_FILTERS = [
|
||||
]
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_trading_pairs() -> pd.DataFrame:
|
||||
"""Get a list of available currency pairs for trading. [Source: Coinbase]
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user