Skip to main content

UnofficialPython SDK for the ProjectX Gateway API

Project description

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 Tests PyPI version Python Version PyPI Downloads License: 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

from projectx_sdk import ProjectXClient, OrderType, OrderSide

# Initialize with API key
client = ProjectXClient(
    username="your_username",
    api_key="your_api_key",
    environment="topstepx"  # Or another supported environment
)

# Get all active accounts
accounts = client.accounts.search(only_active_accounts=True)
account_id = accounts[0].id if accounts else None

if account_id:
    # Search for contracts
    contracts = client.contracts.search(search_text="NQ", live=False)

    if contracts:
        contract_id = contracts[0].id

        # Place a market order
        order = 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 updates
        def on_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:

Platform SDK Key Tested
Alpha Ticks alphaticks
Blue Guardian blueguardian
Blusky blusky
E8X e8x
Funding Futures fundingfutures
The Futures Desk futuresdesk
Futures Elite futureselite
FXIFY Futures fxifyfutures
GoatFunded goatfunded
TickTickTrader tickticktrader
TopOneFutures toponefutures
TopstepX topstepx
TX3Funding tx3funding

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.

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

projectx_sdk-0.2.22.tar.gz (42.4 kB view details)

Uploaded Source

Built Distribution

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

projectx_sdk-0.2.22-py3-none-any.whl (40.4 kB view details)

Uploaded Python 3

File details

Details for the file projectx_sdk-0.2.22.tar.gz.

File metadata

  • Download URL: projectx_sdk-0.2.22.tar.gz
  • Upload date:
  • Size: 42.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.0

File hashes

Hashes for projectx_sdk-0.2.22.tar.gz
Algorithm Hash digest
SHA256 0d7e2c810f57b9b84a19f8adf595f0a10c6f369878e16b67e55e68cbc45c1089
MD5 a9d8c8239c4b3532a0dd3652338e8bc1
BLAKE2b-256 5642671f9f59f37e4822b514d75e927e14b7417eb37f8131c8351ae40ddc3b3e

See more details on using hashes here.

File details

Details for the file projectx_sdk-0.2.22-py3-none-any.whl.

File metadata

  • Download URL: projectx_sdk-0.2.22-py3-none-any.whl
  • Upload date:
  • Size: 40.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.0

File hashes

Hashes for projectx_sdk-0.2.22-py3-none-any.whl
Algorithm Hash digest
SHA256 44bdee39bb25cf6a657d7e255add67b3ac823746fec98379570d80a1619324c3
MD5 e2e452222e8066ee193b9c159d17af06
BLAKE2b-256 b6cc7508b9fe589ebd49c4fdc8425efb995b027851a7f2fc142a3eb3f9ed9ee9

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