Merge branch 'main' into price-summary

This commit is contained in:
Jamie Perkins
2021-05-28 10:39:55 -04:00
4 changed files with 71 additions and 39 deletions

View File

@@ -87,9 +87,9 @@ As a modern Python-based environment, GamestonkTerminal opens access to numerous
## Donation
GST is a completely free open-source terminal. My personal goal has always been to keep this terminal available for everyone to use at zero cost.
GST is a completely free open-source terminal. My personal goal has always been to keep this terminal available for everyone to use at zero cost.
Lately, some developers have been helping me in this endeavour. As you can probably tell from the git history, the terminal has been increasing in features/robustness at a really fast pace. Since none of us are getting paid to do so, and we all have 9-5 jobs, it's hard to onbard people to work towards the cause. On a personal level, I stopped investing since the repository was made public, since I spend all my spare time working on it, and don't have time left for DD.
Lately, some developers have been helping me in this endeavour. As you can probably tell from the git history, the terminal has been increasing in features/robustness at a really fast pace. Since none of us are getting paid to do so, and we all have 9-5 jobs, it's hard to onbard people to work towards the cause. On a personal level, I stopped investing since the repository was made public, since I spend all my spare time working on it, and don't have time left for DD.
There are many ways to help support GST. If technical development or support are one of your strengths, join our [discord](https://discord.gg/Up2QGbMKHY). Otherwise, you could certainly help us by providing a donation to our coinbase crypto wallet: **3Pfx7NwGgmZsk7hQJxzHdp5rGBftUHVTiM**.
@@ -99,7 +99,7 @@ Sharing the terminal with friends and family would also go a long way. Thanks in
## Getting Started
### Install
If you'd like to see a video recording of the installation process, @JohnnyDankseed has made one available [here](https://www.twitch.tv/videos/1013768299).
If you'd like to see a video recording of the installation process, @JohnnyDankseed has made one available [here](https://www.youtube.com/watch?v=fYKw_MH6gi0).
This project was originally written and tested with Python 3.6.8. It should now support Python 3.6, 3.7, and 3.8.
@@ -253,10 +253,10 @@ Alternatively, you can also set them to the following environment variables:
| [Alpha Vantage](https://www.alphavantage.co) | GT_API_KEY_ALPHAVANTAGE |
| [Binance](https://binance.com) | GT_API_BINANCE_KEY <br/> GT_API_BINANCE_SECRET |
| [CoinMarketCap](https://coinmarketcap.com) | GT_CMC_API_KEY <br/> GT_CMC_API_KEY |
| [DEGIRO](https://www.degiro.fr) | DG_USERNAME <br/> DG_PASSWORD <br/> DG_TOTP_SECRET |
| [FRED](https://fred.stlouisfed.org) | GT_FRED_API_KEY |
| [DEGIRO](https://www.degiro.fr) | GT_DG_USERNAME <br/> GT_DG_PASSWORD <br/> GT_DG_TOTP_SECRET |
| [FRED](https://fred.stlouisfed.org) | GT_API_FRED_KEY |
| [Financial Modeling Prep](https://financialmodelingprep.com) | GT_API_KEY_FINANCIALMODELINGPREP |
| [Finhub](https://finnhub.io) | API_FINNHUB_KEY |
| [Finhub](https://finnhub.io) | GT_API_FINNHUB_KEY |
| [News](https://newsapi.org) | GT_API_NEWS_TOKEN |
| [Oanda](https://developer.oanda.com) | GT_OANDA_TOKEN <br/> GT_OANDA_ACCOUNT |
| [Polygon](https://polygon.io) | GT_API_POLYGON_KEY |
@@ -376,9 +376,9 @@ Feel free to share loss porn, memes or any questions at:
#### Shoutout to:
* **alokan** : Responsible by developing `Forex` menu
* **pll_llq** and **hinxx** : Working towards a GUI using Qt.
* **pll_llq** and **hinxx** : Working towards a GUI using Qt.
* Get in touch in our [#gui](https://discord.gg/gQ3VxXEj) discord channel.
* **1lluz10n**, **crspy**, and **martiaaz** : Working on our landing page https://gamestonkterminal.vercel.app.
* **1lluz10n**, **crspy**, and **martiaaz** : Working on our landing page https://gamestonkterminal.vercel.app.
* Get in touch in our [#landing-page](https://discord.gg/wkyB4xcb) discord channel.
* **Chavithra** and **Deel18** : for Degiro's integration.

View File

@@ -69,9 +69,9 @@ class ETFController:
"""Process Quit command - quit the program"""
return True
def call_web(self, _):
def call_web(self, other_args: List[str]):
"""Process web command"""
open_web()
open_web(other_args)
def call_search(self, other_args: List[str]):
"""Process search command"""

View File

@@ -29,9 +29,44 @@ def limit_number_of_holdings(num: str) -> int:
return int(num)
def open_web():
"""Opens webbrowser to the website page"""
webbrowser.open("https://stockanalysis.com/etf/")
def open_web(other_args: List[str]):
"""
Opens webbrowser to the website page
Parameters
----------
other_args : List[str]
Argparse arguments
"""
parser = argparse.ArgumentParser(prog="web", add_help=False)
parser.add_argument(
"-n", "--name", type=str, dest="name", help="Symbol to look for", required=False
)
try:
if other_args:
if "-" not in other_args[0]:
other_args.insert(0, "-n")
ns_parser = parse_known_args_and_warn(parser, other_args)
if not ns_parser:
return ""
if not ns_parser.name:
webbrowser.open("https://stockanalysis.com/etf/")
return ""
if ns_parser.name.upper() in etf_symbols:
webbrowser.open(f"https://stockanalysis.com/etf/{ns_parser.name.lower()}")
else:
print("ETF symbol not available")
return ""
except Exception as e:
print(e, "\n")
return ""
def name_search(other_args: List[str]):
@@ -100,7 +135,7 @@ def etf_overview(other_args: List[str]):
if not ns_parser:
return ""
if ns_parser.name not in etf_symbols:
if ns_parser.name.upper() not in etf_symbols:
print("ETF symbol not available")
return ""
r1 = requests.get(f"https://stockanalysis.com/etf/{ns_parser.name}")

View File

@@ -3,7 +3,7 @@ aiohttp==3.7.4.post0; python_version >= "3.6"
alpaca-trade-api==1.2.1
alpha-vantage==2.3.1
ansiwrap==0.8.4; python_version >= "3.6"
appdirs==1.4.4; python_full_version >= "3.6.2" and python_version >= "3.6"
appdirs==1.4.4; python_version >= "3.6"
appnope==0.1.2; platform_system == "Darwin" and python_version >= "3.6" and sys_platform == "darwin"
argon2-cffi==20.1.0; python_version >= "3.6"
astunparse==1.6.3
@@ -12,17 +12,16 @@ async-timeout==3.0.1; python_full_version >= "3.5.3" and python_version >= "3.6"
attrs==21.2.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
backcall==0.2.0; python_version >= "3.6"
beautifulsoup4==4.9.3; python_version >= "3.5"
black==21.5b1; python_full_version >= "3.6.2"
black==21.5b1; python_version >= "3.6"
bleach==3.3.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
bpemb==0.3.3; python_version >= "3.6"
bs4==0.0.1
bt==0.2.9; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.6.0")
cached-property==1.5.2; python_version < "3.8" and python_version >= "3.6"
cachetools==4.2.2; python_version >= "3.5" and python_version < "4.0" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0")
certifi==2020.12.5; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0"
cffi==1.14.5; implementation_name == "pypy" and python_version >= "3.6"
chardet==4.0.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
click==8.0.1; python_full_version >= "3.6.2" and python_version >= "3.6"
click==8.0.0; python_version >= "3.6" and python_full_version >= "3.6.0"
cloudpickle==1.6.0; python_version >= "3.6"
cmdstanpy==0.4.0
colorama==0.4.4; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0")
@@ -40,7 +39,7 @@ defusedxml==0.7.1; python_version >= "3.6" and python_full_version < "3.0.0" or
degiro-connector==0.1.0; python_version >= "3.6"
deprecated==1.2.12; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6"
detecta==0.0.5; python_version >= "3.6"
ecos==2.0.7.post1; python_full_version >= "3.6.1" and python_full_version < "4.0.0" and python_version >= "3.6"
ecos==2.0.7.post1; python_full_version >= "3.6.1" and python_full_version < "4.0.0" and python_version >= "3.5"
entrypoints==0.3; python_version >= "3.6"
ephem==3.7.7.1; python_version >= "2.7" and python_version < "4"
fbprophet==0.6
@@ -51,17 +50,17 @@ finvizfinance==0.9.8; python_version >= "3.5"
flair==0.7; python_version >= "3.6"
flatbuffers==1.12
fredapi==0.4.3
ftfy==6.0.3; python_version >= "3.6"
ftfy==6.0.1; python_version >= "3.6"
fundamentalanalysis==0.2.9
future==0.18.2; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6"
gast==0.4.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0"
gast==0.3.3; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0"
gdown==3.13.0; python_version >= "3.6"
gensim==3.8.2; python_version >= "3.6"
google-auth-oauthlib==0.4.4; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.2.0" and python_version >= "3.6"
google-auth==1.30.1; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6"
google-auth==1.30.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6"
google-pasta==0.2.0
grpcio==1.34.0
h5py==3.1.0; python_version >= "3.6"
grpcio==1.34.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.2.0" and python_version >= "3.6"
h5py==3.1.0
hijri-converter==2.1.1; python_version >= "3.6"
holidays==0.10.5.2
hyperopt==0.2.5; python_version >= "3.6"
@@ -76,7 +75,7 @@ ipywidgets==7.6.3
iso8601==0.1.14
janome==0.4.1; python_version >= "3.6"
jedi==0.18.0; python_version >= "3.6"
jinja2==3.0.1; python_version >= "3.6"
jinja2==3.0.0; python_version >= "3.6"
joblib==1.0.1; python_version >= "3.6" and python_full_version >= "3.6.0"
jsonschema==3.2.0; python_version >= "3.6"
jupyter-client==6.2.0; python_full_version >= "3.6.1" and python_version >= "3.6"
@@ -96,13 +95,13 @@ markdown==3.3.4; python_version >= "3.6" and python_full_version < "3.0.0" or py
markupsafe==2.0.1; python_version >= "3.6"
matplotlib==3.3.4; python_version >= "3.6"
mistune==0.8.4; python_version >= "3.6"
more-itertools==8.8.0; python_version >= "3.5"
more-itertools==8.7.0; python_version >= "3.5"
mpld3==0.3; python_version >= "3.6"
mplfinance==0.12.7a17
msgpack==1.0.2
multidict==5.1.0; python_version >= "3.6"
multitasking==0.0.9
mypy-extensions==0.4.3; python_full_version >= "3.6.2" and python_version >= "3.6"
mypy-extensions==0.4.3; python_version >= "3.6"
nbclient==0.5.3; python_full_version >= "3.6.1" and python_version >= "3.6"
nbconvert==6.0.7; python_version >= "3.6"
nbformat==5.1.3; python_full_version >= "3.6.1" and python_version >= "3.6"
@@ -115,7 +114,7 @@ oauthlib==3.1.0; python_version >= "2.7" and python_full_version < "3.0.0" or py
onetimepass==1.0.1; python_version >= "3.6"
opt-einsum==3.3.0; python_version >= "3.5"
orjson==3.5.2; python_version >= "3.6"
osqp==0.6.2.post0; python_full_version >= "3.6.1" and python_full_version < "4.0.0" and python_version >= "3.6"
osqp==0.6.2.post0; python_full_version >= "3.6.1" and python_full_version < "4.0.0" and python_version >= "3.5"
overrides==3.1.0; python_full_version >= "3.6.1" and python_full_version < "4.0.0" and python_version >= "3.6"
packaging==20.9; python_full_version >= "3.6.0" and python_version >= "3.6" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6")
pandas-datareader==0.9.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6"
@@ -124,7 +123,7 @@ pandas==1.1.5; python_full_version >= "3.6.1"
pandocfilters==1.4.3; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6"
papermill==2.3.3; python_version >= "3.6"
parso==0.8.2; python_version >= "3.6"
pathspec==0.8.1; python_full_version >= "3.6.2" and python_version >= "3.6"
pathspec==0.8.1; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
patsy==0.5.1; python_version >= "3.6"
pexpect==4.8.0; sys_platform != "win32" and python_version >= "3.6"
pickleshare==0.7.5; python_version >= "3.6"
@@ -136,7 +135,7 @@ prawcore==2.0.0; python_version >= "3.6" and python_version < "4.0"
prettytable==2.1.0; python_version >= "3.6"
prometheus-client==0.10.1; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6"
prompt-toolkit==3.0.18; python_full_version >= "3.6.1"
protobuf==3.17.1; python_full_version >= "3.6.0" and python_version >= "3.6" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.2.0")
protobuf==3.17.0; python_full_version >= "3.6.0" and python_version >= "3.6" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.2.0")
psaw==0.0.12; python_version >= "3"
ptyprocess==0.7.0; os_name != "nt" and python_version >= "3.6" and sys_platform != "win32"
py==1.10.0; python_version >= "3.6" and python_full_version < "3.0.0" and implementation_name == "pypy" or implementation_name == "pypy" and python_version >= "3.6" and python_full_version >= "3.4.0"
@@ -162,12 +161,11 @@ python-dateutil==2.8.1; python_full_version >= "3.6.1" and python_version >= "3.
python-dotenv==0.17.1; python_version >= "3"
pytrends==4.7.3
pytz==2021.1; python_full_version >= "3.6.1" and python_version >= "3.5" and python_version < "4"
pyupgrade==2.18.2; python_full_version >= "3.6.1"
pywin32==300; sys_platform == "win32" and python_version >= "3.6"
pywinpty==1.1.1; os_name == "nt" and python_version >= "3.6"
pywinpty==1.1.0; os_name == "nt" and python_version >= "3.6"
pyyaml==5.4.1; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6"
pyzmq==22.0.3; python_full_version >= "3.6.1" and python_version >= "3.6"
qdldl==0.1.5.post0; python_full_version >= "3.6.1" and python_full_version < "4.0.0" and python_version >= "3.6"
qdldl==0.1.5.post0; python_full_version >= "3.6.1" and python_full_version < "4.0.0" and python_version >= "3.5"
qtconsole==5.1.0; python_version >= "3.6"
qtpy==1.9.0; python_version >= "3.6"
quandl==3.6.1; python_version >= "3.5"
@@ -182,7 +180,7 @@ sacremoses==0.0.45; python_full_version >= "3.6.0" and python_version >= "3.6"
scikit-learn==0.24.2; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6"
scipy==1.5.4; python_version >= "3.6"
screeninfo==0.6.7
scs==2.1.3; python_full_version >= "3.6.1" and python_full_version < "4.0.0" and python_version >= "3.6"
scs==2.1.3; python_full_version >= "3.6.1" and python_full_version < "4.0.0" and python_version >= "3.5"
seaborn==0.11.1; python_version >= "3.6"
segtok==1.5.10; python_version >= "3.6"
selenium==3.141.0
@@ -207,17 +205,16 @@ testpath==0.5.0; python_version >= "3.6"
textwrap3==0.9.2; python_version >= "3.6"
threadpoolctl==2.1.0; python_version >= "3.6"
timeseries-cv==0.1.4; python_version >= "3.6" and python_version < "4.0"
tokenize-rt==4.1.0; python_full_version >= "3.6.1"
tokenizers==0.9.3; python_full_version >= "3.6.0" and python_version >= "3.6"
toml==0.10.2; python_full_version >= "3.6.2" and python_version >= "3.6"
toml==0.10.2; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.6"
torch==1.7.1; python_full_version >= "3.6.2"
tornado==6.1; python_full_version >= "3.6.1" and python_version >= "3.6"
tqdm==4.61.0; python_full_version >= "3.6.0" and python_version >= "3.6" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6")
tqdm==4.60.0; python_full_version >= "3.6.0" and python_version >= "3.6" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6")
tradingview-ta==3.2.3; python_version >= "3.5"
traitlets==4.3.3; python_full_version >= "3.6.1" and python_version >= "3.6"
transformers==3.5.1; python_full_version >= "3.6.0"
typed-ast==1.4.3; python_version < "3.8" and python_full_version >= "3.6.2" and python_version >= "3.6"
typing-extensions==3.7.4.3; python_version < "3.8" and python_full_version >= "3.6.2" and python_version >= "3.6"
typed-ast==1.4.3; python_version >= "3.6"
typing-extensions==3.7.4.3; python_full_version >= "3.6.2" and python_version >= "3.6" and python_version < "3.8"
tzlocal==2.1; python_version >= "3.5"
ujson==4.0.2; python_version >= "3.6"
update-checker==0.18.0; python_version >= "3.6" and python_version < "4.0"