¿Cómo puedo hacer spot trading con Jupyter Notebook?

Publicado el 29 sept 2023Actualizado el 18 dic 2024lectura de 10 min281

Descubre cómo tradear spot de manera sencilla con las funciones de la biblioteca de python-okx en Jupyter Notebook.

1. ¿Cómo puedo ejecutar fragmentos de código Python en Jupyter Notebook?

CT-web-spottrading-howtoapi-1

Jupyter Notebook es una herramienta increíblemente potente y fácil de usar para el desarrollo y el análisis de datos en Python. Puedes ejecutar un servidor de Jupyter Notebook en Windows, Mac OS o Linux. En este tutorial encontrarás una guía muy completa para poner Jupyter Notebook en funcionamiento.

2. ¿Cómo puedo instalar el paquete python-okx?

Cuando tengas Jupyter Notebook en funcionamiento, podrás instalar sencillamente el paquete python-okx ejecutando el pip de instalación de python-okx en la computadora o en el terminal (o mediante orden de comando en Windows):

CT-web-spottrading-howtoapi-2

3. ¿Cómo puedo crear claves de API?

  1. Después de iniciar sesión en OKX, ve a Trade> Simulación de trading para crear claves de API de prueba

    CT-web-trade-demo trading

    Cómo abrir la página de Simulación de trading

  2. Ve a Cuenta > API para crear claves de API

    CT-web-profile-API

    Abre la opción API para crear claves de API

  3. Crea claves de API para las diferentes cuentas principales o subcuentas que tengas

    CT-web-API-create

    Pulsa Crear clave de API

  4. Selecciona la opción Trade en el apartado Permisos para operar con la clave de API

    CT-web-API-trade

    Cómo seleccionar la opción Trade en el apartado Permisos

  5. Y ya tienes acceso a tu clave de API, tu clave secreta y tu frase de contraseña. ¡Guárdalas de forma segura!

  6. Guarda los detalles de tu API en tu computadora usando variables de Phyton para usarlas más tarde

    Python
    1 api_key = "xxxxx"
    2 secret_key = "xxxxx"
    3 passphrase = "xxxxxx"

4. ¿Cómo puedo importar módulos de OKX?

En python-okx hay varios módulos basados en nuestros módulos de REST API. Consulta nuestra guía para aprender cómo importar módulos de OKX.

  • Trade

  • BlockTrading

  • Funding

  • Account

  • Convert

  • Earning

  • SubAccount

  • MarketData

  • PublicData

  • TradingData

  • Status

  • NDBroker

  • FDBroker

Para importar el módulo Trade, ejecuta el siguiente comando:

Python
1 import okx.Trade as Trade

¡Ya puedes usar las completas herramientas disponibles en python-okx!

5. ¿Cómo puedo acceder a los datos de mercado de OKX?

Encuentra aquí la información sobre cómo acceder a nuestros datos de mercado y consulta el código que aparece más abajo.

Python
1  import okx.MarketData as MarketData
2  flag = "1"  # live trading: 0, demo trading: 1
3  marketDataAPI = MarketData.MarketAPI(flag=flag)
4  result = marketDataAPI.get_tickers(instType="SPOT")print(result)

6. ¿Cómo puedo comprobar los pares de trading disponibles?

Encuentra aquí la información sobre cómo consultar los pares de trading disponibles y consulta el código que aparece más abajo.

Python
1   import okx.Account as Account
2
3   # API initialization
4   apikey = "YOUR_API_KEY"
5   secretkey = "YOUR_SECRET_KEY"
6   passphrase = "YOUR_PASSPHRASE"
7    
8   flag = "1" # Production trading: 0, Demo trading: 1
9    
10  accountAPI = Account.AccountAPI(apikey, secretkey, passphrase, False, flag)
11
12  result = accountAPI.get_instruments(instType="SPOT")
13  print(result)

7. ¿Cómo puedo consultar el saldo de mi cuenta?

En esta guía específica te explicamos cómo consultar el saldo de tu cuenta.

Nota: en el caso de trading spot en el modo "cash" tdMode necesitas comprobar principalmente los párametros cashBal y frozenBal para cada ccy bajo los parámetros detailsy totalEq.

Python
1   import okx.Account as Account
2   flag = "1"  # live trading: 0, demo trading: 1
3
4   accountAPI = Account.AccountAPI(api_key, secret_key, passphrase, False, flag)
5
6   result = accountAPI.get_account_balance()
7   print(result)

8. ¿Cómo puedo acceder a los cuatro modos de cuenta diferentes?

En nuestro sistema de cuentas unificadas, existen cuatro modos de cuenta:

  • Modo spot

  • Modo de spot y futuros

  • Margen multidivisa

  • Modo de margen de portafolio

Para entender la diferencia entre los diferentes modos de cuenta y cómo configurarlos desde la interfaz de usuario del sitio web, lee nuestra guía específica.

En el modo de margen o modo de trading, el parámetro tdMode determina cómo se aplicará margen a tu posición y necesitarás establecerlo cada vez que crees una nueva orden.

Para trading spot en los modos spot o de spot y futuros, establece tdMode='cash'.

Para trading spot en los modos multimoneda o de margen de portafolio, establece tdMode = 'cross'.

Más adelante encontrar una breve explicación sobre cómo averiguar en qué modo se encuentra actualmente tu cuenta.

9. ¿Cómo puedo comprobar en qué modo está configurada mi cuenta?

Puedes encontrar la información detallada sobre cómo comprobar en qué modo está configurada tu cuenta en nuestra guía dedicada y usando el parámetro acctLv.

Python
1 import okx.Account as Account
2
3 flag = "1"  # live trading: 0, demo trading: 1
4 
5 accountAPI = Account.AccountAPI(api_key, secret_key, passphrase, False, flag)
6 result = accountAPI.get_account_config()
7 print(result)
8 
9 if result['code'] == "0":
10     acctLv = result["data"][0]["acctLv"]
11     if acctLv == "1":
12         print("Simple mode")
13     elif acctLv == "2":
14        print("Single-currency margin mode")
15     elif acctLv == "3":
16        print("Multi-currency margin mode")
17     elif acctLv == "4":
18        print("Portfolio margin mode")

10. ¿Cómo puedo crear órdenes spot en los modos spot y de spot y futuros?

¿Cómo puedo crear una orden límite?

Puedes encontrar la información detallada sobre cómo crear una orden límite en el modo spot y el modo de spot y futuros en nuestra guía dedicada.

Esto es un ejemplo de compra de 0,01 BTC al precio de 19 000 USDT.

Python
1    # limit order
2    result = tradeAPI.place_order(
3            instId="BTC-USDT",
4            tdMode="cash",
5            side="buy",
6            ordType="limit",
7            px="19000",
8            sz="0.01"
9    )
10   print(result)
11
12   if result["code"] == "0":
13          print("Successful order request,order_id = ",result["data"][0]["ordId"])
14   else:
 15         print("Unsuccessful order request,error_code = ",result["data"][0]["sCode"], ", Error_message = ", result["data"][0]["sMsg"])

¿Cómo puedo crear una orden de mercado?

Puedes encontrar la información detallada sobre cómo crear una orden a mercado en el modo spot y el modo de spot y futuros en nuestra guía dedicada.

Este es un ejemplo de compra de BTC por valor de 100 USD al precio de mercado vigente.

Python
1   #  market order
2   result = tradeAPI.place_order(
3           instId="BTC-USDT",
4           tdMode="cash",
5           side="buy",
6           ordType="market",
7           sz="100",
8   )
9   print(result)

10.3 ¿Cómo puedo usar el parámetro de moneda de destino tgtCcy al tradear spot?

En el trading spot el parámetro tgtCcy determina la unidad del parámetro de tamaño sz, que puede ser la moneda base o la moneda de cotización del par de trading. Por ejemplo, en el par BTC/USDT, la moneda base es BTC y la moneda de cotización es USDT.

Por defecto, tgtCcy = quote_ccy para órdenes de compra, lo que significa que el sz que especificaste está indicado en relación a la moneda de cotización. Entretanto, el valor por defecto de tgtCcy para las órdenes de venta es base_ccy, lo que significa que el sz que especificaste está indicado en relación a la moneda base.

En el ejemplo que aparece a continuación, estás a punto de crear una orden de mercado para comprar BTC por valor de 100 USD.

Python

  1   #  market order
  2   result = tradeAPI.place_order(
  3           instId="BTC-USDT",
  4           tdMode="cash",
  5           side="buy",
  6           ordType="market",
  7           sz="100",
  8           tgtCcy="quote_ccy" # this determines the unit of the sz parameter. 
  9   )
10   print(result)

10.4 ¿Cómo puedo utilizar el parámetro clOrdId de ID de orden cliente?

Cuando creas una orden, puedes ingresar tu propio ID de orden cliente con el parámetro clOrdId, que más tarde puede ser usado como identificador en lugar de usar ordId al solicitar la cancelación, la corrección o la recuperación de una orden.

Python
1    #  market order
2    result = tradeAPI.place_order(
3           instId="BTC-USDT",
4           tdMode="cash",
5           side="buy",
6           ordType="market",
7           sz="100",
8           clOrdId="003" # you can define your own client defined order ID
9    )
10  print(result)

11. ¿Cómo puedo obtener detalles sobre una orden concreta?

Puedes encontrar la información detallada sobre cómo obtener detalles sobre una orden concreta en nuestra guía dedicada.

11.1 Uso de ordId

Python
1 result = tradeAPI.get_order(instId="BTC-USDT", ordId="497819823594909696")
2 print(result)

11.2 Uso de clOrdId

Python
1 result = tradeAPI.get_order(instId="BTC-USDT", clOrdId="002")
2 print(result)

12. ¿Puedo cancelar una orden?

Puedes encontrar la información detallada sobre cómo cancelar una orden en nuestra guía dedicada.

También puedes usar clOrdId en lugar de ordId.

Python
1 result = tradeAPI.cancel_order(instId="BTC-USDT", ordId = "489093931993509888")
2 print(result)

13. ¿Cómo puedo modificar una orden?

Puedes encontrar la información detallada sobre cómo modificar una orden en nuestra guía dedicada.

También puedes usar clOrdId en lugar de ordId.

Python
1 result = tradeAPI.amend_order(
2     instId="BTC-USDT",
3     ordId="489103565508685824",
4     newSz="0.012"
5 )
6 print(result)

14. ¿Cómo puedo acceder a la lista de órdenes abiertas?

Puedes encontrar la información detallada sobre cómo acceder a la lista de órdenes abiertas en nuestra guía dedicada.

Python
1 result = tradeAPI.get_order_list()
2 print(result)

15. ¿Cómo puedo acceder al historial de órdenes?

15.1 De los últimos 7 días

Puedes encontrar la información detallada sobre cómo acceder al historial de órdenes de los últimos 7 días en nuestra guía dedicada.

Python
1 result = tradeAPI.get_orders_history(
2     instType="SPOT"
3 )
4 print(result)

15.2 De los últimos 3 meses

Puedes encontrar la información detallada sobre cómo acceder al historial de órdenes de los últimos 3 meses en nuestra guía dedicada.

Python
1 result = tradeAPI.get_orders_history_archive(
2     instType="SPOT"
3 )
4 print(result)

16.¿Cómo puedo ir aún más lejos con la API de OKX en Jupyter Notebook?

Puedes encontrar más ejemplos descargando la guía completa sobre Jupyter Notebook aquí.

Si tienes cualquier pregunta sobre nuestras API, puedes unirte a nuestra comunidad API y plantearlas en ella.