Theodore Aptekarev e1b6022b9c Global plot styles (#1228)
* Add default stylesheets

* Add terminal style helper class and global style initialization in cfg

* Style comments and docstrings

* Load rich terminal theme from config file

* Add application chart styles to candle charts

* Add todos

* Remove explicit color setting for some ta charts

* Add user styles folder to gitignore

* Update default stylesheets

* Add matplotlib font manager support

* Add matplotlib font manager support

* Update docstrings and default style

* Update stocks candle chart formatting (return fig to style title)

* Style common ta overlap view

* Make up and down market colors a part of the style helper

* Update stylesheets

* Style common ta volume view

* Style common ta momentum view

* Style common ta trend indicators view

* Style common ta volatility view

* Style common ta volume view

* Style common ta custom indicators view

* Fix styling bugs and remove the obvious time x lablel

* Style charts in the covid menu

* Set legend position to upper left in the mpl stylesheet

* Add mpl_rcparams configs for parameters not covered by stylesheets

* Remove font configuration files

* Update style class utility functions

* Implement passing external axes and style utility usage in ema & stoch

* Add theme watermark and output helpers

* Rename style to theme

* Update helper usage in ta/ma and ta/stoch

* Update style to theme in sample menus

* Style forex (#1305)

* Make tight layout optional 'cause mplfinance doesn't support it

* Apply global style to the forex menu

* Update code layout in oanda view and black

* Style common TA (#1315)

* Make tight layout optional 'cause mplfinance doesn't support it

* Apply global style to the forex menu

* Add linewidth to theme for use in mpf's addplots

* Add vwap to the stocks notebook api

* Update common/ta overlap to follow charting style

* Apply style on TerminalStyle init

* Enable infrastructure for excluding non-trading days from plots

* Update notebook api to include there and resolve bandit warning

* Update ta/common/overlap to exclude non-trading days

* Enable external ax, style and non-trading days in common/ta/momentum

* Enable external ax, style and non-trading days in common/ta/trend

* Update vwap to the argument naming convention

* Enable external ax, style and non-trading days in common/ta/volatility

* Enable external ax, style and non-trading days in common/ta/volume

* Enable external ax, style and non-trading days in common/ta/custom

* Fix controller tests

* Forgot to disable rewriting of the cassettes ...

* Fix controller errors that came up because a merge conflict

* Fix price label position on fib

* Fix line having wrong x values in fib

Co-authored-by: Colin Delahunty <72827203+colin99d@users.noreply.github.com>

* Style economy (#1308)

* Began converting

* Added alphavan_view

* Added CNN View

* Updated nasdaq view, fixed glitch

* Added fred

* Refactored URL

* Theo's requested changes

* Updated docstrings

* Updated tests

* Fixed pylint

* Fixed tests

* Theo changes

* Econ Fix

* Refactor chart style for Crypto context (#1306)

* Remove mock for gff

* Mock visualize_output helper function

* Refactor

* Fix plot helper

* Update legend loc

* Refactor mplfinance candle plot

* Fix errors in the helper function

* Fix binbook having the wrong call_ function name

* Remove hardcoded style params

* Resolve kwargs future warning from pandas

* Remove warnings import

Co-authored-by: Theodore Aptekarev <aptekarev@gmail.com>

* funds + custom (#1311)

* funds + custom

* cleanup cleanup everybody everywhere

* Fix external axes conditional and a typo

Co-authored-by: Theodore Aptekarev <aptekarev@gmail.com>

* Add external axes mode to covid charts (#1328)

* Add portfolio menu plots (#1318)

* Portfolio view plots (commenting out report stuff)

* PA Menu broken.  Commenting out and fix tests

* portfolio optimization

* comment out commented api line

* Add notes on disabling the pa submenu

Co-authored-by: Theodore Aptekarev <aptekarev@gmail.com>

* Plot updates in common BA (#1335)

* Add external axes support to common/ba/finbrain

* Add external axes support to common/ba/twitter

* Add external axes support to common/ba/google

* Add external axes support to common/ba/sentimentinvestor

* Add sentimentinvestor to the notebooks API

* Fix tests

* Etf refactor (#1323)

* Refactored no ETF

* Fixed gtff import

* Fixed tests

* Fix pie chart style

* Refactored etf/candle

* Added pylint fix

* Fixed tests

* Update candle chart layout

* Update etf controller test

* Remove strange binary file

Co-authored-by: Theodore Aptekarev <aptekarev@gmail.com>

* Expose ETF candle function in the notebooks API

* Common BA and Common QA charts update (#1342)

* Add external axes support to common/ba/finbrain

* Add external axes support to common/ba/twitter

* Add external axes support to common/ba/google

* Add external axes support to common/ba/sentimentinvestor

* Add sentimentinvestor to the notebooks API

* Fix tests

* Update stylesheet files

* Refactor charts for common/qa

* Update the forgotten line plot

* Update tests

* Add missing arg to a docstring

* Remove scientific notation

* Black imports

Co-authored-by: Minh Hoang <nminh.hoang1023@gmail.com>

* Options refactor (#1324)

* Fixed alphaquery_view

* finished options

* Fixed pylint

* Fixed tests

* Fixed tests

* Fixed tests

* update yfinance

* Tradier + Chartexchange

* change mocks from gtff to theme.visualize output

* tests

Co-authored-by: Theodore Aptekarev <aptekarev@gmail.com>
Co-authored-by: james <jmaslek11@gmail.com>

* Refactor Stocks menu (#1325)

* Fix backtesting menu

* Refactor comparison analysis

* Refactor Dark pool shorts

* Refactor rest of menu

* Fix test

* Fix tests failing

* Fix tests fail

* Fix test failing

* Remove record mode=none to record new output

* Rewrite test output

* Rewrite test outputs

* Adding more rewritten test output

* Mock plt.show

* Mock missing plt.show

* Missing @pytest.mark.vcr

* Updating tests : common/behavioural_analysis/finbrain

* Improve notebooks API coverage for CA and DPS

* Silence annoying flake8 warning

Co-authored-by: Chavithra PARANA <chavithra@gmail.com>
Co-authored-by: Theodore Aptekarev <aptekarev@gmail.com>

* Charts update for common/pred (#1344)

* Add external axes support to common/ba/finbrain

* Add external axes support to common/ba/twitter

* Add external axes support to common/ba/google

* Add external axes support to common/ba/sentimentinvestor

* Add sentimentinvestor to the notebooks API

* Fix tests

* Update stylesheet files

* Refactor charts for common/qa

* Update the forgotten line plot

* Update tests

* Add missing arg to a docstring

* Style pred helper and controllers

* Update ETS plot

* Update plots in KNN and pred helper

* Update plot and pretty table for arima

* Update plot for common/pred/regression

* Refactor mc_view

* Fix linting

* Fix mypy

* Move plot title to the axis level to make more vertical space

Co-authored-by: Minh Hoang <nminh.hoang1023@gmail.com>
Co-authored-by: jmaslek <jmaslek11@gmail.com>

* linter

* Update common/ba test data

* Change etf candle to match stock candle

* try updating sia test

Co-authored-by: Colin Delahunty <72827203+colin99d@users.noreply.github.com>
Co-authored-by: jmaslek <jmaslek11@gmail.com>
Co-authored-by: minhhoang1023 <40023817+minhhoang1023@users.noreply.github.com>
Co-authored-by: Minh Hoang <nminh.hoang1023@gmail.com>
Co-authored-by: Chavithra PARANA <chavithra@gmail.com>
2022-02-11 20:33:16 -05:00
2022-01-27 11:56:53 -05:00
2022-02-10 12:06:58 -05:00
2022-01-19 10:45:56 +00:00
2022-02-11 20:33:16 -05:00
2022-02-11 20:33:16 -05:00
2022-02-10 09:39:35 -05:00
2022-02-11 20:33:16 -05:00
2022-01-07 16:22:24 +00:00
2021-04-30 01:24:08 +03:00
2021-12-30 12:22:21 +00:00
2022-01-23 17:48:21 -05:00
2021-02-24 01:24:26 +00:00
2021-12-24 00:56:19 +00:00
2021-11-09 17:08:43 +00:00
2022-02-10 10:20:51 +00:00
2021-11-19 19:11:08 +03:00

Stargazers Forks Contributors MIT License

Issues Bugs Open Bugs Closed

Build Status Documentation Status GitHub release Code style: black TODOs

Discord Shield Twitter


Logo

Gamestonk Terminal 🚀

honest work

Investment research for everyone.
≪ ROADMAP   ·   FEATURES »

Report Bug · Suggest Improvement · Request Feature

Table of Contents

  1. About The Project
  2. Getting Started
  3. Contributing
  4. License
  5. Disclaimer
  6. Contacts
  7. Acknowledgments

About The Project

How it started:

Gamestonk Terminal is an awesome stock and crypto market terminal that has been developed for fun, while I saw my GME shares tanking. But hey, I like the stock 💎🙌.

How it's going:

Gamestonk Terminal provides a modern Python-based integrated environment for investment research, that allows an average joe retail trader to leverage state-of-the-art Data Science and Machine Learning technologies.

As a modern Python-based environment, GamestonkTerminal opens access to numerous Python data libraries in Data Science (Pandas, Numpy, Scipy, Jupyter), Machine Learning (Pytorch, Tensorflow, Sklearn, Flair), and Data Acquisition (Beautiful Soup, and numerous third-party APIs).

Getting Started

There are currently two main options to install the terminal:

  • using Docker: recommended if you just want to use the terminal
  • using Python: recommended if you want to develop new features
  • using the Docker web UI: recommended if you want to deploy the web UI for users to access over your LAN

First step in both options is to star the project

Github starts

If you want to install the terminal using Python ignore the Docker section and jump to Local Install - Anaconda and Python section.

Docker Installation

  1. Make sure docker desktop is installed. Install links can be found here. To confirm that your docker desktop is downloaded and running, open a command prompt or terminal and enter docker info. If you get the following you are not running the docker desktop:

    Server:
    ERROR: Cannot connect to the Docker daemon at unix:///var/run/docker.sock.
    Is the docker daemon running?
    

    Open the docker desktop app in this case.

  2. Download the latest docker image.

    docker pull ghcr.io/gamestonkterminal/gst-poetry:latest
    

    Upon running this the first time, you should see the various layers downloading (note the random series of letters numbers will vary). The first time this is run, it will take a few minutes. Subsequent updates will be much faster, as the changes will be in the MB instead of GB.

    Screen Shot 2021-09-08 at 10 41 08 AM

    Once the download is complete, confirm that the image has been created by doing docker images. You should see something similar to

    REPOSITORY                             TAG       IMAGE ID       CREATED        SIZE
    ghcr.io/gamestonkterminal/gst-poetry   latest    e2bbeebcc73c   42 hours ago   2.02GB
    
  3. Run a container

    You are now ready to run the terminal (every time you want to use the terminal you need to run this command):

    docker run -it --rm ghcr.io/gamestonkterminal/gst-poetry:latest

    This will open up the terminal in your command prompt or terminal. Note that this has provided now environment file, so you will not be able to view plots or use keys at this stage.

    At this point, you should be able to use the majority of the features using Docker. To read more on adding the environment keys and how to configure your X-server to show plots, hop over to the Advanced Docker Setup.

Local Install - Anaconda and Python

This installation type supports both Windows and Unix systems (Linux + MacOS). However, on Windows it can become messy so it is easier to use Windows Subsystem Linux (WSL) on this operating system. WSL emulates a Linux machine inside your Windows system.

If you are using macOS or other Linux operating systems you can jump the next section Installing the terminal.

Web UI - Docker

  1. Ensure Docker is installed.
  2. Navigate to the location of the Dockerfile in the repo (cd gamestonk_terminal_web)
  3. Ensure the launcher is executable with chmod +x ./launch
  4. Launch it with ./launch. If you get a permission denied error, do sudo ./launch instead
  5. Once it's launched, you will be able to access it by going to http://host-ip:8080 in a browser, or http://localhost:8080 if you are running it on your local machine.

For API keys, create the setenv file if it doesn't already exist. It will automatically get created on the first launch, and won't get committed to Git because it is on the .gitignore. Set the API keys as explained here. Once you've put the API keys in that file, re-run the launch script, and it will use your API keys. There are a few things that still don't work, and you can see what works and what doesn't here.

Installing WSL (Only for Windows users)

If you are using Windows you first you need to install WSL. The process is simple and a tutorial can be found here. Once you reach the section Update Linux on that tutorial, you should have a linux machine installed and can proceed to the next steps.

Since WSL installation is headless by default (i.e., you have only access to a terminal running a linux distribution) you need some extra steps to be able to visualize the charts produced by the terminal (more detailed tutorial here):

  1. Dynamically export the DISPLAY environment variable in WSL2:

    # add to the end of ~/.bashrc file
    export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0
    # source the file
    source ~/.bashrc
    
  2. Download and install VcXsrv

  3. When running the program is important to check "Disable access control"

After this, VcXsrv should be running successfully and we can proceed to terminal installation.

Although we extremely recommend using WSL to run the terminal on windows, if you don't want or can't for some reason, you can try install the terminal directly on Windows without WSL. If you'd like to see a video recording of the installation on Windows without WSL, @JohnnyDankseed has made one available here.

Installing the terminal

These steps are common in all operating systems (Windows with or without WSL, MacOS or Linux).

This project supports Python 3.7, 3.8 and 3.9.

Our current recommendation is to use this project with Anaconda's Python distribution - either full Anaconda3 Latest or Miniconda3 Latest. Several features in this project utilize Machine Learning. Machine Learning Python dependencies are optional. If you decided to add Machine Learning features at a later point, you will likely have better user experience with Anaconda's Python distribution.

  1. Install Anaconda (It's on the AUR as anaconda or miniconda3!)

  2. Install git

    conda install -c anaconda git
    
  3. Clone the Project

    • Via HTTPS: git clone https://github.com/GamestonkTerminal/GamestonkTerminal.git
    • via SSH: git clone git@github.com:GamestonkTerminal/GamestonkTerminal.git
  4. Navigate into the project's folder

    cd GamestonkTerminal/
    
  5. Create Environment

    You can name the environment whatever you want. Although you could use names such as: welikethestock, thisistheway or diamondhands, we recommend something simple and intuitive like gst. This is because this name will be used from now onwards.

    conda env create -n gst --file build/conda/conda-3-8-env.yaml
    
  6. Activate the virtual environment

    conda activate gst
    

    Note: At the end, you can deactivate it with: conda deactivate.

  7. Install poetry dependencies

    poetry install
    

    If you are having trouble with Poetry (e.g. on a Windows system), simply install requirements.txt with pip

    pip install -r requirements.txt
    
  8. You're ready to Gamestonk it!

    python terminal.py
    
  9. (Windows - Optional and only if you are not using WSL) Speeding up opening process in the future

    After you've installed Gamestonk Terminal, you'll find a file named "Gamestonk Terminal.bat". You can use this file to open Gamestonk Terminal quicker. This file can be moved to your desktop if you'd like. If you run into issues while trying to run the batch file. If you run into issues with the batch files, edit the file and check to see if the directories match up. This file assumes you used the default directories when installing.

  10. Jupyter Lab (Optional. Early alpha). User the Terminal from Jupyter Lab

    You can install Jupyter Lab extensions that help you manage settings and launch the terminal in a JL bash console using the commands in the jupyterlab/README.md

NOTE: When you close the terminal and re-open it, the only command you need to re-call is conda activate gst before you call python terminal.py again.

TROUBLESHOOT: If you are having troubles to install, check our newest troubleshoot page. You can also reach for help on our discord.

Advanced User Install - Machine Learning

If you are an advanced user and use other Python distributions, we have several requirements.txt documents that you can pick from to download project dependencies.

If you are using conda instead of build/conda/conda-3-8-env.yaml configuration file in Step 5, use build/conda/conda-3-8-env-full.

Note: The libraries specified in the requirements.txt file have been tested and work for the purpose of this project, however, these may be older versions. Hence, it is recommended for the user to set up a virtual python environment prior to installing these. This allows to keep dependencies required by different projects in separate places.

If you would like to use optional Machine Learning features:

ENABLE_PREDICT = os.getenv("GTFF_ENABLE_PREDICT") or True
  • Install optional ML features dependencies:
poetry install -E prediction

Update Terminal

The terminal is constantly being updated with new features and bug fixes, hence, for your terminal to be update, you can run:

git pull

to get the latest changes.

If this fails due to the fact that you had modified some python files, and there's a conflict with the updates, you can use:

git stash

Then, re-run poetry install or pip install -r requirements.txt to get any new dependencies.

Once installation is finished, you're ready to gamestonk.

If you stashed your changes previously, you can un-stash them with:

git stash pop

API Keys

The project is build around several different API calls, whether it is to access historical data or financials. The table below shows the ones where a key is necessary. The environment variable names are shown explicitly, for the variable name in the code one just needs to remove the "GT_", this can be found in config_terminal.py.

Website Environment Variables
Alpha Vantage GT_API_KEY_ALPHAVANTAGE
Binance GT_API_BINANCE_KEY
GT_API_BINANCE_SECRET
CoinMarketCap GT_API_CMC_KEY
DEGIRO GT_DG_USERNAME
GT_DG_PASSWORD
GT_DG_TOTP_SECRET
FRED GT_API_FRED_KEY
Financial Modeling Prep GT_API_KEY_FINANCIALMODELINGPREP
Finhub GT_API_FINNHUB_KEY
News GT_API_NEWS_TOKEN
Oanda GT_OANDA_TOKEN
GT_OANDA_ACCOUNT
Polygon GT_API_POLYGON_KEY
Quandl GT_API_KEY_QUANDL
Reddit GT_API_REDDIT_CLIENT_ID
GT_API_REDDIT_CLIENT_SECRET
GT_API_REDDIT_USERNAME
GT_API_REDDIT_USER_AGENT
GT_API_REDDIT_PASSWORD
SentimentInvestor GT_API_SENTIMENTINVESTOR_TOKEN
GT_API_SENTIMENTINVESTOR_KEY
Tradier GT_TRADIER_TOKEN
Twitter GT_API_TWITTER_KEY
GT_API_TWITTER_SECRET_KEY
GT_API_TWITTER_BEARER_TOKEN
Coinbase GT_API_COINBASE_KEY
GT_API_COINBASE_SECRET
GT_API_COINBASE_PASS_PHRASE
Whale Alert GT_API_WHALE_ALERT_KEY
Ethplorer GT_API_ETHPLORER_KEY
Cryptopanic GT_API_CRYPTO_PANIC_KEY
Glassnode GT_API_GLASSNODE_KEY
Coinglass GT_API_COINGLASS_KEY
BitQuery GT_API_BITQUERY_KEY

Example:

export GT_API_REDDIT_USERNAME=SexyYear

Environment variables can also be set in a .env file at the top of the repo. This file is ignored by git so your API keys will stay secret. The above example stored in .env would be:

GT_API_REDDIT_USERNAME=SexyYear

Note that the GT_API_REDDIT_USER_AGENT is the name of the script that you set when obtained the Reddit API key. Note that it is not necessary to have a valid Alpha Vantage key to get daily OHLC values.

Contributing

There are 3 main ways of contributing to this project.

For a 1h coding session where the architecture of the repo is explained while a new feature is added, check https://www.youtube.com/watch?v=9BMI9cleTTg.

Become a Contributor 🦍

Recommended if you bought the dip, and the share price keeps dipping. You may as well keep yourself busy while stonks go up.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Install the pre-commit hooks by running: pre-commit install. Any time you commit a change, linters will be run automatically. On changes, you will have to re-commit.
  4. Commit your Changes (git commit -m 'Add some AmazingFeature')
  5. Push to your Branch (git push origin feature/AmazingFeature)
  6. Open a Pull Request

Become a Karen 🤷

Recommended if you adopted a strategy of buying high and selling low.

We are interested in your view on what sort of features would make you buy even higher and selling even lower.

Also, if somehow you're sitting in several mils due to this terminal, don't forget to report a bug so that the team can fix, and keep the old ways.

Join the 🙌 💎 Gang

If red is your favorite color, and you never sell for a loss.

Welcome to the club, and feel free to support the developers behind this amazing open-source project.

License

Distributed under the MIT License. See LICENSE for more information.

Disclaimer

"A few things I am not. I am not a cat. I am not an institutional investor, nor am I a hedge fund. I do not have clients and I do not provide personalized investment advice for fees or commissions." DFV

Trading in financial instruments involves high risks including the risk of losing some, or all, of your investment amount, and may not be suitable for all investors. Before deciding to trade in financial instrument you should be fully informed of the risks and costs associated with trading the financial markets, carefully consider your investment objectives, level of experience, and risk appetite, and seek professional advice where needed. The data contained in GST is not necessarily accurate. GST and any provider of the data contained in this website will not accept liability for any loss or damage as a result of your trading, or your reliance on the information displayed.

Contacts

Didier Rodrigues Lopes - dro.lopes@campus.fct.unl.pt

Artem Veremy - artem@veremey.net

James Maslek - jmaslek11@gmail.com

Feel free to share loss porn, memes or any questions at:

Contributors

Acknowledgments

Description
Mirror of OpenBB-finance/OpenBB (OpenBB Platform + CLI), pulled every 8h
Readme Apache-2.0 3.2 GiB
Languages
Python 100%