Tu primera orden
Estimá comisiones, enviá una orden de compra y cancelala si es necesario.
Cuidado: Dinero real
Estas órdenes se ejecutan en tu cuenta real de IOL con dinero real. Probá primero con cantidades pequeñas y usá órdenes limit para controlar el precio de ejecución.
Antes de empezar
- Token de acceso válido
- Saldo disponible en tu cuenta (pesos o dólares según el activo)
- Conocer el símbolo, mercado y plazo del activo
Estimar comisiones (recomendado)
Antes de enviar la orden, consultá cuánto te va a costar incluyendo comisiones, IVA y derechos de mercado:
import requests
API_URL = "https://api.iolinversiones.com"
TOKEN = "tu_access_token"
headers = {"Authorization": f"Bearer {TOKEN}"}
# Estimar comisiones ANTES de enviar la orden
estimate = requests.post(
f"{API_URL}/broker/orders/estimate",
headers=headers,
json={
"symbol": "GGAL",
"market_id": "BCBA",
"side": "buy",
"order_type": "limit",
"limit_price": 1250.00,
"quantity": 100,
"term": "T0"
}
)
data = estimate.json()["data"]
print(f"Monto bruto: ${data['gross_amount']}")
print(f"Comisión: ${data['commission']}")
print(f"IVA: ${data['vat']}")
print(f"Derechos de mercado: ${data['market_fees']}")
print(f"Total a pagar: ${data['net_amount']}")Respuesta esperada:
{
"gross_amount": 125000.00, // 100 × $1250
"commission": 625.00, // 0.5% típico
"vat": 131.25, // 21% de comisión
"market_fees": 50.00,
"net_amount": 125806.25 // Total a pagar
}Enviar la orden
Ahora sí, enviá la orden de compra:
import requests
API_URL = "https://api.iolinversiones.com"
TOKEN = "tu_access_token"
headers = {"Authorization": f"Bearer {TOKEN}"}
# Enviar orden de compra
order = requests.post(
f"{API_URL}/broker/orders",
headers=headers,
json={
"symbol": "GGAL",
"market_id": "BCBA",
"side": "buy", # "buy" o "sell"
"order_type": "limit", # "limit" o "market"
"limit_price": 1250.00, # Solo para limit orders
"quantity": 100,
"term": "T0", # T0, T1, T2
"due_date": "2025-01-31" # Opcional: válida hasta
}
)
if order.status_code == 201:
data = order.json()["data"]
print(f"✅ Orden creada! ID: {data['order_id']}")
print(f" Estado: {data['status']}")
else:
error = order.json()["error"]
print(f"❌ Error: {error['message']}")Parámetros de la orden:
side"buy" para comprar, "sell" para venderorder_type"limit" (precio máximo/mínimo) o "market" (ejecuta al precio actual)term"T0" contado inmediato, "T1" 24hs, "T2" 48hsquantityCantidad de acciones/nominales. Debe ser múltiplo del lote mínimo.Cancelar orden (opcional)
Si la orden aún no se ejecutó, podés cancelarla:
import requests
API_URL = "https://api.iolinversiones.com"
TOKEN = "tu_access_token"
ORDER_ID = "12345" # El ID de la orden a cancelar
headers = {"Authorization": f"Bearer {TOKEN}"}
# Cancelar orden
cancel = requests.delete(
f"{API_URL}/broker/orders/{ORDER_ID}",
headers=headers
)
if cancel.status_code == 200:
print(f"✅ Orden {ORDER_ID} cancelada")
else:
error = cancel.json()["error"]
print(f"❌ Error: {error['message']}")Solo podés cancelar órdenes con estado "pending" o "in_progress". Las órdenes ejecutadas no se pueden revertir.
Estados de una orden
Enviada, esperando ejecución
Parcialmente ejecutada
Completamente ejecutada
Cancelada por el usuario
¡Felicitaciones!
Ya sabés consultar precios, recibir datos en tiempo real y operar programáticamente. Explorá la documentación completa para más opciones: