Deriv API
Documentación

Cancelar

TradingRequiere autenticación

Cancele un contrato activo proporcionando el ID del contrato. El parámetro loginid ha sido eliminado y los campos de respuesta ahora están garantizados.

Comparación rápida

AspectoLegacy APINew APIAcción
EndpointcancelcancelNinguno
Requiere autenticaciónNinguno
Parámetro loginidOpcionalEliminadoEliminar de las solicitudes
Objeto cancel en la RespuestaOpcionalObligatorioSimplificar manejo de errores

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

Legacy APIejemplo de solicitud
{
  "cancel": 11542203588,
  "loginid": "CR123456",  // ❌ Removed in New
  "passthrough": {
    "user_action": "manual_cancel"
  },
  "req_id": 1
}
New APIejemplo de solicitud
{
  "cancel": 11542203588,
  "passthrough": {
    "user_action": "manual_cancel"
  },
  "req_id": 1
}

Estructura de respuesta

Legacy APIejemplo 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
}
New APIejemplo 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
}

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");
      }
    }
  };
}
Click to open live chat support. Get instant help from our support team.