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.
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
-
Clone the repository:
git clone https://github.com/ChristianJStarr/projectx-sdk-python.git cd projectx-sdk-python
-
Create a virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies:
pip install -e ".[dev]"
-
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.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Run the tests to ensure they pass
- Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file projectx_sdk-0.2.13.tar.gz.
File metadata
- Download URL: projectx_sdk-0.2.13.tar.gz
- Upload date:
- Size: 39.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
05330e27d32cd441119eced008015a5f285a4a4e93fa73a092dcb41cca593207
|
|
| MD5 |
63b6a8263ca9182b60fde00c6f1e3cdc
|
|
| BLAKE2b-256 |
be4afec55891edd2735c801d2ab3c73b54a15befc976ad1d03fbee181cee01d3
|
File details
Details for the file projectx_sdk-0.2.13-py3-none-any.whl.
File metadata
- Download URL: projectx_sdk-0.2.13-py3-none-any.whl
- Upload date:
- Size: 38.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
526116fe1fa3b0ce67b74f12c2ae955fd4770ab229d00c8d1a45999b947ab433
|
|
| MD5 |
6442901457d73d0579e5ee4335ec66fc
|
|
| BLAKE2b-256 |
f340865de8e2dc37db4a88c9e970ffb0dc7630a840ab14056e0eae349e719fd8
|