Skip to content

Unofficial Python client for interacting with the TradeStation APIs.

Notifications You must be signed in to change notification settings

santarsierilorenzo/tradestation-python-client

Repository files navigation

tradestation-python-client

Python Requests PyTest Docker ThreadPoolExecutor Thread Safety

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

About

Unofficial Python client for interacting with the TradeStation APIs.

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages