Back to Ccxt

Example 1 :: Swap : fetch balance, open a position and close it using BBO price

wiki/examples/py/huobi-open-close-position-bbo.md

4.5.521.7 KB
Original Source
python
# -*- coding: utf-8 -*-

import asyncio
import os
from random import randint
import sys
from pprint import pprint


import ccxt.async_support as ccxt  # noqa: E402


print('CCXT Version:', ccxt.__version__)

exchange = ccxt.huobi({
   'apiKey': 'YOUR_API_KEY',
   'secret': 'YOUR_SECRET_KEY',
})

# Example 1 :: Swap : fetch balance, open a position and close it using BBO price
async def example_1():
   markets = await exchange.load_markets(True)

   # fetch swap balance
   balance = await exchange.fetch_balance()
   print(balance)

   # create market order and open position
   symbol = 'ADA/USDT:USDT'
   # type = 'opponent' means it will use BB0 (the best bid or offer on the Exchange) as the price, huobi does not support "market"
   # other types available are: opponent_fok, optimal_5, optimal_10, optimal_20, etc, etc
   # you can check all the types available in the docs: https://huobiapi.github.io/docs/usdt_swap/v1/en/#cross-place-an-order
   type = 'opponent' 
   side = 'buy'
   amount = 1
   price = None
   create_order = await exchange.create_order(symbol, type, side, amount, price)
   print('Create order id:', create_order['id'])

   # check opened position
   symbols = [ symbol ]
   positions = await exchange.fetch_positions(symbols)
   print(positions)

   # Close position by issuing a order in the opposite direction
   side = 'sell'
   params = {
       'reduceOnly': True
   }
   close_position_order = await exchange.createOrder(symbol, type, side, amount, price, params)
   print(close_position_order)
async def main():
   try:
       await example_1()
   except Exception as e:
       print(e)
   await exchange.close()
   

asyncio.run(main())