Histórico de ticks
DadosSem AutenticaçãoObter 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.
6 Alterações de Rutura
history e candles foram alterados. O campo echo_req já não é garantido.Comparação rápida
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
pricescomotimeseram opcionais. - Novo: Ambos são agora obrigatórios quando o objeto
historyestá 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_reqemsg_typeeram 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_historyrequired pattern^\w{{2,30}}$,endrequired 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
0ou1.
Alteração obrigatória: Esta é uma nova capacidade. Use subscribe: 0 para pedidos únicos sem subscrição.
Estrutura 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
}{
"ticks_history": "frxEURUSD",
"end": "latest",
"start": 1234567890,
"style": "ticks",
"count": 100,
"adjust_start_time": 1,
"subscribe": 1
}Estrutura 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"
}{
"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 });
});
}
};
}Alguma outra questão? Entrar em contacto