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()