tradestation-python-client
Fully Thread-Safe · Streaming Ready
Built for TradeStation APIs
tradestation-python-client is an unofficial Python client for interacting with the TradeStation APIs.
📦 Installation (PyPI Package)
Install the package from PyPI:
pip install tradestation-python-client
Import it in your project:
from tradestation_python_client import TradeStationClient, TokenManager
This repository also includes a full development environment, but the primary distribution is a PyPI-installable client.
⚠️ Disclaimer
tradestation-python-client is an unofficial Python client for interacting with the TradeStation REST and Streaming APIs.
It is not affiliated with or endorsed by TradeStation Technologies, Inc.
- By default, it connects to the SIM (sandbox) environment.
- To use LIVE trading:
TokenManager(use_sim=False)
🧩 Overview
This client provides:
- OAuth2 token handling with automatic refresh and thread safety
- REST endpoints (Brokerage & Market Data)
- Real-time streaming support
- Parallel historical data fetching
- Clean, modern Python interface
🔧 Core Modules
| Module | Description |
|---|---|
auth.py |
OAuth2 token management with thread-safe refresh |
base_client.py |
HTTP layer with retries, timeouts, and error handling |
client.py |
Main high-level interface for all services |
endpoints/broker.py |
Orders, balances, positions, accounts |
endpoints/mkt_data.py |
Historical + intraday market data |
endpoints/ts_stream.py |
Real-time streaming (bars, quotes, orders, etc.) |
🧪 Testing
Run the test suite:
pytest -v
Includes tests for:
- Token refresh
- Thread safety
- Streaming message parsing
- HTTP error handling
🧰 Development Environment (DevContainer + Docker)
For contributors or advanced users, the repository provides a fully reproducible development environment.
Prerequisites
- Docker Desktop
- Visual Studio Code
- Dev Containers extension
Setup
1️⃣ Clone the repository
git clone https://github.com/santarsierilorenzo/tradestation-python-client
cd tradestation-python-client
2️⃣ Open inside DevContainer
Ctrl + Shift + P → Dev Containers: Rebuild Without Cache and Reopen
3️⃣ Configure environment variables
Create a .env file:
TS_CLIENT_ID=your_client_id
TS_CLIENT_SECRET=your_client_secret
TS_REFRESH_TOKEN=your_refresh_token
4️⃣ Run an example
python -m examples.get_market_data_example
⚙️ Usage Examples
Basic Initialization
from tradestation_python_client import TradeStationClient, TokenManager
token_manager = TokenManager(use_sim=True)
ts = TradeStationClient(token_manager=token_manager)
Parallel Historical Data Fetching
data = ts.market_data.get_bars_between(
symbol="AAPL",
first_date="2025-01-01",
last_date="2025-02-01",
unit="Minute",
interval=5,
max_workers=10
)
Real-Time Streaming
ts.market_data_stream.stream_bars(
symbol="AAPL",
interval=1,
unit="Minute",
on_message=lambda msg: print(msg)
)
🪪 License
MIT © 2025 — Developed with ❤️ by Lorenzo Santarsieri
Metadata
Release files for tradestation-python-client 0.1.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tradestation_python_client-0.1.7.tar.gz | 18.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tradestation_python_client-0.1.7-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 38.4 kB
Release files / tradestation_python_client-0.1.7.tar.gz
| Download URL | tradestation_python_client-0.1.7.tar.gz |
|---|---|
| Size | 18.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
341b799e2e4d63d2ad9be31e47f70b183b5360c81c2df705764c05238d85a8c4
|
|
BLAKE2b-256 checksum How to use checksums |
7cacf5292288b5f8a9c05cabcab57650f5596e023aadb45b7ce2595836454f2f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.19
|
Release files / tradestation_python_client-0.1.7-py3-none-any.whl
| Download URL | tradestation_python_client-0.1.7-py3-none-any.whl |
|---|---|
| Size | 20.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
89c2f7fad8d89ffac1fed8219b34f5121d10240d0a103bc57f4ec5b8105569cd
|
|
BLAKE2b-256 checksum How to use checksums |
779af8f4a4cd869f186894bf06548418ebacf64dd87669c53b534a63696c9d53
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.19
|