mirror of
https://github.com/discountry/ritmex-bot.git
synced 2026-09-09 08:18:07 +00:00
121 lines
3.7 KiB
Markdown
121 lines
3.7 KiB
Markdown
# EdgeX Python SDK Examples
|
|
|
|
This directory contains examples demonstrating how to use the EdgeX Python SDK.
|
|
|
|
## Prerequisites
|
|
|
|
Before running the examples, make sure you have installed the EdgeX Python SDK:
|
|
|
|
```bash
|
|
pip install edgex-python-sdk
|
|
```
|
|
|
|
Or, if you're working with the source code:
|
|
|
|
```bash
|
|
cd edgex-python-sdk
|
|
pip install -e .
|
|
```
|
|
|
|
## Environment Variables
|
|
|
|
The examples use the following environment variables:
|
|
|
|
- `EDGEX_BASE_URL`: Base URL for HTTP API endpoints (e.g., "https://pro.edgex.exchange" for production, "https://testnet.edgex.exchange" for testnet)
|
|
- `EDGEX_WS_URL`: Base URL for WebSocket endpoints (e.g., "wss://quote.edgex.exchange" for production, "wss://quote-testnet.edgex.exchange" for testnet)
|
|
- `EDGEX_ACCOUNT_ID`: Your account ID
|
|
- `EDGEX_STARK_PRIVATE_KEY`: Your stark private key
|
|
|
|
You can set these variables in your environment or create a `.env` file in the examples directory:
|
|
|
|
```
|
|
EDGEX_BASE_URL=https://pro.edgex.exchange # Use https://testnet.edgex.exchange for testnet
|
|
EDGEX_WS_URL=wss://quote.edgex.exchange # Use wss://quote-testnet.edgex.exchange for testnet
|
|
EDGEX_ACCOUNT_ID=12345
|
|
EDGEX_STARK_PRIVATE_KEY=your-stark-private-key
|
|
```
|
|
|
|
## Examples
|
|
|
|
### Basic Usage
|
|
|
|
The `basic_usage.py` example demonstrates the basic functionality of the SDK:
|
|
|
|
- Creating a client
|
|
- Getting server time and metadata
|
|
- Getting account assets and positions
|
|
- Getting market data (K-lines, order book depth)
|
|
- Creating orders (commented out to avoid actual order creation)
|
|
- Using WebSockets for real-time data
|
|
|
|
To run the example:
|
|
|
|
```bash
|
|
python basic_usage.py
|
|
```
|
|
|
|
### Advanced Usage
|
|
|
|
The `advanced_usage.py` example demonstrates more advanced features of the SDK:
|
|
|
|
- Order management (creating and canceling orders)
|
|
- WebSocket integration with proper handlers
|
|
- Error handling
|
|
- Pagination
|
|
- Using a trader class to encapsulate functionality
|
|
|
|
To run the example:
|
|
|
|
```bash
|
|
python advanced_usage.py
|
|
```
|
|
|
|
## Contract IDs
|
|
|
|
EdgeX uses numeric contract IDs instead of symbol-based identifiers. Here are some common contract mappings:
|
|
|
|
| Contract ID | Symbol | Tick Size |
|
|
|-------------|---------------|-----------|
|
|
| 10000001 | BTCUSDT | 0.1 |
|
|
| 10000002 | ETHUSDT | 0.01 |
|
|
| 10000003 | SOLUSDT | 0.01 |
|
|
| 10000004 | BNBUSDT | 0.01 |
|
|
|
|
To get the complete list of available contracts:
|
|
|
|
```python
|
|
metadata = await client.get_metadata()
|
|
contracts = metadata.get("data", {}).get("contractList", [])
|
|
for contract in contracts:
|
|
print(f"ID: {contract['contractId']} - {contract['contractName']}")
|
|
```
|
|
|
|
## Notes
|
|
|
|
- The examples include order creation code that is commented out to avoid creating actual orders. Uncomment this code if you want to create real orders.
|
|
- The WebSocket examples will run for a short time and then disconnect. Adjust the sleep time if you want to receive more updates.
|
|
- The examples use asyncio for asynchronous operations. Make sure you're using Python 3.7 or later.
|
|
- All examples use numeric contract IDs (e.g., "10000001" for BTCUSDT) as required by the EdgeX API.
|
|
- For order book depth queries, valid limit values are 15 or 200.
|
|
|
|
## Customization
|
|
|
|
Feel free to modify the examples to suit your needs. Some ideas:
|
|
|
|
- Implement a trading strategy
|
|
- Add more error handling
|
|
- Implement a command-line interface
|
|
- Create a web interface using a framework like Flask or FastAPI
|
|
- Add logging to a file
|
|
- Add more sophisticated order management
|
|
|
|
## Troubleshooting
|
|
|
|
If you encounter issues:
|
|
|
|
1. Check that your environment variables are set correctly
|
|
2. Verify that you have the latest version of the SDK
|
|
3. Check the EdgeX API documentation for any changes
|
|
4. Look for error messages in the console output
|
|
5. Try with a smaller subset of functionality to isolate the issue
|