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

Publicado el 29 sept 2023Actualizado el 24 abr 2024Lectura de 8 min133

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

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

```
api_key = "xxxxx"
secret_key = "xxxxx"
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:
1 import okx.Trade as Trade

```
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.

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)

```
import okx.MarketData as MarketData
flag = "1" # live trading: 0, demo trading: 1
marketDataAPI = MarketData.MarketAPI(flag=flag) 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.

```
import okx.PublicData as PublicData

flag = "1" # live trading: 0, demo trading: 1

PublicDataAPI = PublicData.PublicAPI(flag=flag)

result = PublicDataAPI.get_instruments(
instType="SPOT"
)
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.

```
import okx.Account as Account
flag = "1" # live trading: 0, demo trading: 1

accountAPI = Account.AccountAPI(api_key, secret_key, passphrase, False, flag)

result = accountAPI.get_account_balance()
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 .

```
import okx.Account as Account

flag = "1" # live trading: 0, demo trading: 1

accountAPI = Account.AccountAPI(api_key, secret_key, passphrase, False, flag) result = accountAPI.get_account_config()
print(result)

if result['code'] == "0":
acctLv = result["data"][0]["acctLv"]
if acctLv == "1":
print("Simple mode")
elif acctLv == "2":
print("Single-currency margin mode")
elif acctLv == "3":
print("Multi-currency margin mode")
elif acctLv == "4":
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.

```
# orden límite
result = tradeAPI.place_order(
instId="BTC-USDT",
tdMode="cash",
side="buy",
ordType="limit",
px="19000",
sz="0.01"
)
print(result)

if result["code"] == "0":
print("Successful order request,order_id = ",result["data"][0]["ordId"])
else:
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.

```
# orden de mercado
result = tradeAPI.place_order(
instId="BTC-USDT",
tdMode="cash",
side="buy",
ordType="market",
sz="100",
)
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.

```
# orden de mercado
result = tradeAPI.place_order(
instId="BTC-USDT",
tdMode="cash",
side="buy",
ordType="market",
sz="100",
tgtCcy="quote_ccy" # esto determina la unidad del parámetro sz.
)
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.

```
# orden de mercado
result = tradeAPI.place_order(
instId="BTC-USDT",
tdMode="cash",
side="buy",
ordType="market",
sz="100",
clOrdId="003" # puedes definir tu propio ID de orden definido por el cliente
)
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.

Utilizando ordId

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

Utilizando clOrdId

```
result = tradeAPI.get_order(instId="BTC-USDT", clOrdId="002")
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.

```
result = tradeAPI.cancel_order(instId="BTC-USDT", ordId = "489093931993509888")
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.

```
result = tradeAPI.amend_order(
instId="BTC-USDT",
ordId="489103565508685824",
newSz="0.012"
)
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.

```
result = tradeAPI.get_order_list()
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.

```
result = tradeAPI.get_orders_history(
instType="SPOT"
)
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.

```
result = tradeAPI.get_orders_history_archive(
instType="SPOT"
)
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.