Ticks
DatosSin autenticaciónSuscríbase al flujo de ticks en tiempo real para datos de mercado. Los campos de respuesta requeridos cambiaron y el parámetro subscribe se extendió.
4 cambios importantes
tick ahora está siempre presente y pip_size ya no está garantizado.Comparación rápida
Cambios importantes
1. Campos requeridos en respuesta de tick cambiados
Los campos obligatorios dentro del objeto tick han cambiado:
- Legacy: Solo se requería
pip_size. - Nuevo:
epoch,quote, ysymbolahora son obligatorios. pip_sizeahora es opcional y puede no estar siempre presente.
Cambio requerido: Añada verificaciones de existencia antes de acceder a pip_size. Ahora puede confiar en que epoch, quote, y symbol siempre estarán presentes.
2. Objeto tick ahora requerido en la respuesta
El objeto tick ahora es un campo obligatorio en la respuesta.
- Legacy: Solo
echo_reqymsg_typeeran requeridos en el nivel superior. - Nuevo:
tickymsg_typeson obligatorios;echo_reqahora es opcional.
Cambio requerido: Ahora puede acceder de forma segura a response.tick sin verificar su existencia. Actualice cualquier código que dependa de que echo_req siempre esté presente.
3. El parámetro Subscribe ahora acepta 0
El parámetro subscribe ahora acepta tanto 0 como 1.
- Legacy: Solo
1era válido. - Nuevo:
0(tick único, sin suscripción) o1(flujo continuo).
Cambio requerido: Esta es una nueva capacidad. Use subscribe: 0 cuando solo necesite una instantánea de tick único sin actualizaciones continuas.
4. Patrón de validación de entrada eliminado
La validación de patrón en el parámetro ticks ha sido eliminada.
- Legacy: Pattern
^\w{2,30}$was enforced. - Nuevo: Sin validación de patrón en nombres de símbolos.
Cambio requerido: Este cambio relaja la validación de entrada. Los nombres de símbolos válidos existentes seguirán funcionando. Si dependía del API para validar el formato de símbolos, considere agregar validación del lado del cliente.
Estructura de solicitud
{
"ticks": "frxEURUSD",
"subscribe": 1
}{
"ticks": "frxEURUSD",
"subscribe": 1
}Estructura de respuesta
{
"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" }
}Ejemplos 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);
}
};
}¿Alguna otra pregunta? Póngase en contacto