Todo bot necesita datos antes de decidir cualquier cosa. En la Deriv API con Python, la solicitud ticks_history es el corazón de esto: entrega el historial de precios de un activo — en formato de ticks o de candles (OHLC) — y también permite suscribirse a actualizaciones en vivo. Esta guía es una referencia directa: la sintaxis, los campos que importan y código listo para traer el historial y recibir ticks en tiempo real. El trading de corto plazo es de altísimo riesgo — prueba todo en cuenta demo primero.

¿Quieres un bot Deriv listo, que ya recopila datos, calcula indicadores y gestiona el riesgo? Mira la solución en Python y prueba en cuenta demo.

Ver bot Deriv en Python →

Conexión

Deriv usa WebSocket con mensajes JSON. Para solo leer datos de mercado ni siquiera necesitas token (pero para operar, sí):

import json, asyncio, websockets APP_ID = «1089» # usa tu app_id URL = f»wss://ws.derivws.com/websockets/v3?app_id={APP_ID}» async def send(ws, payload): await ws.send(json.dumps(payload)) return json.loads(await ws.recv())

ticks_history en formato de ticks

Para traer los últimos N precios (ticks) de un activo:

req = { «ticks_history»: «R_100», «end»: «latest», «count»: 10, «style»: «ticks» } resp = await send(ws, req) hist = resp[«history»] print(«Precios:», hist[«prices»]) # lista de precios print(«Tiempos:», hist[«times»]) # lista de timestamps (epoch)
Campos clave: count define cuántos puntos retroceder; end acepta «latest» o un timestamp; también puedes usar start para un intervalo. En el estilo ticks, la respuesta viene en history.prices e history.times (dos listas paralelas).

ticks_history en formato de candles (OHLC)

Para velas (open/high/low/close), usa style: "candles" y define la granularity en segundos (60 = 1 minuto, 300 = 5 min, 3600 = 1h):

req = { «ticks_history»: «R_100», «end»: «latest», «count»: 50, «style»: «candles», «granularity»: 60 # 1 minuto } resp = await send(ws, req) candles = resp[«candles»] ultima = candles[-1] print(«Open :», ultima[«open»]) print(«High :», ultima[«high»]) print(«Low :», ultima[«low»]) print(«Close:», ultima[«close»]) print(«Epoch:», ultima[«epoch»])

La respuesta viene en candles, una lista de objetos con open, high, low, close y epoch — lista para alimentar indicadores (medias, RSI, ATR).

Ticks en vivo (subscribe)

Para recibir cada nuevo tick en tiempo real, agrega subscribe: 1 y sigue leyendo el socket:

await ws.send(json.dumps({«ticks»: «R_100», «subscribe»: 1})) while True: msg = json.loads(await ws.recv()) tick = msg.get(«tick») if tick: print(tick[«epoch»], «->», tick[«quote»])
Cerrar la suscripción: guarda el subscription.id devuelto y envía {"forget": "<id>"} para dejar de recibir. Para detener todo de una vez, usa {"forget_all": "ticks"}.

Consejo: combinar historial + en vivo

El patrón profesional es simple: trae un bloque de candles para «calentar» tus indicadores (warm-up), y a partir de ahí actualiza con los ticks en vivo. Así tu RSI/ATR ya nace calculado correctamente en vez de tener que esperar decenas de barras.

Preguntas frecuentes

¿Necesito token para leer datos?
Para ticks_history y ticks de mercado generalmente no. El token es necesario para operar (proposal/buy) y para datos de cuenta.

¿Qué granularidades existen?
Valores en segundos como 60, 120, 300, 600, 900, 1800, 3600, 7200, 14400, 28800 y 86400 (1 día), entre otros.

¿Cuál es el límite de count?
Hay un tope por solicitud (del orden de los miles). Para historiales largos, pagina usando start y end.

¿Cómo obtengo la lista de activos?
Usa la solicitud active_symbols para descubrir los símbolos disponibles en tu cuenta/región.

Aviso: el trading de contratos de corto plazo y opciones es de altísimo riesgo y la mayoría de los traders minoristas pierde dinero. Este contenido es educativo y técnico, no constituye recomendación de inversión, oferta ni asesoramiento financiero. Los resultados pasados no garantizan resultados futuros. Prueba siempre en cuenta demo antes de arriesgar capital real y nunca inviertas más de lo que puedes perder.