Skip to main content

Questrade API wrapper for Python

Project description

Build Status

Qtrade

This is a very basic Python 3 wrapper for the Questrade API, a Canadian low cost broker.

Installation

This package is available via PyPI and can be installed via the command

pip install qtrade

Usage

For an overview of the package API, please take a look at the docs. The main class of the package is called Questrade and houses most of the functionality provided by the package. Below are a few examples for possible use cases.

Token management

The central class can be initialized via

from qtrade import Questrade

qtrade = Questrade(access_code='<access_code>')

where <access_code> is the token that one gets from the Questrade API portal. It is called access_code since this initial token is used to get the full token data that will include

{'access_token': <access_token>,
 'api_server': '<api_url>',
 'expires_in': 1234,
 'refresh_token': <refresh_token>,
 'token_type': 'Bearer'}

The first call initializes the class and the second call gets the full token.

Another way to initialize the class is to use a token yaml-file via:

qtrade = Questrade(token_yaml='<yaml_path>')

where the yaml-file would have the general form

access_token: <access_token>
api_server: <api_url>
expires_in: 1234
refresh_token: <refresh_token>
token_type: Bearer

If the token is expired, one can use

qtrade.refresh_access_token(from_yaml=True)

to refresh the access token using the saved refresh token.

Once the tokens are set correctly, I have currently added methods to get ticker quotes, the current status of all positions in any Questrade account that is associated with the tokens, any account activities such as trades and dividend payments as well as historical data for tickers that are supported by Questrade.

Basic functionality

There currently exists some basic functionality to get stock information via

aapl, amzn = qtrade.ticker_information(['AAPL', 'AMZN'])

and current stock quotes can be obtained via

aapl, amzn = qtrade.get_quote(['AAPL', 'AMZN'])

In addition, one can get historical stock quotes via

aapl_history = = qtrade.get_historical_data('AAPL', '2018-08-01', '2018-08-21','OneHour')

Here, the last input parameter is the interval between quotes. Another option could be 'OneDay'. For more options, see the Questrade API description.

Account information

In addition, the Questrade API gives access to account information about the accounts connected to the token. The accounts IDs can be accessed via

account_ids = qtrade.get_account_id()

By using the correct account ID, one can get the positions of the accounts via

positions = qtrade.get_account_positions(account_id=123456)

Finally, there exists a method to get all account activities (trades, dividends received, etc.) of an account in a certain time frame via

activities = qtrade.get_account_activities(123456, '2018-08-01', '2018-08-16')

Contributors

Contributions are always appreciated! For example:

  • open an issue for a missing feature or a bug
  • give feedback about existing functionality
  • make suggestions for improvements
  • submit a PR with a new feature (though reaching out would be appreciated)
  • etc.

There is a test suite that can be run via python -m pytest. This project uses pre-commit and black which takes care of automatic code formatting and linting. When setting up the development environment, run `pre-commit instal`` to set up the hook. This will run black automatically when committing code changes.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

qtrade-0.2.2.tar.gz (7.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

qtrade-0.2.2-py3-none-any.whl (8.5 kB view details)

Uploaded Python 3

File details

Details for the file qtrade-0.2.2.tar.gz.

File metadata

  • Download URL: qtrade-0.2.2.tar.gz
  • Upload date:
  • Size: 7.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.0.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.7.3 requests-toolbelt/0.8.0 tqdm/4.31.1 CPython/3.6.7

File hashes

Hashes for qtrade-0.2.2.tar.gz
Algorithm Hash digest
SHA256 e0b1cd594d827b0a8d78327dda401c884c4178a798389eeb6e0ec8a6a9a1c5c4
MD5 fa777ec72b4e949eb3f368a9f7268c5f
BLAKE2b-256 5900a685c5885edd0caa013d892e4cab8954a42af46d4d5692c7a5497b50260d

See more details on using hashes here.

File details

Details for the file qtrade-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: qtrade-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 8.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.0.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.7.3 requests-toolbelt/0.8.0 tqdm/4.31.1 CPython/3.6.7

File hashes

Hashes for qtrade-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5935946888fc04570d375923fea27693212c701ef7404cb5e52b8b53a6e7b69a
MD5 2666ae56c803ae0ab07e01f8d96bb48f
BLAKE2b-256 e8ce52d4972dde220ce3d31df87d821d1716470ec6954c236246ca37c6c0f6c2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page