Ticks
DadosSem AutenticaçãoSubscrever stream de tick em tempo real para dados de mercado. Campos obrigatórios da resposta alterados e parâmetro de subscrição estendido.
4 Alterações de Rutura
tick está agora sempre presente e pip_size já não é garantido.Comparação rápida
Alterações de rutura
1. Campos obrigatórios na resposta de tick alterados
Os campos obrigatórios dentro do objeto tick foram alterados:
- Legado: Apenas
pip_sizeera obrigatório. - Novo:
epoch,quote, esymbolsão agora obrigatórios. pip_sizeé agora opcional e pode não estar sempre presente.
Alteração obrigatória: Adicione verificações de existência antes de aceder a pip_size. Pode agora confiar que epoch, quote, e symbol estarão sempre presentes.
2. Objeto tick agora obrigatório na resposta
O objeto tick é agora um campo obrigatório na resposta.
- Legado: Apenas
echo_reqemsg_typeeram obrigatórios no nível superior. - Novo:
tickemsg_typesão obrigatórios;echo_reqé agora opcional.
Alteração obrigatória: Pode agora aceder com segurança a response.tick sem verificar a existência. Atualize qualquer código que dependa de echo_req estar sempre presente.
3. O parâmetro subscribe agora aceita 0
O parâmetro subscribe aceita agora tanto 0 como 1.
- Legado: Apenas
1era válido. - Novo:
0(tick único, sem subscrição) ou1(stream contínuo).
Alteração obrigatória: Esta é uma nova capacidade. Use subscribe: 0 quando apenas necessita de um snapshot de tick único sem atualizações contínuas.
4. Validação de padrão de entrada removida
A validação de padrão no parâmetro ticks foi removida.
- Legacy: Pattern
^\w{2,30}$was enforced. - Novo: Sem validação de padrão em nomes de símbolos.
Alteração obrigatória: Esta alteração relaxa a validação de entrada. Os nomes de símbolos válidos existentes continuarão a funcionar. Se confiava na API para validar o formato de símbolos, considere adicionar validação do lado do cliente.
Estrutura de pedido
{
"ticks": "frxEURUSD",
"subscribe": 1
}{
"ticks": "frxEURUSD",
"subscribe": 1
}Estrutura de resposta
{
"echo_req": { // Required in legacy
"ticks": "frxEURUSD",
"subscribe": 1
},
"tick": { // Optional in legacy
"ask": 1.08501,
"bid": 1.08499,
"epoch": 1234567890, // Optional
"id": "tick-id-123",
"pip_size": 5, // REQUIRED in legacy
"quote": 1.08500, // Optional
"symbol": "frxEURUSD" // Optional
},
"msg_type": "tick",
"subscription": { "id": "sub-123" }
}{
"echo_req": { // Now optional
"ticks": "frxEURUSD",
"subscribe": 1
},
"tick": { // REQUIRED in new API
"ask": 1.08501,
"bid": 1.08499,
"epoch": 1234567890, // REQUIRED
"id": "tick-id-123",
"pip_size": 5, // Now optional
"quote": 1.08500, // REQUIRED
"symbol": "frxEURUSD" // REQUIRED
},
"msg_type": "tick",
"subscription": { "id": "sub-123" }
}Exemplos de código
async function subscribeTicks(symbol) {
const request = {
ticks: symbol,
subscribe: 1 // Only 1 is valid
};
ws.send(JSON.stringify(request));
ws.onmessage = (event) => {
const response = JSON.parse(event.data);
if (response.msg_type === 'tick') {
// tick object may not exist
if (response.tick) {
// pip_size is guaranteed
const pipSize = response.tick.pip_size;
// These fields are optional
const quote = response.tick.quote;
const epoch = response.tick.epoch;
const symbol = response.tick.symbol;
console.log('Pip size:', pipSize);
if (quote) console.log('Quote:', quote);
}
// echo_req is always available
console.log('Request:', response.echo_req);
}
};
}Alguma outra questão? Entrar em contacto