# Api buy

**URL:** <https://community.deriv.com/t/api-buy/87794>\
**Category:** Developers\
**Created:** [January 14, 2025, 9:28am UTC](https://community.deriv.com/t/api-buy/87794 "2025-01-14T09:28:58Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![bossboy-anatron-1](https://avatars.discourse-cdn.com/v4/letter/b/97f17d/32.png) [@bossboy-anatron-1](https://community.deriv.com/u/bossboy-anatron-1)\
**Post date:** [January 14, 2025, 9:28am UTC](https://community.deriv.com/t/api-buy/87794/1 "2025-01-14T09:28:58Z")

</div>

Hola, estoy usando una cuenta demo y estoy tratando de hacer una compra con la API, pero me da este mensaje:

Conexión abierta. Autenticando…  
Autenticación exitosa. Solicitando propuesta…  
Error: Trading is not offered for this asset.  
Conexión cerrada  
False

Este es el código:

import json  
import websocket

# Configuración básica

APP\_ID = “123” # Reemplaza con tu App ID  
TOKEN = “123” # Token de autenticación proporcionado  
SYMBOL = “frxEURUSD” # Activo para operar  
CURRENCY = “EUR” # Moneda  
AMOUNT = 1 # Cantidad de la operación en USD

# URL del WebSocket

WS\_URL = f"wss://ws.binaryws.com/websockets/v3?app\_id={APP\_ID}"

# Función para manejar mensajes WebSocket

def on\_message(ws, message):  
data = json.loads(message)

```
# Manejar errores
if "error" in data:
    print(f"Error: {data['error']['message']}")
    ws.close()
    return

# Manejar respuesta de autenticación
if "authorize" in data:
    print("Autenticación exitosa. Solicitando propuesta...")
    ws.send(json.dumps({
        "proposal": 1,
        "amount": AMOUNT,
        "basis": "stake",
        "contract_type": "CALL", # Compra
        "currency": CURRENCY,
        "duration": 60, # Duración del contrato (en segundos)
        "duration_unit": "s",
        "symbol": SYMBOL
    }))

# Manejar respuesta de propuesta
elif "proposal" in data:
    print(f"Propuesta recibida: Precio del contrato {data['proposal']['ask_price']}")
    proposal_id = data["proposal"]["id"]

    # Enviar orden de compra
    print("Ejecutando compra...")
    ws.send(json.dumps({
        "buy": proposal_id,
        "price": data['proposal']['ask_price']
    }))

# Manejar respuesta de compra
elif "buy" in data:
    print(f"Compra exitosa. ID del contrato: {data['buy']['contract_id']}")
    ws.close()

```

# Función para manejar errores

def on\_error(ws, error):  
print(f"Error en WebSocket: {error}")

# Función para manejar cierre

def on\_close(ws, close\_status\_code, close\_msg):  
print(“Conexión cerrada”)

# Función para manejar apertura de conexión

def on\_open(ws):  
print(“Conexión abierta. Autenticando…”)  
ws.send(json.dumps({“authorize”: TOKEN}))

# Crear conexión WebSocket

ws = websocket.WebSocketApp(  
WS\_URL,  
on\_message=on\_message,  
on\_error=on\_error,  
on\_close=on\_close  
)  
ws.on\_open = on\_open  
ws.run\_forever()
