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

Publicado el 29 sept 2023Actualizado el 18 ago 2024Lectura de 9 min276

Descubre cómo hacer trading en spot de manera sencilla llamando a las funciones de la python-okx biblioteca en un Jupyter Notebook.

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

CT-web-spottrading-howtoapi-1

El Jupyter Notebook es una herramienta increíblemente potente y fácil de usar para el desarrollo de Python y el análisis de datos. Puedes ejecutar un servidor de Jupyter Notebook en Windows, Mac OS o Linux. <a href="https://www.dataquest.io/blog/jupyter-notebook-tutorial/"tutorial/" title="">Este tutorial</a> proporciona una guía muy completa sobre cómo conseguir un libro de notas de Jupyter en funcionamiento.

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

Una vez que empieces a ejecutar un Jupyter Notebook, puedes instalar el paquete Python-okx simplemente ejecutando el <code>pip instalar python-okx</code> en el notebook o en una terminal (o a través de una orden de comandos para 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 > Demo trading para crear claves de API para fines de prueba

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

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

  4. Selecciona Trade en la Permisos para operar con la clave de API

  5. Ahora tienes acceso a tu clave de API, tu clave secreta y tu frase de contraseña. Guárdalas en un lugar seguro!

  6. Instanticia las variables de Python para guardar los detalles de tu API en el ordenador para su uso posterior

    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 API REST. Lee nuestra guía para aprender cómo importar los módulos de OKX.

  • Operar

  • Trading en bloque

  • Fondos

  • Cuenta

  • Convertir

  • Ganancia

  • Subcuenta

  • MarketData

  • Datos públicos

  • Datos de trading

  • Estado

  • NDBroker

  • FDBroker

Para importar el módulo Operar, puedes ejecutar:

Python
1 import okx.Trade as Trade

Ahora ya puedes utilizar todas las funciones disponibles en python-okx!

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

Más información en cómo acceder a nuestros datos de mercado y consultar 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 leer los pares de operaciones disponibles?

Más información en cómo leer nuestros pares de operaciones disponibles y consultar el código que aparece más abajo.

Python
1   import okx.PublicData as PublicData
2
3   flag = "1"  # live trading: 0, demo trading: 1
4
5   PublicDataAPI = PublicData.PublicAPI(flag=flag)
6
7    result = PublicDataAPI.get_instruments(
8        instType="SPOT"
9    )
10  print(result)

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

Para obtener más información sobre cómo leer el saldo de tu cuenta, lee nuestra guía específica.

Nota: Para el trading en spot en "cash" tdMode, deberás consultar principalmente el cashBal, frozenBal parámetros para cada ccy en detalles, y el totalEq parámetro.

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 spot y de futuros

  • Modo de margen multidivisa

  • Modo de margen del portafolio

Para entender la diferencia entre los diferentes modos de cuenta y cómo configurar el modo de cuenta a través de la IU web, lee nuestra guía específica.

En el modo de margen o modo de trading, el parámetro <code>tdMode</code> determina cómo va a quedar con margen tu posición, que debes establecer cada vez que cursas una nueva orden.

Para operaciones spot en spot o spot y futuros, configura <code>tdMode</code>='cash'.

Para las operaciones spot en el modo de margen multidivisa o margen del portafolio, configura tdMode.

A continuación encontrarás una rápida explicación de cómo calcular en qué modo se configura tu cuenta actual.

9. ¿Cómo puedo calcular cómo se configura mi cuenta actual?

Para obtener más información en cómo se explica en qué modo se configura tu cuenta actual como, lee nuestra guía dedicada y escribe 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 cursar órdenes spot en spot/spot y en el modo de futuros?

10.1 ¿Cómo puedo cursar una orden límite?

Para obtener más información en cómo cursar una orden limitada en un modo spot o spot y futuros, lee nuestra guía dedicada.

He aquí 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"])

10.2 ¿Cómo puedo cursar una orden a mercado?

Para obtener más información en cómo cursar una orden a mercado en un modo spot o spot y futuros, lee nuestra guía dedicada.

He aquí un ejemplo de compra de BTC que vale 100 USD al precio de mercado actual.

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 utilizar el parámetro de moneda destino tgtCcy mientras hago operaciones spot?

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

De manera predeterminada, tgtCcy para órdenes de compra, lo que significa que el sz que especificaste corresponde a la moneda de cotización. Mientras tanto, el valor predeterminado de tgtCcy para las órdenes de venta es base_ccy, lo que significa que el sz especificado corresponde a la moneda base.

En el ejemplo que aparece a continuación, estás a punto de cursar una orden a 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 ID de orden del cliente clOrdId?

Cuando cursas una orden, puedes especificar tu propio ID de orden del cliente especificando el parámetro clOrdId, que más tarde puede utilizarse como identificador en lugar de ordId cuando se llama a un punto final de cancelación, modificación o recuperación de órdenes.

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 determinada orden?

Para obtener más información en cómo puedo obtener información sobre una determinada orden, lee nuestra guía específica.

11.1 Usar ordId

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

11.2 Usar clOrdId

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

12. ¿Cómo cancelo una orden?

Para obtener más información en cómo cancelar una orden, lee nuestra guía específica.

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 corregir una orden?

Para obtener más información sobre cómo corregir una orden, lee 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?

Para obtener más información en cómo puedes acceder a la lista de órdenes abiertas, lee nuestra guía específica.

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

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

15.1 En los últimos 7 días

Para obtener más información sobre cómo acceder al historial de órdenes de los últimos 7 días, lee nuestra guía dedicada.

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

15.2 En los últimos 3 meses

Para obtener más información sobre cómo acceder al historial de órdenes de los últimos 3 meses, lee nuestra guía dedicada.

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

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

Para más ejemplos, descarga el libro de notas de Jupyter completo aquí.

Si tienes alguna pregunta sobre nuestras API, puedes unirte a nuestra comunidad de API y crear una comunidad con ellos en la comunidad.