mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-10-30 05:52:23 +00:00
Merge branch 'economics_menu_upgrade' of https://github.com/JerBouma/GamestonkTerminal into economics_menu_upgrade
This commit is contained in:
@@ -152,3 +152,6 @@ API_BITQUERY_KEY = os.getenv("GT_API_BITQUERY_KEY") or "REPLACE_ME"
|
||||
# https://terra.smartstake.io/
|
||||
API_SMARTSTAKE_KEY = os.getenv("GT_API_SMARTSTAKE_KEY") or "REPLACE_ME"
|
||||
API_SMARTSTAKE_TOKEN = os.getenv("GT_API_SMARTSTAKE_TOKEN") or "REPLACE_ME"
|
||||
|
||||
# https://messari.io/
|
||||
API_MESSARI_KEY = os.getenv("GT_API_MESSARI_KEY") or "REPLACE_ME"
|
||||
|
||||
@@ -23,6 +23,8 @@ from gamestonk_terminal.cryptocurrency.due_diligence import (
|
||||
glassnode_model,
|
||||
glassnode_view,
|
||||
pycoingecko_view,
|
||||
messari_model,
|
||||
messari_view,
|
||||
)
|
||||
from gamestonk_terminal.decorators import log_start_end
|
||||
from gamestonk_terminal.helper_funcs import (
|
||||
@@ -71,12 +73,14 @@ class DueDiligenceController(CryptoBaseController):
|
||||
"balance",
|
||||
],
|
||||
"cb": ["cbbook", "trades", "stats"],
|
||||
"mes": ["mcapdom"],
|
||||
}
|
||||
|
||||
DD_VIEWS_MAPPING = {
|
||||
"cg": pycoingecko_view,
|
||||
"cp": coinpaprika_view,
|
||||
"bin": binance_view,
|
||||
"mes": messari_view,
|
||||
}
|
||||
|
||||
PATH = "/crypto/dd/"
|
||||
@@ -132,6 +136,9 @@ class DueDiligenceController(CryptoBaseController):
|
||||
choices["twitter"]["-s"] = {
|
||||
c: None for c in coinpaprika_view.TWEETS_FILTERS
|
||||
}
|
||||
choices["mcapdom"]["-i"] = {
|
||||
c: None for c in messari_model.INTERVALS_TIMESERIES
|
||||
}
|
||||
choices["ps"]["--vs"] = {c: None for c in coinpaprika_view.CURRENCIES}
|
||||
self.completer = NestedCompleter.from_nested_dict(choices)
|
||||
|
||||
@@ -174,7 +181,9 @@ class DueDiligenceController(CryptoBaseController):
|
||||
[src]Coinbase[/src]
|
||||
cbbook show order book
|
||||
trades show last trades
|
||||
stats show coin stats[/cmds]
|
||||
stats show coin stats
|
||||
[src]Messari[/src]
|
||||
mcapdom show market cap dominance[/cmds]
|
||||
"""
|
||||
console.print(text=help_text, menu="Stocks - Due Diligence")
|
||||
|
||||
@@ -1183,3 +1192,58 @@ class DueDiligenceController(CryptoBaseController):
|
||||
descend=ns_parser.descend,
|
||||
export=ns_parser.export,
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def call_mcapdom(self, other_args: List[str]):
|
||||
"""Process mcapdom command"""
|
||||
|
||||
parser = argparse.ArgumentParser(
|
||||
add_help=False,
|
||||
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
||||
prog="mcapdom",
|
||||
description="""
|
||||
Display asset's percentage share of total crypto circulating market cap
|
||||
[Source: https://messari.io]
|
||||
""",
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"-i",
|
||||
"--interval",
|
||||
dest="interval",
|
||||
type=str,
|
||||
help="Frequency interval. Default: 1d",
|
||||
default="1d",
|
||||
choices=messari_model.INTERVALS_TIMESERIES,
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"-s",
|
||||
"--start",
|
||||
dest="start",
|
||||
type=valid_date,
|
||||
help="Initial date. Default: A year ago",
|
||||
default=(datetime.now() - timedelta(days=365)).strftime("%Y-%m-%d"),
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"-end",
|
||||
"--end",
|
||||
dest="end",
|
||||
type=valid_date,
|
||||
help="End date. Default: Today",
|
||||
default=datetime.now().strftime("%Y-%m-%d"),
|
||||
)
|
||||
|
||||
ns_parser = parse_known_args_and_warn(
|
||||
parser, other_args, EXPORT_BOTH_RAW_DATA_AND_FIGURES
|
||||
)
|
||||
|
||||
if ns_parser:
|
||||
messari_view.display_marketcap_dominance(
|
||||
coin=self.symbol.upper(),
|
||||
interval=ns_parser.interval,
|
||||
start=ns_parser.start,
|
||||
end=ns_parser.end,
|
||||
export=ns_parser.export,
|
||||
)
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
import logging
|
||||
|
||||
import pandas as pd
|
||||
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__)
|
||||
|
||||
INTERVALS_TIMESERIES = ["5m", "15m", "30m", "1h", "1d", "1w"]
|
||||
|
||||
|
||||
base_url = "https://data.messari.io/api/v1/"
|
||||
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def get_marketcap_dominance(
|
||||
coin: str, interval: str, start: str, end: str
|
||||
) -> pd.DataFrame:
|
||||
"""Returns market dominance of a coin over time
|
||||
[Source: https://messari.io/]
|
||||
|
||||
Parameters
|
||||
----------
|
||||
coin : str
|
||||
Crypto symbol to check market cap dominance
|
||||
start : int
|
||||
Initial date like string (e.g., 2021-10-01)
|
||||
end : int
|
||||
End date like string (e.g., 2021-10-01)
|
||||
interval : str
|
||||
Interval frequency (e.g., 1d)
|
||||
|
||||
Returns
|
||||
-------
|
||||
pd.DataFrame
|
||||
market dominance percentage over time
|
||||
"""
|
||||
|
||||
url = base_url + f"assets/{coin}/metrics/mcap.dom/time-series"
|
||||
|
||||
headers = {"x-messari-api-key": cfg.API_MESSARI_KEY}
|
||||
|
||||
parameters = {
|
||||
"start": start,
|
||||
"end": end,
|
||||
"interval": interval,
|
||||
}
|
||||
|
||||
r = requests.get(url, params=parameters, headers=headers)
|
||||
|
||||
df = pd.DataFrame()
|
||||
|
||||
if r.status_code == 200:
|
||||
df = pd.DataFrame(
|
||||
r.json()["data"]["values"], columns=["timestamp", "marketcap_dominance"]
|
||||
)
|
||||
|
||||
if df.empty:
|
||||
console.print(f"No data found for {coin}.\n")
|
||||
else:
|
||||
df = df.set_index("timestamp")
|
||||
df.index = pd.to_datetime(df.index, unit="ms")
|
||||
|
||||
elif r.status_code == 401:
|
||||
console.print("[red]Invalid API Key[/red]\n")
|
||||
else:
|
||||
console.print(r.text)
|
||||
|
||||
return df
|
||||
@@ -0,0 +1,80 @@
|
||||
import logging
|
||||
import os
|
||||
from typing import List, Optional
|
||||
|
||||
from matplotlib import pyplot as plt
|
||||
|
||||
from gamestonk_terminal.config_terminal import theme
|
||||
from gamestonk_terminal.decorators import check_api_key
|
||||
from gamestonk_terminal import config_plot as cfgPlot
|
||||
from gamestonk_terminal.cryptocurrency.due_diligence.messari_model import (
|
||||
get_marketcap_dominance,
|
||||
)
|
||||
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)
|
||||
@check_api_key(["API_MESSARI_KEY"])
|
||||
def display_marketcap_dominance(
|
||||
coin: str,
|
||||
start: str,
|
||||
end: str,
|
||||
interval: str,
|
||||
export: str = "",
|
||||
external_axes: Optional[List[plt.Axes]] = None,
|
||||
) -> None:
|
||||
"""Display market dominance of a coin over time
|
||||
[Source: https://messari.io/]
|
||||
|
||||
Parameters
|
||||
----------
|
||||
coin : str
|
||||
Crypto symbol to check market cap dominance
|
||||
start : int
|
||||
Initial date like string (e.g., 2021-10-01)
|
||||
end : int
|
||||
End date like string (e.g., 2021-10-01)
|
||||
interval : str
|
||||
Interval frequency (e.g., 1d)
|
||||
export : str
|
||||
Export dataframe data to csv,json,xlsx file
|
||||
external_axes : Optional[List[plt.Axes]], optional
|
||||
External axes (1 axis is expected in the list), by default None
|
||||
"""
|
||||
|
||||
df = get_marketcap_dominance(coin=coin, start=start, end=end, interval=interval)
|
||||
|
||||
if df.empty:
|
||||
return
|
||||
|
||||
# This plot has 1 axis
|
||||
if not external_axes:
|
||||
_, ax = plt.subplots(figsize=plot_autoscale(), dpi=cfgPlot.PLOT_DPI)
|
||||
else:
|
||||
if len(external_axes) != 1:
|
||||
logger.error("Expected list of one axis item.")
|
||||
console.print("[red]Expected list of one axis item./n[/red]")
|
||||
return
|
||||
(ax,) = external_axes
|
||||
|
||||
ax.plot(df.index, df["marketcap_dominance"])
|
||||
|
||||
ax.set_title(f"{coin}'s Market Cap Dominance over time")
|
||||
ax.set_ylabel(f"{coin} Percentage share")
|
||||
ax.set_xlim(df.index[0], df.index[-1])
|
||||
|
||||
theme.style_primary_axis(ax)
|
||||
|
||||
if not external_axes:
|
||||
theme.visualize_output()
|
||||
|
||||
export_data(
|
||||
export,
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"mcapdom",
|
||||
df,
|
||||
)
|
||||
3
scripts/test_crypto_dd.gst
vendored
3
scripts/test_crypto_dd.gst
vendored
@@ -11,4 +11,5 @@ social
|
||||
score
|
||||
dev
|
||||
bc
|
||||
exit
|
||||
mcapdom
|
||||
exit
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
interactions:
|
||||
- request:
|
||||
body: null
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Accept-Encoding:
|
||||
- gzip, deflate
|
||||
Connection:
|
||||
- keep-alive
|
||||
User-Agent:
|
||||
- python-requests/2.27.1
|
||||
x-messari-api-key:
|
||||
- mock_x-messari-api-key
|
||||
method: GET
|
||||
uri: https://data.messari.io/api/v1/assets/BTC/metrics/mcap.dom/time-series?start=2022-01-10&end=2022-03-08&interval=1d
|
||||
response:
|
||||
body:
|
||||
string: !!binary |
|
||||
H4sIAAAAAAAA/3SVT2/jyNHGvwrRl/cNQGvqf1fpmM0pQW7OZQcDg5G4Y2YsSiCpnQwG/u4BZTbJ
|
||||
BFjDB8P8sfqpp58q/kzj1Ez3MR1/pvatuY3tOR0JoE5Td2nHqbnc0jERED0BP6E8QxxVj0wHVhMB
|
||||
tfg1vdfp3EzNXOPWDM2lndrhUbEZx3Z6+db+SMf05+dfUr38pzunY8KWkdCbp1akfRJyfXKC05OT
|
||||
U9sSEbCmetY3TKsGfEJ4Bjg+fn9NdWr7804g+H897PqpHX5v3ubTzqlO1+HcDumYmvHU9ueu/5rq
|
||||
9Nt1uDTzAf8ar33a9f2yPrn33b+fLt3bWze2p2t/HlOdTte3+6Uf0/Hzzqk6XZrhWzudmtvL+Xrp
|
||||
+qY/tenLe53G02t7eTh0aaehO31YcDk1t8P5ekl16ptLm47p7+X96i/r+3U6t+Np6G5Td+3TMT2/
|
||||
ttV6TrWeU3VjNb221cPi/xurWzuc2n5qvrbV+NoMbXX9rZquU/NWnYYft+lanbrhdH9rpq7/utVL
|
||||
dfq9ebu348smeR+F5/J31fXV3pNq7GYRs4L2dj29Vv+P1V+b/t4MPyqMDFW5mOofz7/86Q+s+uPm
|
||||
tm7muF26vrvcLy//e8Hj9T6c2pdmmobun/cPvz7/LOb+rem+XVOd7sP8wus03cbjp0/fv38/fJuf
|
||||
HE7Xy6f0Pl/XhwXp+PkzmmDO5DD/1BwHNwxkRUAlcvlSPxDXoA9E4CBKnFWzsWShhQhR2xVhBzJR
|
||||
c84LQcAfJR6ECDgo5GyZPS8EostGhDIzWYYAc1sQAtm0Eucwh4wOJFKIQFoJcCNHFWMxLUI45yLV
|
||||
Dx7GYDkzo5svhJhsUkkQ3UVno4ohpAqbVKcQIXc3YyjNGJuvlgE5uHtWUyFdiEy8mcriGJrNhaOU
|
||||
cAhbgZxNnYKFzSAXP3whoBY8MKooIs9SSyvhJGuNQJLIQOKOgR8Eg7mvJSJUdL4VJbVCoCpthDkz
|
||||
uHiOjMV1JkFbEfdgBnQ0CpelXeYlZVALHRQ1EBWJSRWXblhQZEXYMZuYIKBQLIQC+EqQANucGzXm
|
||||
lfBMuxougAZo7swLYZltJVADAlDUM1qRuuTjo5sMmsOMg4BzqeElIjMhYa6ZwzwYlpRxlH4fhDEI
|
||||
QnYMWgMggLFJJfcgY/ZwXXoRBN1cDTaE+fqRLasUJGhzFcAyZyMDEo1yDGXftAZkQDZEw5ASI2GT
|
||||
na1ZUUTNQK3MpojiloFHt6QYwJqLWC22PYw3QhSm2XYppxjJpnUeFs8eSGxaTskIWwCycpYMjgjG
|
||||
a8OPkS9IhETQLN48oiDuvPkamdTMYs7S6nxYbFpV3UHDc3bwJfNanP8gAB0sQpRpaUZRaJM6t6oG
|
||||
xKFIJfHzAt2kMs5R9wzZsmipwqi7tCohBYdD5nXl6SPA692wh2YyEs2UC+G7yUJhYbZgyebL3ajm
|
||||
3WARzAMazm6ApV+z3WABoLuzuQiVodAsu8EyECEWp5jbWQhn3sU1IIjRZb6yZWzKV2QZLHfWMMxk
|
||||
VobTAGwf1sAIzsKiXHavQdA+AREsCmbb/jbM62DxQXTOA1t2Xj9oRrZOFh/YBIJQgFWFCsK6ThYf
|
||||
0FRRVOc1LYurjzWwZSSLxfzloOymi2mmtB+sCPRgDMqMpYgh7pcAYTCSGOK6Jx7h3UIiyjE/zsiC
|
||||
X768v/8nAAD//6Kn+3blCgAA
|
||||
headers:
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Length:
|
||||
- '1272'
|
||||
Content-Type:
|
||||
- application/json; charset=UTF-8
|
||||
Date:
|
||||
- Mon, 14 Mar 2022 09:55:32 GMT
|
||||
content-encoding:
|
||||
- gzip
|
||||
server:
|
||||
- istio-envoy
|
||||
vary:
|
||||
- Accept-Encoding,Origin
|
||||
x-envoy-decorator-operation:
|
||||
- meridian-service.meridian.svc.cluster.local:8080/*
|
||||
x-envoy-upstream-service-time:
|
||||
- '246'
|
||||
x-ratelimit-limit:
|
||||
- '4000'
|
||||
x-ratelimit-remaining:
|
||||
- '3984'
|
||||
x-ratelimit-reset:
|
||||
- '1647329561'
|
||||
status:
|
||||
code: 200
|
||||
message: OK
|
||||
version: 1
|
||||
@@ -0,0 +1,71 @@
|
||||
interactions:
|
||||
- request:
|
||||
body: null
|
||||
headers:
|
||||
Accept:
|
||||
- '*/*'
|
||||
Accept-Encoding:
|
||||
- gzip, deflate
|
||||
Connection:
|
||||
- keep-alive
|
||||
User-Agent:
|
||||
- python-requests/2.27.1
|
||||
x-messari-api-key:
|
||||
- mock_x-messari-api-key
|
||||
method: GET
|
||||
uri: https://data.messari.io/api/v1/assets/BTC/metrics/mcap.dom/time-series?start=2022-01-10&end=2022-03-08&interval=1d
|
||||
response:
|
||||
body:
|
||||
string: !!binary |
|
||||
H4sIAAAAAAAA/3SWT2/jyNHGvwrRl/cNQGvqf1fpmM0pQW7OZQcDg5G4Y2YsSiCpnQwG/u4BZTbJ
|
||||
BFjDB0H9Y/VTTz/V1M80Ts10H9PxZ2rfmtvYntORCOo0dZd2nJrLLR0TAdET8BPKM/KR5ChxcCQz
|
||||
8NBf03udzs3UzDVuzdBc2qkdHhWbcWynl2/tj3RMf37+JdXLN905HRO2jITePLUi7ZOQ65MTnJ6c
|
||||
nNqWiIA11bO+YVo14BPCM8Dx8f9rqlPbn3cCwf9rseundvi9eZt3O6c6XYdzO6RjasZT25+7/muq
|
||||
02/X4dLMG/xrvPZp1/fLunLvu38/Xbq3t25sT9f+PKY6na5v90s/puPnnVN1ujTDt3Y6NbeX8/XS
|
||||
9U1/atOX9zqNp9f28nDo0k5Dd/qw4HJqbofz9ZLq1DeXNh3T38vz1V/W5+t0bsfT0N2m7tqnY3p+
|
||||
bat1n2rdp+rGanptq4fF/zdWt3Y4tf3UfG2r8bUZ2ur6WzVdp+atOg0/btO1OnXD6f7WTF3/dauX
|
||||
6vR783Zvx5dN8j4Kz+Vz1fXV3pNq7GYRs4L2dj29Vv+P1V+b/t4MPyqMDFU5mOofz7/86Q+s+uPm
|
||||
tm7muF26vrvcLy//e8Dj9T6c2pdmmobun/cPvz7/LOb+rem+XVOd7sP8wOs03cbjp0/fv38/fJtX
|
||||
Dqfr5VN6n4/rw4J0/PwZTTBncpj/ao6DGwayIqASuXypH4hr0AcicBAlzqrZWLLQQoSo7YqwA5mo
|
||||
OeeFIOCPEg9CBBwUcrbMnhcC0WUjQpmZLEOAuS0IgWxaiXOYQ0YHEilEIK0EuJGjirGYFiGcc5Hq
|
||||
Bw9jsJyZ0c0XQkw2qSSI7qKzUcUQUoVNqlOIkLubMZRmjM1Xy4Ac3D2rqZAuRCbeTGVxDM3mwlFK
|
||||
OIStQM6mTsHCZpCLH74QUAseGFUUkWeppZVwkrVGIElkIHHHwA+CwdzXEhEqOp+KklohUJU2wpwZ
|
||||
XDxHxuI6k6CtiHswAzoahcvSLvOSMqiFDooaiIrEpIpLNywosiLsmE1MEFAoFkIBfCVIgG3OjRrz
|
||||
SnimXQ0XQAM0d+aFsMy2EqgBASjqGa1IXfLx0U0GzWHGQcC51PASkZmQMNfMYR4MS8o4Sr8PwhgE
|
||||
ITsGrQEQwNikknuQMXu4Lr0Igm6uBhvCfPzIllUKErS5CmCZs5EBiUbZhrJvWgMyIBuiYUiJkbDJ
|
||||
ztasKKJmoFZmU0Rxy8CjW1IMYM1FrBbbHsYbIQrTbLuUXYxk0zoPi2cPJDYtu2SELQBZOUsGRwTj
|
||||
teHHyBckQiJoFm8eURB33nyNTGpmMWdpdT4sNq2q7qDhOTv4knktzn8QgA4WIcq0NKMotEmdW1UD
|
||||
4lCkkvj5At2kMs5R9wzZsmipwqi7tCohBYdD5vXK00eA17NhD81kJJopF8J3k4XCwmzBks2Xs1HN
|
||||
u8EimAc0nN0AS7/zj51djtDd2VyEylBolt1gGYgQi1PM7SyEM+/iGhDE6DIf2TI25S2yDJY7axhm
|
||||
MivDaQC2D2tgBGdhUS53r0HQPgERLApm2/1tmNfB4oPonAe27Ly+0IxsnSw+sAkEoQCrChWEdZ0s
|
||||
PqCpoqjO17Qsrj6ugS0jWSzmNwdlN11MM6X9YEWgB2NQZixFDHF/CRAGI4khrvfEI7xbSEQ55uWM
|
||||
LPjly/v7fwIAAP//7x9zNuUKAAA=
|
||||
headers:
|
||||
Connection:
|
||||
- keep-alive
|
||||
Content-Length:
|
||||
- '1274'
|
||||
Content-Type:
|
||||
- application/json; charset=UTF-8
|
||||
Date:
|
||||
- Mon, 14 Mar 2022 13:24:49 GMT
|
||||
content-encoding:
|
||||
- gzip
|
||||
server:
|
||||
- istio-envoy
|
||||
vary:
|
||||
- Accept-Encoding,Origin
|
||||
x-envoy-decorator-operation:
|
||||
- meridian-service.meridian.svc.cluster.local:8080/*
|
||||
x-envoy-upstream-service-time:
|
||||
- '239'
|
||||
x-ratelimit-limit:
|
||||
- '4000'
|
||||
x-ratelimit-remaining:
|
||||
- '3982'
|
||||
x-ratelimit-reset:
|
||||
- '1647329561'
|
||||
status:
|
||||
code: 200
|
||||
message: OK
|
||||
version: 1
|
||||
@@ -0,0 +1,59 @@
|
||||
timestamp,marketcap_dominance
|
||||
2022-01-10,39.861913510152284
|
||||
2022-01-11,40.45237557634742
|
||||
2022-01-12,39.86380264568372
|
||||
2022-01-13,39.44080507767387
|
||||
2022-01-14,39.495333267090686
|
||||
2022-01-15,39.23796807180244
|
||||
2022-01-16,39.08628154634652
|
||||
2022-01-17,38.89630677331868
|
||||
2022-01-18,39.24118845417784
|
||||
2022-01-19,39.82944288866307
|
||||
2022-01-20,40.02808887565425
|
||||
2022-01-21,40.3481957684397
|
||||
2022-01-22,40.776582934366076
|
||||
2022-01-23,41.3154511354178
|
||||
2022-01-24,40.91249702488191
|
||||
2022-01-25,41.99545776752561
|
||||
2022-01-26,41.968330848797144
|
||||
2022-01-27,41.889330181629845
|
||||
2022-01-28,42.515911512325516
|
||||
2022-01-29,42.38176464101429
|
||||
2022-01-30,42.24036642156339
|
||||
2022-01-31,42.38840160168833
|
||||
2022-02-01,42.15909014587165
|
||||
2022-02-02,41.70579663920373
|
||||
2022-02-03,41.49685739689302
|
||||
2022-02-04,41.463041078192425
|
||||
2022-02-05,42.2889263389859
|
||||
2022-02-06,41.936103436136754
|
||||
2022-02-07,42.006737626024595
|
||||
2022-02-08,41.907013611619476
|
||||
2022-02-09,42.27514456605687
|
||||
2022-02-10,41.85739251903579
|
||||
2022-02-11,42.36211432883346
|
||||
2022-02-12,42.86638789123657
|
||||
2022-02-13,42.753747081106354
|
||||
2022-02-14,42.994992648068994
|
||||
2022-02-15,42.97256669764625
|
||||
2022-02-16,42.55880598778081
|
||||
2022-02-17,42.5018069945326
|
||||
2022-02-18,42.143256023951245
|
||||
2022-02-19,42.313255870767456
|
||||
2022-02-20,42.352129398073686
|
||||
2022-02-21,42.23895726245727
|
||||
2022-02-22,42.14343369347689
|
||||
2022-02-23,42.20889398386011
|
||||
2022-02-24,42.00188836844265
|
||||
2022-02-25,42.60442348297674
|
||||
2022-02-26,41.99092318444793
|
||||
2022-02-27,41.78835961726633
|
||||
2022-02-28,41.909199374345384
|
||||
2022-03-01,42.99993450661868
|
||||
2022-03-02,43.45883236783284
|
||||
2022-03-03,43.364092140355424
|
||||
2022-03-04,43.16551455348149
|
||||
2022-03-05,42.574692464278655
|
||||
2022-03-06,42.29918931927319
|
||||
2022-03-07,42.282193124611425
|
||||
2022-03-08,42.34539611471341
|
||||
|
@@ -0,0 +1,28 @@
|
||||
# IMPORTATION STANDARD
|
||||
|
||||
# IMPORTATION THIRDPARTY
|
||||
import pytest
|
||||
|
||||
# IMPORTATION INTERNAL
|
||||
from gamestonk_terminal.cryptocurrency.due_diligence import messari_model
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
def vcr_config():
|
||||
return {
|
||||
"filter_headers": [("x-messari-api-key", "mock_x-messari-api-key")],
|
||||
}
|
||||
|
||||
|
||||
@pytest.mark.vcr
|
||||
@pytest.mark.parametrize(
|
||||
"coin,interval,start,end",
|
||||
[
|
||||
("BTC", "1d", "2022-01-10", "2022-03-08"),
|
||||
],
|
||||
)
|
||||
def test_get_marketcap_dominance(coin, interval, start, end, recorder):
|
||||
df = messari_model.get_marketcap_dominance(
|
||||
coin=coin, interval=interval, start=start, end=end
|
||||
)
|
||||
recorder.capture(df)
|
||||
@@ -35,4 +35,5 @@ Coinbase
|
||||
cbbook show order book
|
||||
trades show last trades
|
||||
stats show coin stats
|
||||
|
||||
Messari
|
||||
mcapdom show market cap dominance
|
||||
|
||||
19
website/content/cryptocurrency/due_diligence/mcapdom/_index.md
vendored
Normal file
19
website/content/cryptocurrency/due_diligence/mcapdom/_index.md
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
```
|
||||
usage: mcapdom [-i {5m,15m,30m,1h,1d,1w}] [-s START] [-end END] [-h]
|
||||
[--export {csv,json,xlsx,png,jpg,pdf,svg}]
|
||||
```
|
||||
|
||||
Display asset's percentage share of total crypto circulating market cap [Source: https://messari.io]
|
||||
|
||||
```
|
||||
optional arguments:
|
||||
-i {5m,15m,30m,1h,1d,1w}, --interval {5m,15m,30m,1h,1d,1w}
|
||||
Frequency interval. Default: 1d (default: 1d)
|
||||
-s START, --start START
|
||||
Initial date. Default: A year ago (default: 2021-03-14)
|
||||
-end END, --end END End date. Default: Today (default: 2022-03-14)
|
||||
-h, --help show this help message (default: False)
|
||||
--export {csv,json,xlsx,png,jpg,pdf,svg}
|
||||
Export raw data into csv, json, xlsx and figure into png, jpg, pdf, svg
|
||||
(default: )
|
||||
```
|
||||
3
website/data/menu/main.yml
vendored
3
website/data/menu/main.yml
vendored
@@ -598,7 +598,6 @@ main:
|
||||
ref: "/terminal/common/quantitative_analysis/capm"
|
||||
- name: line
|
||||
ref: "/terminal/common/quantitative_analysis/line"
|
||||
|
||||
- name: prediction techniques
|
||||
ref: "/terminal/common/prediction_techniques"
|
||||
sub:
|
||||
@@ -764,6 +763,8 @@ main:
|
||||
ref: "/terminal/cryptocurrency/due_diligence/trades"
|
||||
- name: stats
|
||||
ref: "/terminal/cryptocurrency/due_diligence/stats"
|
||||
- name: stats
|
||||
ref: "/cryptocurrency/due_diligence/mcapdom"
|
||||
- name: onchain
|
||||
ref: "/terminal/cryptocurrency/onchain"
|
||||
sub:
|
||||
|
||||
Reference in New Issue
Block a user