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

Publicado el 29 sept 2023Actualizado el 22 may 2024Lectura de 10 min150

Aprende cómo puedes hacer trading spot usando las funciones de la biblioteca python-okx en un Jupyter Notebook.

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

CT-web-spottrading-howtoapi-1

Jupyter Notebook es una herramienta increíblemente potente y fácil de usar para el desarrollo en Python y el análisis de datos. Puedes ejecutar un servidor de Jupyter Notebook en Windows, Mac OS o Linux. Este tutorial proporciona una guía bastante completa sobre cómo poner en marcha un Jupyter Notebook.

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 comando pip install python-okx en el notebook o en un terminal (o a través del símbolo del sistema para Windows):

CT-web-spottrading-howtoapi-2

3. ¿Cómo puedo crear claves API?

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

    CT-web-trade-demo trading

    Abre la página de simulación de trading

  2. Ve a Cuenta > API para crear claves API

    CT-web-profile-API

    Abre API para crear claves API

  3. Crea claves API para las diferentes cuentas que puedas tener

    CT-web-API-create

    Selecciona Crear clave API

  4. Selecciona Trade en Permisos para el trading con la clave API

    CT-web-API-trade

    Selecciona Trade en Permisos

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

  6. Crea una instancia de variables de Python para guardar los detalles de tu API en el notebook 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 REST API. Lee nuestra guía para aprender cómo importar módulos OKX.

  • Trade

  • BlockTrading

  • Funding

  • Account

  • Convert

  • Earning

  • SubAccount

  • MarketData

  • PublicData

  • TradingData

  • Status

  • NDBroker

  • FDBroker

Para importar el módulo Trade, puedes ejecutar:

Python
1 import okx.Trade as Trade

Ahora ya puedes utilizar todas las funciones de python-okx!

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

Obtén más información sobre cómo acceder a nuestros datos de mercado y consulta el código a continuación.

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 consultar los pares de trading disponibles?

Obtén más información sobre cómo acceder a nuestros pares de trading disponibles y consulta el código que aparece a continuación.

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 consultar el saldo de mi cuenta?

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

Nota: Para el trading spot bajo "efectivo" tdMode, principalmente necesitas comprobar los parámetros cashBal, frozenBal para cada ccy bajo detalles, y el parámetro 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?

En nuestro sistema de cuenta unificada, hay cuatro modos de cuenta:

  • Cuenta simple

  • Cuenta de margen de moneda única

  • Cuenta de margen de multimoneda

  • Cuenta de margen de portafolio

Para comprender la diferencia entre los diferentes modos de cuenta y cómo configurar el modo de cuenta a través de la interfaz de usuario web, lee nuestra guía dedicada.

En el modo de margen o en el modo trade, el parámetro tdMode determina cómo se marginará tu posición, lo cual necesitas para configurar cada vez que realizas una nueva orden.

Para trading spot en el modo de cuenta de margen simple o de moneda única, configura tdMode='cash'.

Para trading spot con margen multimoneda o en modo de cuenta de margen de portafolio, configura tdMode = 'cross'.

A continuación encontrarás una explicación breve sobre cómo averiguar en qué modo está configurada tu cuenta.

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

Para más información sobre cómo averiguar en qué modo está configurada tu cuenta actual, lee nuestra guía dedicada e introduce 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 colocar órdenes spot en el modo de margen simple / moneda única?

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

Para obtener más información sobre cómo colocar una orden límite en una cuenta de margen en modo simple o de moneda única, por favor 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 colocar una orden de mercado?

Para obtener más información sobre cómo colocar una orden de mercado en una cuenta de margen simple o de moneda única, lee nuestra guía específica.

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

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 objetivo tgtCcy mientras hago trading 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 cotizada es USDT.

Por defecto, tgtCcy = quote_ccy para órdenes de compra, lo que significa que el sz que has especificado está en términos de la moneda de cotización. Mientras tanto, el valor por defecto de tgtCcy para las órdenes de venta es base_ccy, lo que significa que el sz que has especificado está en términos de la moneda base.

En el ejemplo siguiente, estás a punto de colocar 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 del cliente?

Al realizar una orden, puedes especificar tu propio identificador de orden de cliente especificando el parámetro clOrdId, que puede utilizarse posteriormente como identificador en lugar de ordId al llamar 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 información sobre una orden determinada?

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

11.1 Utilizando ordId

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

11.2 Utilizando clOrdId

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

12. ¿Cómo puedo cancelar una orden?

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

También puedes utilizar 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?

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

También puedes utilizar 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 más información sobre cómo 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 De los últimos 7 días

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

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

15.2 De los últimos 3 meses

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

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

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

Para más ejemplos, descarga el Jupyter Notebook completo aquí. Cualquier pregunta sobre nuestras API, puedes plantearlas en el canal de Telegram de soporte de la API de OKX.