Cancelar
TradingRequiere autenticaciónCancele un contrato activo proporcionando el ID del contrato. El parámetro loginid ha sido eliminado y los campos de respuesta ahora están garantizados.
3 Cambios Importantes
loginid ha sido eliminado y todos los campos de respuesta ahora son obligatorios.Comparación rápida
Cambios importantes
1. Eliminación del parámetro loginid
El parámetro loginid ya no es compatible en New. En Legacy, este parámetro se usaba para especificar desde qué cuenta cancelar un contrato cuando se proporcionaban múltiples tokens durante la autorización.
Cambio requerido: Remove the loginid field from your cancel requests. Account selection is now handled through the authorization token.
2. objeto cancel ahora obligatorio en respuesta
El objeto cancel ahora es un campo obligatorio en el nivel raíz de la respuesta.
Cambio requerido: You can now rely on the cancel object always being present in successful responses. Remove any conditional checks for its existence.
3. Todos los campos de respuesta ahora obligatorios
Todos los campos dentro del objeto de respuesta cancel ahora son obligatorios: balance_after, contract_id, reference_id, sold_for, y transaction_id.
Cambio requerido: You can simplify your response handling code by removing null/undefined checks for these fields. They are guaranteed to be present in successful responses.
Estructura de solicitud
{
"cancel": 11542203588,
"loginid": "CR123456", // ❌ Removed in New
"passthrough": {
"user_action": "manual_cancel"
},
"req_id": 1
}{
"cancel": 11542203588,
"passthrough": {
"user_action": "manual_cancel"
},
"req_id": 1
}Estructura de respuesta
{
"cancel": {
"balance_after": 10450.50,
"contract_id": 11542203588,
"reference_id": 11542203587,
"sold_for": 23.45,
"transaction_id": 11542203589
},
"echo_req": {
"cancel": 11542203588,
"req_id": 1
},
"msg_type": "cancel",
"req_id": 1
}{
"cancel": {
"balance_after": 10450.50,
"contract_id": 11542203588,
"reference_id": 11542203587,
"sold_for": 23.45,
"transaction_id": 11542203589
},
"echo_req": {
"cancel": 11542203588,
"req_id": 1
},
"msg_type": "cancel",
"req_id": 1
}Ejemplos de código
async function cancelContract(contractId, loginId = null) {
const request = {
cancel: contractId,
req_id: 1
};
// Add loginid if provided (for multi-account scenarios)
if (loginId) {
request.loginid = loginId;
}
ws.send(JSON.stringify(request));
// Handle response
ws.onmessage = (message) => {
const response = JSON.parse(message.data);
if (response.msg_type === "cancel") {
// Fields may be undefined - need null checks
if (response.cancel) {
const soldFor = response.cancel.sold_for ?? 0;
const balance = response.cancel.balance_after ?? 0;
console.log("Contract cancelled");
}
}
};
}¿Alguna otra pregunta? Póngase en contacto