Deriv API
Documentación

Historial de ticks

DatosSin autenticación

Obtenga datos históricos de ticks para un símbolo. Los campos requeridos de respuesta cambiaron, la validación se relajó y se agregaron nuevas opciones de parámetros.

Comparación rápida

AspectoLegacy APINew APIAcción
Endpointticks_historyticks_historyNinguno
Requiere autenticaciónNoNoNinguno
valores de suscripción1 solamente0 o 1Opcional: use 0 para solicitud única
Restricción de granularidadValores enum fijosCualquier enteroMás flexibilidad disponible

Cambios importantes

1. Campos requeridos en el objeto history cambiados

Los arrays prices y times dentro del objeto history ahora son campos obligatorios.

  • Legacy: Ambos prices y times eran opcionales.
  • Nuevo: Ambos ahora son obligatorios cuando el objeto history está presente.

Cambio requerido: Ahora puede acceder de forma segura a history.prices y history.times sin verificaciones de nulos cuando existe el objeto history.

2. Campos obligatorios en el array de velas modificados

Todas las propiedades de velas (close, epoch, high, low, open) ahora son obligatorias.

  • Legacy: Todas las propiedades de velas eran opcionales.
  • New: Las cinco propiedades son obligatorias dentro de cada objeto de vela.

Cambio requerido: Ahora puede desestructurar de forma segura todas las propiedades de velas sin verificaciones nulas.

3. echo_req ya no es requerido en la respuesta

El campo echo_req ya no es un campo requerido en la respuesta.

  • Legacy: echo_req y msg_type eran requeridos.
  • New: Solo se requiere msg_type.

Cambio requerido: Agregue verificaciones de existencia antes de acceder a response.echo_req.

4. Restricción de enumeración de granularidad eliminada

El parámetro granularity ya no tiene un conjunto fijo de valores permitidos.

  • Legacy: Restringido a [60, 120, 180, 300, 600, 900, 1800, 3600, 7200, 14400, 28800, 86400].
  • New: Se acepta cualquier valor entero.

Cambio requerido: Ahora tiene más flexibilidad en los valores de granularidad.

5. Patrones de validación de entrada eliminados

La validación de patrón en los parámetros ticks_history y end ha sido eliminada.

  • Legacy: ticks_history required pattern ^\w{{2,30}}$, end required pattern ^(latest|[0-9]{{1,10}})$.
  • New: Sin validación de patrón en estos parámetros.

6. subscribe y adjust_start_time ahora aceptan 0

Ambos parámetros ahora aceptan 0 como valor válido además de 1.

  • Legacy: Ambos parámetros solo aceptaban 1.
  • New: Ambos aceptan 0 o 1.

Cambio requerido: Esta es una nueva capacidad. Use subscribe: 0 para solicitudes únicas sin suscripción.

Estructura de solicitud

Legacy APIejemplo de solicitud
{
  "ticks_history": "frxEURUSD",
  "end": "latest",
  "start": 1234567890,
  "style": "ticks",
  "count": 100,
  "adjust_start_time": 1,  // Only 1 allowed
  "subscribe": 1           // Only 1 allowed
}
New APIejemplo de solicitud
{
  "ticks_history": "frxEURUSD",
  "end": "latest",
  "start": 1234567890,
  "style": "ticks",
  "count": 100,
  "adjust_start_time": 1,
  "subscribe": 1
}

Estructura de respuesta

Legacy APIejemplo de respuesta
{
  "echo_req": {              // REQUIRED in legacy
    "ticks_history": "frxEURUSD",
    "end": "latest"
  },
  "history": {
    "prices": [1.0850, 1.0851],  // Optional
    "times": [1234567890, 1234567891]  // Optional
  },
  "pip_size": 5,
  "msg_type": "history"
}
New APIejemplo de solicitud
{
  "echo_req": {              // Now OPTIONAL
    "ticks_history": "frxEURUSD",
    "end": "latest"
  },
  "history": {
    "prices": [1.0850, 1.0851],  // REQUIRED
    "times": [1234567890, 1234567891]  // REQUIRED
  },
  "pip_size": 5,
  "msg_type": "history"      // Only required field
}

Ejemplos de código

async function getTicksHistory(symbol) {
  const request = {
    ticks_history: symbol,
    end: "latest",
    start: Date.now() / 1000 - 86400,
    style: "ticks",
    count: 100,
    adjust_start_time: 1,  // Only 1 is valid
    subscribe: 1           // Only 1 is valid
  };

  ws.send(JSON.stringify(request));

  ws.onmessage = (event) => {
    const response = JSON.parse(event.data);

    // echo_req is guaranteed
    console.log('Request:', response.echo_req);

    if (response.msg_type === 'history') {
      // history.prices and history.times may be missing
      if (response.history) {
        if (response.history.prices) {
          console.log('Prices:', response.history.prices);
        }
        if (response.history.times) {
          console.log('Times:', response.history.times);
        }
      }
    }

    if (response.msg_type === 'candles') {
      response.candles?.forEach(candle => {
        // Each property may be missing
        const close = candle.close ?? null;
        const open = candle.open ?? null;
        const high = candle.high ?? null;
        const low = candle.low ?? null;
        console.log({ open, high, low, close });
      });
    }
  };
}
Click to open live chat support. Get instant help from our support team.