Skip to main content

IDEX v3 REST API python implementation

Project description

https://img.shields.io/pypi/v/python-idex.svg https://img.shields.io/pypi/l/python-idex.svg https://img.shields.io/travis/sammchardy/python-idex.svg https://img.shields.io/coveralls/sammchardy/python-idex.svg https://img.shields.io/pypi/wheel/python-idex.svg https://img.shields.io/pypi/pyversions/python-idex.svg

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

https://pypi.python.org/pypi/python-idex

Source code

https://github.com/sammchardy/python-idex

Documentation

https://python-idex.readthedocs.io/en/latest/

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.

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.

https://analytics-pixel.appspot.com/UA-111417213-1/github/python-idex?pixel

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

python-idex-3.0.0.tar.gz (22.3 kB view details)

Uploaded Source

Built Distribution

python_idex-3.0.0-py2.py3-none-any.whl (20.5 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file python-idex-3.0.0.tar.gz.

File metadata

  • Download URL: python-idex-3.0.0.tar.gz
  • Upload date:
  • Size: 22.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.9.10

File hashes

Hashes for python-idex-3.0.0.tar.gz
Algorithm Hash digest
SHA256 327f52de78d44f4fcc3c3600076193a346ea79b3acaa10b3f142f1b3569a674e
MD5 3d918b25fdee73ccce552134377dbdbc
BLAKE2b-256 38cbd222dc4e04964ba4808712b85627b3067eecb259713be7dd48931daa34b2

See more details on using hashes here.

File details

Details for the file python_idex-3.0.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for python_idex-3.0.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 04f37de36391f992164323bc7fecdcef6a2b4560dfb8f6f153f2e2ca7c48542c
MD5 92d3a702440b8c487b0038785beb058f
BLAKE2b-256 5f0882ed185ffc794b392bd262733711e7f4d61ea6ba7e7f9c43a8716d3e9903

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page