Deriv API
Documentação

Histórico de ticks

DadosSem Autenticação

Obter dados de tick históricos para um símbolo. Campos obrigatórios da resposta alterados, validação relaxada e novas opções de parâmetro adicionadas.

Comparação rápida

AspetoLegacy APINew APIAção
Endpointticks_historyticks_historyNenhum
Autenticação ObrigatóriaNãoNãoNenhum
valores de subscriçãoapenas 10 ou 1Opcional: use 0 para pedido único
Restrição de GranularidadeValores de enum fixosQualquer número inteiroMais flexibilidade disponível

Alterações de rutura

1. Campos obrigatórios no objeto history alterados

Os arrays prices e times dentro do objeto history são agora campos obrigatórios.

  • Legado: Tanto prices como times eram opcionais.
  • Novo: Ambos são agora obrigatórios quando o objeto history está presente.

Alteração obrigatória: Pode agora aceder com segurança a history.prices e history.times sem verificações nulas quando o objeto history existe.

2. Campos obrigatórios no array de velas alterados

Todas as propriedades de vela (close, epoch, high, low, open) são agora obrigatórias.

  • Legado: Todas as propriedades de vela eram opcionais.
  • Novo: Todas as cinco propriedades são obrigatórias dentro de cada objeto de vela.

Alteração obrigatória: Agora pode desestruturar com segurança todas as propriedades da vela sem verificações de nulos.

3. echo_req já não é obrigatório na resposta

O campo echo_req já não é um campo obrigatório na resposta.

  • Legado: echo_req e msg_type eram obrigatórios.
  • Novo: Apenas msg_type é obrigatório.

Alteração obrigatória: Adicione verificações de existência antes de aceder a response.echo_req.

4. Restrição de enumeração de granularidade removida

O parâmetro granularity já não tem um conjunto fixo de valores permitidos.

  • Legado: Restrito a [60, 120, 180, 300, 600, 900, 1800, 3600, 7200, 14400, 28800, 86400].
  • Novo: Qualquer valor inteiro é aceite.

Alteração obrigatória: Agora tem mais flexibilidade nos valores de granularidade.

5. Padrões de validação de entrada removidos

A validação de padrão nos parâmetros ticks_history e end foi removida.

  • Legacy: ticks_history required pattern ^\w{{2,30}}$, end required pattern ^(latest|[0-9]{{1,10}})$.
  • Novo: Sem validação de padrão nestes parâmetros.

6. subscribe e adjust_start_time agora aceitam 0

Ambos os parâmetros aceitam agora 0 como um valor válido, além de 1.

  • Legado: Ambos os parâmetros aceitavam apenas 1.
  • Novo: Ambos aceitam 0 ou 1.

Alteração obrigatória: Esta é uma nova capacidade. Use subscribe: 0 para pedidos únicos sem subscrição.

Estrutura de pedido

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

Estrutura de resposta

Legacy APIexemplo de resposta
{
  "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 APIexemplo de pedido
{
  "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
}

Exemplos 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.