Tradovate API

Cerrar y liquidar posiciones mediante la API de Tradovate

Todo trader automatizado conoce ese momento: su estrategia mantiene una posición y necesita salir de todo ahora. Así es como la llamada liquidatePosition de la API de Tradovate deja a cero un contrato abierto, desde obtener el ID de su cuenta hasta cerrar toda la cuenta.

On This Page

Todo trader automatizado conoce ese momento: su estrategia mantiene una posición, el mercado gira en su contra y necesita salir de todo ahora. Buscar el botón de cierre en una página web es demasiado lento. Para eso sirve precisamente la llamada liquidatePosition de la API de Tradovate. Una sola solicitud deja a cero un contrato abierto, sin clics manuales en el DOM. Esta guía recorre todo el camino, desde obtener el ID de su cuenta hasta recorrer en bucle todas las posiciones abiertas para que la cuenta quede completamente cerrada.

Una breve aclaración sobre lo que hace realmente este endpoint: no cancela una orden pendiente ni «vende unos cuantos contratos». Busca la posición neta que mantiene en un contrato y envía una orden de mercado en dirección opuesta para llevar esa posición neta a cero. Como es una orden en vivo, solo se ejecuta mientras la sesión del contrato esté abierta.

Antes de empezar

  • Acceso a la API y un token válido. Necesita tener API Access activado en la cuenta y un token de acceso válido. Si aún no lo ha configurado, empiece por obtener acceso a la API de Tradovate y una clave.
  • El entorno correcto. Demo y real son hosts independientes: demo.tradovateapi.com/v1 para simulación y live.tradovateapi.com/v1 para dinero real. Si usa un token de demo contra el host real (o al revés), obtendrá «Access is denied».
  • Permiso de órdenes en esa cuenta. El token debe pertenecer a un usuario que pueda colocar órdenes en la cuenta que va a cerrar.
  • Reglas de las cuentas prop. Algunas prop firms desactivan la automatización directa por API en sus cuentas de evaluación. Consulte las reglas vigentes de su firma antes de desarrollar contra una cuenta fondeada.

Cerrar y liquidar posiciones mediante la API de Tradovate: paso a paso

1

Autentíquese y conserve su token

Cada llamada necesita un token Bearer. Envíe sus credenciales a /auth/accessTokenRequest y extraiga el accessToken de la respuesta. Los tokens no duran para siempre, así que si su proceso se ejecuta durante un tiempo, llame a /auth/renewAccessToken antes de que caduque el actual en lugar de esperar a un 401. En cada solicitud posterior, adjunte el encabezado Authorization: Bearer YOUR_ACCESS_TOKEN.

2

Obtenga el ID numérico de su cuenta

La liquidación se basa en un ID de cuenta numérico, no en el alias de cuenta que ve en la aplicación. Envíe un GET a /account/list y recibirá un array con las cuentas que su usuario puede ver. Tome el campo id (un número como 2100) de la cuenta que desea cerrar. Si tiene varias cuentas, busque la coincidencia en el campo name y use después el id de esa fila.

3

Localice sus posiciones abiertas y sus IDs de contrato

No puede liquidar un contrato que no puede nombrar. Llame a /position/list y fíjese en dos campos de cada fila: contractId y netPos. netPos es el número con signo de contratos que mantiene. Positivo significa largo, negativo significa corto y cero significa que ya está sin posición en ese contrato. Cualquier fila donde netPos no sea cero es una posición abierta que quizá desee cerrar. Anote el contractId. Si quiere un símbolo legible para su registro, pase ese ID a /contract/item?id={contractId}.

4

Lance la liquidación

Ahora, la llamada en sí. Envíe un POST a /order/liquidatePosition con el ID de cuenta y el ID de contrato que acaba de obtener, enviando en el cuerpo accountId, contractId y un booleano admin. Hay algunos detalles en los que mucha gente tropieza.

5

Cierre todo y confirme

La API REST no tiene un único botón de «cerrar todo». Para dejar toda la cuenta sin posiciones, debe hacer un bucle. Obtenga /position/list, conserve las filas donde netPos no sea cero y llame a /order/liquidatePosition una vez por cada contractId. ¿Dos contratos abiertos? Dos llamadas. Después, verifique. Vuelva a obtener /position/list y cada netPos debería mostrar 0. También conviene consultar /order/list para asegurarse de que las órdenes bracket u OCO asociadas a esas posiciones realmente se hayan cancelado, de modo que un stop olvidado no le vuelva a abrir una posición más tarde.

Campo Qué es
accountIdObligatorio. El id numérico del paso 2.
contractIdObligatorio y debe ser mayor que 0. Pasar 0 genera «contractId must be > 0». Use el ID real de /position/list.
adminUn booleano que el cuerpo espera. Las cuentas normales pasan false. Omitirlo es la causa clásica de un 400.
customTag50Opcional. Una cadena corta que puede adjuntar como etiqueta para su propio seguimiento.

El servidor calcula por sí mismo su posición neta y envía la orden de mercado para cerrarla. Si la posición ya quedó cerrada entre su comprobación y esta llamada, obtiene una operación nula inofensiva en lugar de una operación opuesta accidental, de modo que no necesita sincronizarlo a la perfección.

Cuando no funciona

La mayoría de los fallos se reducen a tres causas. Un 401 «Access is denied» casi siempre significa host de entorno incorrecto, ID de cuenta incorrecto o un usuario sin permiso de órdenes en esa cuenta. contractId must be > 0 significa que envió un marcador de posición en lugar de un ID real. Y un simple 401 con un token caducado solo necesita una renovación. Si la propia orden de liquidación es rechazada, el motivo suele ser el mismo que bloquea cualquier orden, así que conviene revisar la guía general sobre access denied al colocar una orden y confirmar que el mercado está abierto.

Automatice esto con PickMyTrade

¿No quiere ocuparse usted mismo de tokens, bucles de posiciones y lógica de liquidación? PickMyTrade conecta sus alertas de TradingView directamente con Tradovate, de modo que las entradas, las salidas y los comandos de cierre se ejecutan automáticamente sin que escriba una sola línea de código de API.

Olvídese de los bucles de liquidación

Deje que PickMyTrade conecte sus alertas de TradingView directamente con Tradovate: las entradas, las salidas y los comandos de cierre se ejecutan automáticamente.

Comience su prueba gratuita de 7 días

Preguntas frecuentes

Normalmente se debe a un host de entorno incorrecto, a un ID de cuenta incorrecto o a un usuario sin permiso de órdenes en esa cuenta. Los tokens de demo solo funcionan con demo.tradovateapi.com/v1 y los tokens reales solo con live.tradovateapi.com/v1.

Envió un marcador de posición en lugar de un ID de contrato real. Obtenga el contractId real de /position/list antes de llamar a liquidatePosition.

No. Solo busca su posición neta en un contrato y envía una orden de mercado en sentido contrario para dejarla a cero. Después de liquidar, compruebe por separado /order/list para confirmar que las órdenes bracket u OCO asociadas a esa posición realmente se hayan cancelado.

Esta guía tiene fines exclusivamente educativos e informativos y no constituye asesoramiento financiero, de inversión ni de trading. Operar con futuros y otros productos apalancados conlleva un riesgo sustancial de pérdida y no es adecuado para todos los inversores. PickMyTrade es una plataforma de automatización independiente de terceros y no está afiliada, respaldada ni patrocinada por Tradovate, Inc. «Tradovate» y todos los nombres, logotipos y marcas relacionados son propiedad de sus respectivos titulares. Las funciones y los pasos de la plataforma cambian con el tiempo, por lo que siempre debe confirmar el proceso vigente en la plataforma y la documentación oficiales de Tradovate antes de actuar.