- Notifications
You must be signed in to change notification settings - Fork27
Simple Questrade API wrapper for Python
License
jborchma/qtrade
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
This is a very basic Python 3.8+ wrapper for theQuestrade API, a Canadian low cost broker.
This package is available viaPyPI and can be installed via the command
pip install qtrade
For an overview of the package API, please take a look at thedocs. The main class of the package is calledQuestrade
and houses most of the functionality provided by the package. Below are a few examples for possible use cases.
The central class can be initialized via
fromqtradeimportQuestradeqtrade=Questrade(access_code='<access_code>')
where<access_code>
is the token that one gets from the Questrade API portal. It is calledaccess_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:1234refresh_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, thecurrent 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 fortickers that are supported by Questrade.
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 theQuestrade API description.
In addition, the Questrade API gives access to account information about the accounts connected tothe 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.) ofan account in a certain time frame via
activities=qtrade.get_account_activities(123456,'2018-08-01','2018-08-16')
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 viapython -m pytest
. This project usespre-commit
andblack
,flake8
andisort
which takes care of automatic code formatting and linting. When setting up the developmentenvironment, runpre-commit install
to set up the hook. This will run all the linting automatically whencommitting code changes.
I am in no way affiliated with Questrade and using this API wrapper is licensed via the MIT license.
About
Simple Questrade API wrapper for Python