IDEX v3 REST API python implementation
Project description
This is an unofficial Python wrapper for the IDEX exchanges REST API v3. I am in no way affiliated with IDEX, use at your own risk.
- PyPi
- Source code
- Documentation
Features
Implementation of all REST endpoints
Liquidity endpoints
Deposit from main wallet to exchange wallet
Sandbox and faucet support
Async client support
Response exception handling
Notes
Using an API key increases rate limits.
Quick Start
Register an account with IDEX v3.
pip install python-idex
Synchronous Examples
# Unauthenticated
from idex import Client
client = Client()
# server time
time = client.get_server_time()
# get exchange_info
exchange_info = client.get_exchange()
# get assets
assets = client.get_assets()
# get markets
markets = client.get_markets()
# get market depth
depth = client.get_order_book(market='ETH-USDC')
# get liquidity pools
pools = client.get_liquidity_pools()
# Authenticated
api_key = '<api_key>'
address = '<address_string>'
private_key = '<wallet_private_key_string>'
wallet_address = '0x<wallet_address>'
client = Client(api_key, address, private_key)
# associate wallet to account
client.associate_wallet(wallet_address=wallet_address)
# deposit funds
client.deposit_funds(asset='MATIC', quantity=1.234)
# get your balances
balances = client.get_balances()
# get your open orders
orders = client.get_open_orders()
# create a market order
order = client.create_market_order(
market='ETH-USDC',
order_side=OrderSide.BUY,
quantity=1000
)
# create a limit order
order = client.create_limit_order(
market='ETH-USDC',
order_side=OrderSide.BUY,
quantity=1000,
price=2100,
)
Async Example
from idex import AsyncClient
async def main():
# Initialise the client
client = await AsyncClient.create()
# get currencies
currencies = await client.get_currencies()
# get market depth
depth = await client.get_order_book('ETH_SENT')
# get your balances
balances = await client.get_my_balances()
# get your open orders
orders = await client.get_my_open_orders('ETH_SENT')
# create a limit order
order = await client.create_order('SENT', 'ETH', '0.001', '10000')
# Authenticated
api_key = '<api_key>'
address = '<address_string>'
private_key = '<wallet_private_key_string>'
wallet_address = '0x<wallet_address>'
client = await AsyncClient.create(api_key, address, private_key)
# associate wallet to account
await client.associate_wallet(wallet_address=wallet_address)
# deposit funds
await client.deposit_funds(asset='MATIC', quantity=1.234)
# get your balances
balances = await client.get_balances()
# get your open orders
orders = await client.get_open_orders()
# create a market order
order = await client.create_market_order(
market='ETH-USDC',
order_side=OrderSide.BUY,
quantity=1000
)
# create a limit order
order = await client.create_limit_order(
market='ETH-USDC',
order_side=OrderSide.BUY,
quantity=1000,
price=2100,
)
if __name__ == "__main__":
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
Wallet
The examples above use the wallet private key when creating the Client to specify which wallet to interact with.
Most functions will have a wallet_address parameter to target a different wallet.
If a new wallet is needed for subsequent calls init_wallet can be used to change the internal wallet
… code:python
private_key = ‘<old_private_key>’ client = Client(api_key, address, private_key) client.init_wallet(private_key=’<new_wallet_private_key>’)
# this will fetch balance of the new wallet client.get_balance()
Contract function
Functions such as deposit_funds, contract_exit_wallet and contract_withdraw_exit interact with the Polygon blockchain.
Gas fee and price are attempted to be generated, but may fail. These values can be overridden by passing a TransactionOptions object to the calls.
… code:python
client = Client(api_key, address, private_key)
tx_options = TransactionOptions(gas=150000, gas_price=20000000000)
client.deposit_funds(asset=”USD”, quantity=1123, tx_options=tx_options)
Sandbox/Testnet
IDEX v3 supports the Mumbai testnet as a sandbox to test functionality.
Enable it by passing sandbox=True when creating the client
… code:python
client = Client(sandbox=True)
# or async
client = await AsyncClient.create(sandbox=True)
Read more about the Sandbox mode in the IDEX Sandbox docs.
Search reddit for a functioning faucet to receive MATIC.
For other tokens on the sandbox DIL, PIP, IDEX, USD they can be added using a contract function
… code:python
client = Client(sandbox=True)
tx_id = client.contract_testnet_faucet(asset=’DIL’) client.wait_for_transaction_receipt(tx_id)
tx_id = client.contract_testnet_faucet(asset=’PIP’) client.wait_for_transaction_receipt(tx_id)
tx_id = client.contract_testnet_faucet(asset=’IDEX’) client.wait_for_transaction_receipt(tx_id)
tx_id = client.contract_testnet_faucet(asset=’USD’) client.wait_for_transaction_receipt(tx_id)
Test Orders
All order functions allow for test orders to be sent, just set test=True when calling a test function
Stake your IDEX
Earn staking rewards on your idle IDEX tokens from IDEX trade fees while also contributing to the decentralization of IDEX and robustness of the platform.
Delegate them to everday-chicken node in the IDEX v3 delegate portal with one click.
Donate
If this library helped you out feel free to donate.
ETH: 0xD7a7fDdCfA687073d7cC93E9E51829a727f9fE70
IDEX: 0xD7a7fDdCfA687073d7cC93E9E51829a727f9fE70 (Polygon)
NEO: AVJB4ZgN7VgSUtArCt94y7ZYT6d5NDfpBo
LTC: LPC5vw9ajR1YndE1hYVeo3kJ9LdHjcRCUZ
BTC: 1Dknp6L6oRZrHDECRedihPzx2sSfmvEBys
Other Exchanges
If you use Binance check out my python-binance library.
If you use Binance Chain check out my python-binance-chain library.
If you use Kucoin check out my python-kucoin library.
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
Hashes for python_idex-3.0.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 04f37de36391f992164323bc7fecdcef6a2b4560dfb8f6f153f2e2ca7c48542c |
|
MD5 | 92d3a702440b8c487b0038785beb058f |
|
BLAKE2b-256 | 5f0882ed185ffc794b392bd262733711e7f4d61ea6ba7e7f9c43a8716d3e9903 |