Skip to content

Repository files navigation

ProjectX Gateway API SDK for Python (Unofficial)

A Python client library for the ProjectX Gateway API, enabling proprietary trading firms and evaluation providers to interact with ProjectX's trading platform programmatically.

DISCLAIMER: This is an unofficial SDK. The author(s) of this package are not affiliated with or endorsed by ProjectX. This is a community-developed tool to interact with their public API.

Python TestsPyPI versionPython VersionPyPI DownloadsLicense: MIT

Features

  • Complete coverage of ProjectX Gateway API endpoints
  • Support for real-time WebSocket updates via SignalR
  • Pythonic interface with proper error handling
  • Support for all ProjectX environments

Installation

pip install projectx-sdk

For development, you can install with additional tools:

pip install projectx-sdk[dev]

Quick Start

fromprojectx_sdkimportProjectXClient, OrderType, OrderSide# Initialize with API keyclient=ProjectXClient(
username="your_username",
api_key="your_api_key",
environment="topstepx"# Or another supported environment
)
# Get all active accountsaccounts=client.accounts.search(only_active_accounts=True)
account_id=accounts[0].idifaccountselseNoneifaccount_id:
# Search for contractscontracts=client.contracts.search(search_text="NQ", live=False)
ifcontracts:
contract_id=contracts[0].id# Place a market orderorder=client.orders.place(
account_id=account_id,
contract_id=contract_id,
type=OrderType.MARKET,
side=OrderSide.BUY,
size=1
)
print(f"Order placed with ID: {order['orderId']}")
# Set up real-time order updatesdefon_order_update(order_data):
print(f"Order update: {order_data}")
client.realtime.user.subscribe_orders(account_id, callback=on_order_update)
client.realtime.start()

Environment Support

The SDK supports all ProjectX environments:

PlatformSDK KeyTested
Alpha Ticksalphaticks
Blue Guardianblueguardian
Bluskyblusky
E8Xe8x
Funding Futuresfundingfutures
The Futures Deskfuturesdesk
Futures Elitefutureselite
FXIFY Futuresfxifyfutures
GoatFundedgoatfunded
TickTickTradertickticktrader
TopOneFuturestoponefutures
TopstepXtopstepx
TX3Fundingtx3funding

Note: ✅ = Tested and confirmed working, ❓ = Not officially tested yet

API Components

The SDK is organized into several components:

  • Client: The main entry point that provides access to all API functionality
  • Authentication: Handles authentication and token management
  • Endpoints: Service modules for each API endpoint (accounts, contracts, orders, etc.)
  • Models: Data classes for API entities (account, contract, order, etc.)
  • Real-time: WebSocket functionality for real-time updates

Development

Setup

  1. Clone the repository:

    git clone https://github.com/ChristianJStarr/projectx-sdk-python.git
    cd projectx-sdk-python
  2. Create a virtual environment:

    python -m venv venv
    source venv/bin/activate # On Windows: venv\Scripts\activate
  3. Install dependencies:

    pip install -e ".[dev]"
  4. Set up pre-commit hooks:

    pre-commit install

Running Tests

Run the entire test suite:

pytest

Run with coverage:

pytest --cov=projectx_sdk

Run specific test files:

pytest tests/test_client.py

Code Quality Tools

  • Black: Code formatter

    black projectx_sdk tests
  • isort: Import sorter

    isort projectx_sdk tests
  • Flake8: Linter

    flake8 projectx_sdk tests
  • mypy: Type checker

    mypy projectx_sdk

Building and Publishing

Build the package:

python -m build

Check the distribution:

twine check dist/*

Upload to PyPI:

twine upload dist/*

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Run the tests to ensure they pass
  4. Commit your changes (git commit -m 'Add some amazing feature')
  5. Push to the branch (git push origin feature/amazing-feature)
  6. Open a Pull Request

Please remember that this is an unofficial SDK and not affiliated with ProjectX.

Documentation

For detailed information about the ProjectX API that this unofficial SDK interacts with, please visit the ProjectX API Documentation.

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

Unofficial Python SDK for the ProjectX Gateway API | Complete trading platform integration | Real-time data streaming | MIT License

Topics

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages