{"format":"opendoc-document","version":1,"url":"https://docs.upscale.trade/es/developers/operations/getpositionevents","title":"Obtener todos los eventos por posición","description":"GET /positions/{positionId}/history: Qué ocurrió con una posición, las más recientes primero: aumentos, cierres parciales y totales, liquidación, cierre forzoso, cambios de margen.","kind":"api-operation","locale":"es","inLanguage":"es","translation":{"sourceLanguage":"en","targetLanguage":"es","status":"complete","translatedUnits":81,"totalUnits":81},"lastModified":"2026-09-28T20:05:09.350Z","revision":"3c2fd254d25c5fe88817d5c939afd24407f25862bdfb7b9dc8ab5105728c7abe","section":{"title":"Developers","url":"https://docs.upscale.trade/es/developers"},"representations":{"html":"https://docs.upscale.trade/es/developers/operations/getpositionevents","markdown":"https://docs.upscale.trade/es/developers/operations/getpositionevents.md","json":"https://docs.upscale.trade/es/developers/operations/getpositionevents.json"},"translations":{"en":"https://docs.upscale.trade/developers/operations/getpositionevents","ru":"https://docs.upscale.trade/ru/developers/operations/getpositionevents","es":"https://docs.upscale.trade/es/developers/operations/getpositionevents"},"operation":{"id":"getPositionEvents","method":"GET","path":"/positions/{positionId}/history","summary":"Obtener todos los eventos por posición","description":"Qué ocurrió con una posición, las más recientes primero: aumentos, cierres parciales y totales, liquidación, cierre forzoso, cambios de margen.\n\n- Los pagos de financiación quedan fuera de este feed.\n- Un cierre forzoso lleva consigo el evento de mercado que tiene detrás, que es donde reside el motivo del mismo.","tags":["Trading"],"tagLabels":{"Accounts":"Cuentas","Config":"Configuración","Trading":"Trading"},"deprecated":false,"parameters":[{"name":"positionId","location":"path","schema":{"type":"string · uuid","types":["string"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"uuid"},"properties":[],"variants":[]},"type":"string · uuid","required":true,"description":"Identificador de posición. Su cuenta debe pertenecer al llamador.","example":"00000000-0000-4000-8000-000000000000"}],"bodies":[],"responses":[{"status":"401","description":"No autorizado","properties":[],"headers":[]},{"status":"403","description":"La cuenta pertenece a otro usuario (`account_access_denied`), o la solicitud se autentica con una clave de API mientras `api_trading` está deshabilitado en la cuenta (`api_trading_not_enabled`).","properties":[],"headers":[]},{"status":"404","description":"No existe ninguna posición con este identificador.","properties":[],"headers":[]},{"status":"429","description":"Se superó el límite de velocidad de la clave de API (`api_key_rate_limit_exceeded`). `Retry-After` indica cuándo volver; el cuerpo incluye el bucket (`read` / `write`), la ventana que se activó, su límite y `retryAt`.","properties":[],"headers":[]},{"status":"default","description":"Respuesta","mediaType":"application/json","properties":[],"schema":{"type":"object[]","types":["array"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"items":{"type":"object","types":["object"],"reference":"#/components/schemas/PositionEventResponse","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[{"name":"idx","type":"string[]","required":true,"description":"Identificador de la posición. Mismo valor que `txId`.","example":"[\n  \"string\"\n]","schema":{"type":"string[]","types":["array"],"description":"Identificador de la posición. Mismo valor que `txId`.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"items":{"type":"string","types":["string"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]},"variants":[]}},{"name":"txId","type":"string[]","required":true,"description":"Identificador de la posición. Se mantiene por compatibilidad hacia atrás, siempre igual a `idx`.","example":"[\n  \"string\"\n]","schema":{"type":"string[]","types":["array"],"description":"Identificador de la posición. Se mantiene por compatibilidad hacia atrás, siempre igual a `idx`.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"items":{"type":"string","types":["string"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]},"variants":[]}},{"name":"version","type":"number","required":true,"description":"Revisión de la posición: incrementada por cada evento que se le aplica.","example":"0","schema":{"type":"number","types":["number"],"description":"Revisión de la posición: incrementada por cada evento que se le aplica.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]}},{"name":"openedAt","type":"string · date-time","required":true,"description":"Cuándo se abrió la posición.","example":"2026-05-01T12:30:00.000Z","schema":{"type":"string · date-time","types":["string"],"description":"Cuándo se abrió la posición.","example":"2026-05-01T12:30:00.000Z","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"date-time"},"properties":[],"variants":[]}},{"name":"lastUpdatedAt","type":"string · date-time","required":true,"description":"Cuándo se aplicó el último evento a la posición.","example":"2026-05-01T12:30:00.000Z","schema":{"type":"string · date-time","types":["string"],"description":"Cuándo se aplicó el último evento a la posición.","example":"2026-05-01T12:30:00.000Z","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"date-time"},"properties":[],"variants":[]}},{"name":"closedAt","type":"string · date-time · nullable","required":true,"description":"Cuándo se cerró la posición; null mientras sigue abierta.","example":"2026-05-01T12:30:00.000Z","schema":{"type":"string · date-time · nullable","types":["string"],"description":"Cuándo se cerró la posición; null mientras sigue abierta.","example":"2026-05-01T12:30:00.000Z","nullable":true,"readOnly":false,"writeOnly":false,"constraints":{"format":"date-time"},"properties":[],"variants":[]}},{"name":"type","type":"string · enum","required":true,"description":"Dirección de la posición. Mismo valor que `direction`.","example":"long","schema":{"type":"string · enum","types":["string"],"description":"Dirección de la posición. Mismo valor que `direction`.","enum":["long","short"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]}},{"name":"status","type":"string · enum","required":true,"description":"Si la posición sigue abierta, fue cerrada por el trader o fue liquidada.","example":"opened","schema":{"type":"string · enum","types":["string"],"description":"Si la posición sigue abierta, fue cerrada por el trader o fue liquidada.","enum":["opened","closed","liquidated"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]}},{"name":"market","type":"string · uuid","required":true,"description":"Mercado en el que se mantiene la posición.","example":"00000000-0000-4000-8000-000000000000","schema":{"type":"string · uuid","types":["string"],"description":"Mercado en el que se mantiene la posición.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"},"properties":[],"variants":[]}},{"name":"trader","type":"string · uuid","required":true,"description":"Cuenta del trader a la que pertenece la posición.","example":"00000000-0000-4000-8000-000000000000","schema":{"type":"string · uuid","types":["string"],"description":"Cuenta del trader a la que pertenece la posición.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"},"properties":[],"variants":[]}},{"name":"size","type":"string · int32","required":true,"description":"Tamaño de la posición en unidades del activo base, fp9 sin procesar.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Tamaño de la posición en unidades del activo base, fp9 sin procesar.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"notional","type":"string · int32","required":true,"description":"Nocional abierto de la posición en moneda de cotización, fp9 sin procesar — tamaño al precio de entrada.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Nocional abierto de la posición en moneda de cotización, fp9 sin procesar — tamaño al precio de entrada.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"fraction","type":"string · int32","required":true,"description":"Siempre `0`. Se mantiene por compatibilidad hacia atrás.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Siempre `0`. Se mantiene por compatibilidad hacia atrás.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"margin","type":"string · int32","required":true,"description":"Margen que actualmente respalda la posición, fp9 sin procesar. Cambia con pnl, financiación y cambios manuales de margen.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Margen que actualmente respalda la posición, fp9 sin procesar. Cambia con pnl, financiación y cambios manuales de margen.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"pnl","type":"string · int32 · nullable","required":true,"description":"Pnl realizado acumulado a lo largo de cada evento de la posición, fp9 sin procesar.","example":"1000000000","schema":{"type":"string · int32 · nullable","types":["string"],"description":"Pnl realizado acumulado a lo largo de cada evento de la posición, fp9 sin procesar.","example":"1000000000","nullable":true,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"funding","type":"string · int32 · nullable","required":true,"description":"Financiación pagada (negativa) o recibida (positiva) durante la vida de la posición, fp9 en bruto.","example":"1000000000","schema":{"type":"string · int32 · nullable","types":["string"],"description":"Financiación pagada (negativa) o recibida (positiva) durante la vida de la posición, fp9 en bruto.","example":"1000000000","nullable":true,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"rolloverFee","type":"string · int32","required":true,"description":"Siempre `0`. Se mantiene por compatibilidad hacia atrás.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Siempre `0`. Se mantiene por compatibilidad hacia atrás.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"settlementOraclePrice","type":"string · int32","required":true,"description":"Siempre `1000000000` (1.0). Se mantiene por compatibilidad con versiones anteriores.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Siempre `1000000000` (1.0). Se mantiene por compatibilidad con versiones anteriores.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"fee","type":"string · int32","required":true,"description":"Comisiones de trading cobradas durante la vida de la posición, fp9 en bruto.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Comisiones de trading cobradas durante la vida de la posición, fp9 en bruto.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"feeRate","type":"string · int32","required":true,"description":"Tasa de comisión aplicada a la posición, fp9 fracción en bruto (`1000000` = 0.1%).","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Tasa de comisión aplicada a la posición, fp9 fracción en bruto (`1000000` = 0.1%).","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"exchangedQuote","type":"string · int32","required":true,"description":"Importe de cotización intercambiado por el evento más reciente, fp9 en bruto.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Importe de cotización intercambiado por el evento más reciente, fp9 en bruto.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"exchangedBase","type":"string · int32","required":true,"description":"Importe base intercambiado por el evento más reciente, fp9 en bruto.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Importe base intercambiado por el evento más reciente, fp9 en bruto.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"direction","type":"string · enum","required":true,"description":"Dirección de la posición.","example":"long","schema":{"type":"string · enum","types":["string"],"description":"Dirección de la posición.","enum":["long","short"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]}},{"name":"eventName","type":"string · enum","required":true,"description":"Tipo del evento más reciente aplicado a la posición.","example":"addMargin","schema":{"type":"string · enum","types":["string"],"description":"Tipo del evento más reciente aplicado a la posición.","enum":["addMargin","removeMargin","closePosition","increasePosition","liquidate","forceClose","payFunding"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]}},{"name":"pnlInEvent","type":"string · int32","required":true,"description":"Pnl realizado del evento más reciente, fp9 en bruto.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Pnl realizado del evento más reciente, fp9 en bruto.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"rawPnlInEvent","type":"string · int32","required":true,"description":"Pnl realizado del evento más reciente antes del ajuste de 60 segundos, fp9 en bruto. Difiere de `pnlInEvent` solo cuando se activó el ajuste.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Pnl realizado del evento más reciente antes del ajuste de 60 segundos, fp9 en bruto. Difiere de `pnlInEvent` solo cuando se activó el ajuste.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"profitAdjustmentApplied","type":"boolean","required":true,"description":"Si el ajuste de 60 segundos limitó la ganancia del evento más reciente — dentro de un minuto de una apertura o un aumento de la posición, el pnl de la posición no puede crecer por encima de lo que era en ese momento.","example":"true","schema":{"type":"boolean","types":["boolean"],"description":"Si el ajuste de 60 segundos limitó la ganancia del evento más reciente — dentro de un minuto de una apertura o un aumento de la posición, el pnl de la posición no puede crecer por encima de lo que era en ese momento.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]}},{"name":"holdingTimeMs","type":"string[]","required":true,"description":"Cuánto tiempo se mantuvo la posición antes del cierre más reciente, en milisegundos, contado desde la apertura o el último incremento. Nulo en eventos que no son cierres.","example":"[\n  \"string\"\n]","schema":{"type":"string[]","types":["array"],"description":"Cuánto tiempo se mantuvo la posición antes del cierre más reciente, en milisegundos, contado desde la apertura o el último incremento. Nulo en eventos que no son cierres.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"items":{"type":"string","types":["string"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]},"variants":[]}},{"name":"feeInEvent","type":"string · int32","required":true,"description":"Comisión cobrada por el evento más reciente, fp9 en bruto.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Comisión cobrada por el evento más reciente, fp9 en bruto.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"fundingInEvent","type":"string · int32","required":true,"description":"Financiación liquidada por el evento más reciente, fp9 en bruto.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Financiación liquidada por el evento más reciente, fp9 en bruto.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"rolloverFeeInEvent","type":"string · int32","required":true,"description":"Siempre `0`. Se mantiene por compatibilidad hacia atrás.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Siempre `0`. Se mantiene por compatibilidad hacia atrás.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"executionFeeRate","type":"string · int32","required":true,"description":"Siempre `0`. Se mantiene por compatibilidad hacia atrás.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Siempre `0`. Se mantiene por compatibilidad hacia atrás.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"executionFeeInEvent","type":"string · int32","required":true,"description":"Siempre `0`. Se mantiene por compatibilidad hacia atrás.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Siempre `0`. Se mantiene por compatibilidad hacia atrás.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"executionFee","type":"string · int32","required":true,"description":"Siempre `0`. Se mantiene por compatibilidad hacia atrás.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Siempre `0`. Se mantiene por compatibilidad hacia atrás.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"timestamp","type":"string · date-time","required":true,"description":"Marca de tiempo del evento más reciente. Mismo valor que `lastUpdatedAt`.","example":"2026-05-01T12:30:00.000Z","schema":{"type":"string · date-time","types":["string"],"description":"Marca de tiempo del evento más reciente. Mismo valor que `lastUpdatedAt`.","example":"2026-05-01T12:30:00.000Z","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"date-time"},"properties":[],"variants":[]}},{"name":"isOnchain","type":"boolean","required":true,"description":"Siempre `true`. Se mantiene por compatibilidad con versiones anteriores.","example":"true","schema":{"type":"boolean","types":["boolean"],"description":"Siempre `true`. Se mantiene por compatibilidad con versiones anteriores.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]}},{"name":"roe","type":"string · int32","required":true,"description":"Rentabilidad sobre el capital de la posición — pnl realizado sobre el margen aportado, fp9 fracción sin procesar.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Rentabilidad sobre el capital de la posición — pnl realizado sobre el margen aportado, fp9 fracción sin procesar.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"scalpingCoefficient","type":"string · int32","required":true,"description":"Multiplicador dinámico de spread que se aplicó a la posición, fp9 sin procesar (`1000000000` = 1.0). Por encima de 1 cuando la operación quedó dentro de la ventana de scalping del mercado.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Multiplicador dinámico de spread que se aplicó a la posición, fp9 sin procesar (`1000000000` = 1.0). Por encima de 1 cuando la operación quedó dentro de la ventana de scalping del mercado.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"closeReason","type":"string[]","required":true,"description":"Por qué la plataforma cerró la posición (por ejemplo, `weekly_session_risk_close`). Nulo para las posiciones cerradas por el trader y para las abiertas.","example":"[\n  \"string\"\n]","schema":{"type":"string[]","types":["array"],"description":"Por qué la plataforma cerró la posición (por ejemplo, `weekly_session_risk_close`). Nulo para las posiciones cerradas por el trader y para las abiertas.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"items":{"type":"string","types":["string"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]},"variants":[]}},{"name":"order","type":"object · nullable","required":true,"description":"Orden que produjo este evento; null para eventos que la plataforma generó por sí misma, como financiación o un cierre forzoso.","example":"{\n  \"id\": \"00000000-0000-4000-8000-000000000000\",\n  \"txId\": \"string\",\n  \"trader\": \"00000000-0000-4000-8000-000000000000\",\n  \"market\": \"00000000-0000-4000-8000-000000000000\",\n  \"status\": \"active\",\n  \"type\": \"market\",\n  \"direction\": \"long\",\n  \"triggerPrice\": \"1000000000\",\n  \"requestedTriggerPrice\": \"1000000000\",\n  \"stopPrice\": \"1000000000\",\n  \"limitPrice\": \"1000000000\",\n  \"stopTriggerPrice\": \"1000000000\",\n  \"takeTriggerPrice\": \"1000000000\",\n  \"trailingStopActivationPrice\": \"1000000000\",\n  \"trailingStopOffset\": \"1000000000\",\n  \"trailingStopOffsetPercent\": \"1000000000\",\n  \"leverage\": \"1000000000\",\n  \"index\": \"string\",\n  \"positionId\": \"string\",\n  \"parentOrderId\": \"string\",\n  \"expiration\": \"2026-05-01T12:30:00.000Z\",\n  \"amount\": \"1000000000\",\n  \"indexPrice\": \"1000000000\",\n  \"settlementOraclePrice\": \"1000000000\",\n  \"createdAt\": \"2026-05-01T12:30:00.000Z\",\n  \"error\": \"string\",\n  \"realizedPnl\": \"1000000000\",\n  \"rawRealizedPnl\": \"1000000000\",\n  \"profitAdjustmentApplied\": true,\n  \"executedAfterPause\": true,\n  \"sizeMode\": \"quote\",\n  \"baseSize\": \"1000000000\",\n  \"reservedAmount\": \"1000000000\",\n  \"errorCode\": \"string\",\n  \"reason\": \"force_close\"\n}","schema":{"type":"object · nullable","types":["object"],"description":"Orden que produjo este evento; null para eventos que la plataforma generó por sí misma, como financiación o un cierre forzoso.","nullable":true,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[{"name":"id","type":"string · uuid","required":true,"description":"Identificador de la orden.","example":"00000000-0000-4000-8000-000000000000","schema":{"type":"string · uuid","types":["string"],"description":"Identificador de la orden.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"},"properties":[],"variants":[]}},{"name":"txId","type":"string","required":true,"description":"Identificador de la orden. Se conserva por compatibilidad con versiones anteriores, siempre igual a `id`.","example":"string","schema":{"type":"string","types":["string"],"description":"Identificador de la orden. Se conserva por compatibilidad con versiones anteriores, siempre igual a `id`.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]}},{"name":"trader","type":"string · uuid","required":true,"description":"Cuenta del trader a la que pertenece la orden.","example":"00000000-0000-4000-8000-000000000000","schema":{"type":"string · uuid","types":["string"],"description":"Cuenta del trader a la que pertenece la orden.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"},"properties":[],"variants":[]}},{"name":"market","type":"string · uuid","required":true,"description":"Mercado en el que se coloca la orden.","example":"00000000-0000-4000-8000-000000000000","schema":{"type":"string · uuid","types":["string"],"description":"Mercado en el que se coloca la orden.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"},"properties":[],"variants":[]}},{"name":"status","type":"string · enum","required":true,"description":"Estado del ciclo de vida: `active` mientras espera, `executed` una vez ejecutada, `canceled` cuando es cancelada por el trader o la plataforma, `canceled_by_update` cuando es reemplazada por una edición, `canceled_by_position` cuando la posición a la que estaba vinculada desapareció, `canceled_by_error` cuando falló la ejecución — consulta `errorCode`.","example":"active","schema":{"type":"string · enum","types":["string"],"description":"Estado del ciclo de vida: `active` mientras espera, `executed` una vez ejecutada, `canceled` cuando es cancelada por el trader o la plataforma, `canceled_by_update` cuando es reemplazada por una edición, `canceled_by_position` cuando la posición a la que estaba vinculada desapareció, `canceled_by_error` cuando falló la ejecución — consulta `errorCode`.","enum":["active","canceled","canceled_by_update","canceled_by_error","canceled_by_position","executed"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]}},{"name":"type","type":"string · enum","required":true,"description":"Tipo de orden. `liquidation` marca una orden que el propio motor generó.","example":"market","schema":{"type":"string · enum","types":["string"],"description":"Tipo de orden. `liquidation` marca una orden que el propio motor generó.","enum":["market","limit","stop","trailing_stop","take","stop_limit","stop_market","liquidation"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]}},{"name":"direction","type":"string · enum","required":true,"description":"Dirección de la orden.","example":"long","schema":{"type":"string · enum","types":["string"],"description":"Dirección de la orden.","enum":["long","short"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]}},{"name":"triggerPrice","type":"string · int32","required":true,"description":"Precio al que se dispara la orden, fp9 en bruto. `0` cuando la orden no lleva disparador.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Precio al que se dispara la orden, fp9 en bruto. `0` cuando la orden no lleva disparador.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"requestedTriggerPrice","type":"string · int32 · nullable","required":true,"description":"Precio de activación tal como se solicitó, antes de que el motor lo desplazara hasta la distancia mínima de stop, fp9 en bruto. Nulo cuando el precio solicitado se mantuvo tal cual.","example":"1000000000","schema":{"type":"string · int32 · nullable","types":["string"],"description":"Precio de activación tal como se solicitó, antes de que el motor lo desplazara hasta la distancia mínima de stop, fp9 en bruto. Nulo cuando el precio solicitado se mantuvo tal cual.","example":"1000000000","nullable":true,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"stopPrice","type":"string · int32","required":true,"description":"Precio de activación de una orden `stop_market` / `stop_limit`, fp9 en bruto; `0` para cualquier otro tipo.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Precio de activación de una orden `stop_market` / `stop_limit`, fp9 en bruto; `0` para cualquier otro tipo.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"limitPrice","type":"string · int32","required":true,"description":"Precio al que se coloca la orden una vez activada, fp9 en bruto: el precio stop-limit, recurriendo al precio de activación como alternativa.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Precio al que se coloca la orden una vez activada, fp9 en bruto: el precio stop-limit, recurriendo al precio de activación como alternativa.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"stopTriggerPrice","type":"string · int32","required":true,"description":"Stop-loss asociado a la orden, fp9 en bruto. `0` cuando no hay ninguno asociado.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Stop-loss asociado a la orden, fp9 en bruto. `0` cuando no hay ninguno asociado.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"takeTriggerPrice","type":"string · int32","required":true,"description":"Take-profit asociado a la orden, fp9 en bruto. `0` cuando no hay ninguno asociado.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Take-profit asociado a la orden, fp9 en bruto. `0` cuando no hay ninguno asociado.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"trailingStopActivationPrice","type":"string · int32","required":true,"description":"Precio al que un stop móvil comienza a hacer seguimiento, fp9 sin procesar. `0` cuando hace seguimiento desde la creación.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Precio al que un stop móvil comienza a hacer seguimiento, fp9 sin procesar. `0` cuando hace seguimiento desde la creación.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"trailingStopOffset","type":"string · int32","required":true,"description":"Distancia de seguimiento como un importe absoluto de cotización, fp9 sin procesar. `0` cuando la distancia se establece como porcentaje.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Distancia de seguimiento como un importe absoluto de cotización, fp9 sin procesar. `0` cuando la distancia se establece como porcentaje.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"trailingStopOffsetPercent","type":"string · int32","required":true,"description":"Distancia de seguimiento como una fracción del precio, fp9 sin procesar. `0` cuando la distancia es absoluta.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Distancia de seguimiento como una fracción del precio, fp9 sin procesar. `0` cuando la distancia es absoluta.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"leverage","type":"string · int32 · nullable","required":true,"description":"Apalancamiento de la orden, fp9 en bruto. Nulo en órdenes de cierre, que heredan el apalancamiento de la posición.","example":"1000000000","schema":{"type":"string · int32 · nullable","types":["string"],"description":"Apalancamiento de la orden, fp9 en bruto. Nulo en órdenes de cierre, que heredan el apalancamiento de la posición.","example":"1000000000","nullable":true,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"index","type":"string","required":true,"description":"Identificador de la orden. Se conserva por compatibilidad con versiones anteriores, siempre igual a `id`.","example":"string","schema":{"type":"string","types":["string"],"description":"Identificador de la orden. Se conserva por compatibilidad con versiones anteriores, siempre igual a `id`.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]}},{"name":"positionId","type":"string · nullable","required":true,"description":"Posición a la que está asociada una orden de cierre. Nulo para órdenes que abren o aumentan una posición.","example":"string","schema":{"type":"string · nullable","types":["string","null"],"description":"Posición a la que está asociada una orden de cierre. Nulo para órdenes que abren o aumentan una posición.","nullable":true,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]}},{"name":"parentOrderId","type":"string · nullable","required":true,"description":"Orden de la que se generó esta: un stop o un take creado a partir de `stopTriggerPrice` / `takeTriggerPrice`, o la orden limit en la que se convirtió un `stop_limit`. Nulo cuando la orden se envió directamente.","example":"string","schema":{"type":"string · nullable","types":["string","null"],"description":"Orden de la que se generó esta: un stop o un take creado a partir de `stopTriggerPrice` / `takeTriggerPrice`, o la orden limit en la que se convirtió un `stop_limit`. Nulo cuando la orden se envió directamente.","nullable":true,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]}},{"name":"expiration","type":"string · date-time · nullable","required":true,"description":"Siempre nulo. Se mantiene por compatibilidad con versiones anteriores: las órdenes no expiran por sí solas.","example":"2026-05-01T12:30:00.000Z","schema":{"type":"string · date-time · nullable","types":["string"],"description":"Siempre nulo. Se mantiene por compatibilidad con versiones anteriores: las órdenes no expiran por sí solas.","example":"2026-05-01T12:30:00.000Z","nullable":true,"readOnly":false,"writeOnly":false,"constraints":{"format":"date-time"},"properties":[],"variants":[]}},{"name":"amount","type":"string · int32","required":true,"description":"Tamaño de la orden, fp9 en bruto, en la unidad que usa su clase: en una orden de incremento, un importe de cotización — la reserva mientras espera, y lo que realmente gastó una vez ejecutada; en una orden de cierre (`stop`, `take`, `trailing_stop`), el tamaño del activo base que cierra, tal como se solicitó al crearla.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Tamaño de la orden, fp9 en bruto, en la unidad que usa su clase: en una orden de incremento, un importe de cotización — la reserva mientras espera, y lo que realmente gastó una vez ejecutada; en una orden de cierre (`stop`, `take`, `trailing_stop`), el tamaño del activo base que cierra, tal como se solicitó al crearla.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"indexPrice","type":"string · int32 · nullable","required":true,"description":"Precio índice al que se ejecutó la orden, fp9 en bruto. Nulo mientras la orden no se haya ejecutado.","example":"1000000000","schema":{"type":"string · int32 · nullable","types":["string"],"description":"Precio índice al que se ejecutó la orden, fp9 en bruto. Nulo mientras la orden no se haya ejecutado.","example":"1000000000","nullable":true,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"settlementOraclePrice","type":"string · int32","required":true,"description":"Siempre `1000000000` (1.0). Se mantiene por compatibilidad con versiones anteriores.","example":"1000000000","schema":{"type":"string · int32","types":["string"],"description":"Siempre `1000000000` (1.0). Se mantiene por compatibilidad con versiones anteriores.","example":"1000000000","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"createdAt","type":"string · date-time","required":true,"description":"Cuándo se aceptó la orden.","example":"2026-05-01T12:30:00.000Z","schema":{"type":"string · date-time","types":["string"],"description":"Cuándo se aceptó la orden.","example":"2026-05-01T12:30:00.000Z","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{"format":"date-time"},"properties":[],"variants":[]}},{"name":"error","type":"string · nullable","required":true,"description":"Siempre null. Se mantiene por compatibilidad hacia atrás — utilice `errorCode`.","example":"string","schema":{"type":"string · nullable","types":["string","null"],"description":"Siempre null. Se mantiene por compatibilidad hacia atrás — utilice `errorCode`.","nullable":true,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]}},{"name":"realizedPnl","type":"string · int32 · nullable","required":true,"description":"Pnl realizado por esta orden, fp9 en bruto. Se establece solo en una orden de cierre ejecutada; null mientras está pendiente y en órdenes que abren o aumentan una posición.","example":"1000000000","schema":{"type":"string · int32 · nullable","types":["string"],"description":"Pnl realizado por esta orden, fp9 en bruto. Se establece solo en una orden de cierre ejecutada; null mientras está pendiente y en órdenes que abren o aumentan una posición.","example":"1000000000","nullable":true,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"rawRealizedPnl","type":"string · int32 · nullable","required":true,"description":"Pnl realizado antes del ajuste de 60 segundos, fp9 en bruto. Difiere de `realizedPnl` solo cuando se activó el ajuste.","example":"1000000000","schema":{"type":"string · int32 · nullable","types":["string"],"description":"Pnl realizado antes del ajuste de 60 segundos, fp9 en bruto. Difiere de `realizedPnl` solo cuando se activó el ajuste.","example":"1000000000","nullable":true,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"profitAdjustmentApplied","type":"boolean","required":true,"description":"Si el ajuste de 60 segundos limitó la ganancia de esta orden — dentro de un minuto de una apertura o un aumento, el pnl de la posición no puede crecer por encima de lo que era en ese momento.","example":"true","schema":{"type":"boolean","types":["boolean"],"description":"Si el ajuste de 60 segundos limitó la ganancia de esta orden — dentro de un minuto de una apertura o un aumento, el pnl de la posición no puede crecer por encima de lo que era en ese momento.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]}},{"name":"executedAfterPause","type":"boolean","required":true,"description":"Indica si la orden se ejecutó después de una pausa del mercado. No lo establece el motor actual — siempre `false`.","example":"true","schema":{"type":"boolean","types":["boolean"],"description":"Indica si la orden se ejecutó después de una pausa del mercado. No lo establece el motor actual — siempre `false`.","nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]}},{"name":"sizeMode","type":"string · enum","required":true,"description":"Cómo se expresó el tamaño al crearse: `quote` dimensiona la orden por `amount`, `base` la dimensiona por `baseSize`.","example":"quote","schema":{"type":"string · enum","types":["string"],"description":"Cómo se expresó el tamaño al crearse: `quote` dimensiona la orden por `amount`, `base` la dimensiona por `baseSize`.","enum":["quote","base"],"nullable":false,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]}},{"name":"baseSize","type":"string · int32 · nullable","required":true,"description":"Tamaño de la orden en unidades del activo base, fp9 en bruto. Nulo para órdenes dimensionadas por `quote`.","example":"1000000000","schema":{"type":"string · int32 · nullable","types":["string"],"description":"Tamaño de la orden en unidades del activo base, fp9 en bruto. Nulo para órdenes dimensionadas por `quote`.","example":"1000000000","nullable":true,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"reservedAmount","type":"string · int32 · nullable","required":true,"description":"Importe de quote reservado cuando se creó la orden con sizeMode=base, fp9 en bruto. Se mantiene en la reserva original después de la ejecución, mientras que `amount` se reescribe a lo que se gastó. Nulo para órdenes dimensionadas por `quote`, donde `amount` es la reserva.","example":"1000000000","schema":{"type":"string · int32 · nullable","types":["string"],"description":"Importe de quote reservado cuando se creó la orden con sizeMode=base, fp9 en bruto. Se mantiene en la reserva original después de la ejecución, mientras que `amount` se reescribe a lo que se gastó. Nulo para órdenes dimensionadas por `quote`, donde `amount` es la reserva.","example":"1000000000","nullable":true,"readOnly":false,"writeOnly":false,"constraints":{"format":"int32","pattern":"^(?:-?[1-9][0-9]*|0)$"},"properties":[],"variants":[]}},{"name":"errorCode","type":"string · nullable","required":true,"description":"Por qué falló la ejecución, establecido junto con el estado `canceled_by_error` — por ejemplo `insufficient_reserve_at_execution`, `order_below_min_notional`, `order_exceeds_market_depth` o `slippage_tolerance`. Nulo en caso contrario.","example":"string","schema":{"type":"string · nullable","types":["string","null"],"description":"Por qué falló la ejecución, establecido junto con el estado `canceled_by_error` — por ejemplo `insufficient_reserve_at_execution`, `order_below_min_notional`, `order_exceeds_market_depth` o `slippage_tolerance`. Nulo en caso contrario.","nullable":true,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]}},{"name":"reason","type":"string · enum · nullable","required":true,"description":"Por qué la plataforma canceló la orden por sí misma, por ejemplo `force_close` o `weekly_session_risk_close`. Nulo para cancelaciones impulsadas por el trader.","example":"force_close","schema":{"type":"string · enum · nullable","types":["string"],"description":"Por qué la plataforma canceló la orden por sí misma, por ejemplo `force_close` o `weekly_session_risk_close`. Nulo para cancelaciones impulsadas por el trader.","enum":["force_close","stop_accounts_fail","stop_accounts_freeze","stop_accounts_promote","stop_accounts_manual","weekly_session_risk_close",null],"nullable":true,"readOnly":false,"writeOnly":false,"constraints":{},"properties":[],"variants":[]}}],"variants":[]}}],"variants":[]},"variants":[]},"example":"[\n  {\n    \"idx\": [\n      \"string\"\n    ],\n    \"txId\": [\n      \"string\"\n    ],\n    \"version\": 0,\n    \"openedAt\": \"2026-05-01T12:30:00.000Z\",\n    \"lastUpdatedAt\": \"2026-05-01T12:30:00.000Z\",\n    \"closedAt\": \"2026-05-01T12:30:00.000Z\",\n    \"type\": \"long\",\n    \"status\": \"opened\",\n    \"market\": \"00000000-0000-4000-8000-000000000000\",\n    \"trader\": \"00000000-0000-4000-8000-000000000000\",\n    \"size\": \"1000000000\",\n    \"notional\": \"1000000000\",\n    \"fraction\": \"1000000000\",\n    \"margin\": \"1000000000\",\n    \"pnl\": \"1000000000\",\n    \"funding\": \"1000000000\",\n    \"rolloverFee\": \"1000000000\",\n    \"settlementOraclePrice\": \"1000000000\",\n    \"fee\": \"1000000000\",\n    \"feeRate\": \"1000000000\",\n    \"exchangedQuote\": \"1000000000\",\n    \"exchangedBase\": \"1000000000\",\n    \"direction\": \"long\",\n    \"eventName\": \"addMargin\",\n    \"pnlInEvent\": \"1000000000\",\n    \"rawPnlInEvent\": \"1000000000\",\n    \"profitAdjustmentApplied\": true,\n    \"holdingTimeMs\": [\n      \"string\"\n    ],\n    \"feeInEvent\": \"1000000000\",\n    \"fundingInEvent\": \"1000000000\",\n    \"rolloverFeeInEvent\": \"1000000000\",\n    \"executionFeeRate\": \"1000000000\",\n    \"executionFeeInEvent\": \"1000000000\",\n    \"executionFee\": \"1000000000\",\n    \"timestamp\": \"2026-05-01T12:30:00.000Z\",\n    \"isOnchain\": true,\n    \"roe\": \"1000000000\",\n    \"scalpingCoefficient\": \"1000000000\",\n    \"closeReason\": [\n      \"string\"\n    ],\n    \"order\": {\n      \"id\": \"00000000-0000-4000-8000-000000000000\",\n      \"txId\": \"string\",\n      \"trader\": \"00000000-0000-4000-8000-000000000000\",\n      \"market\": \"00000000-0000-4000-8000-000000000000\",\n      \"status\": \"active\",\n      \"type\": \"market\",\n      \"direction\": \"long\",\n      \"triggerPrice\": \"1000000000\",\n      \"requestedTriggerPrice\": \"1000000000\",\n      \"stopPrice\": \"1000000000\",\n      \"limitPrice\": \"1000000000\",\n      \"stopTriggerPrice\": \"1000000000\",\n      \"takeTriggerPrice\": \"1000000000\",\n      \"trailingStopActivationPrice\": \"1000000000\",\n      \"trailingStopOffset\": \"1000000000\",\n      \"trailingStopOffsetPercent\": \"1000000000\",\n      \"leverage\": \"1000000000\",\n      \"index\": \"string\",\n      \"positionId\": \"string\",\n      \"parentOrderId\": \"string\",\n      \"expiration\": \"2026-05-01T12:30:00.000Z\",\n      \"amount\": \"1000000000\",\n      \"indexPrice\": \"1000000000\",\n      \"settlementOraclePrice\": \"1000000000\",\n      \"createdAt\": \"2026-05-01T12:30:00.000Z\",\n      \"error\": \"string\",\n      \"realizedPnl\": \"1000000000\",\n      \"rawRealizedPnl\": \"1000000000\",\n      \"profitAdjustmentApplied\": true,\n      \"executedAfterPause\": true,\n      \"sizeMode\": \"quote\",\n      \"baseSize\": \"1000000000\",\n      \"reservedAmount\": \"1000000000\",\n      \"errorCode\": \"string\",\n      \"reason\": \"force_close\"\n    }\n  }\n]","headers":[]}],"security":[{"name":"bearer","type":"http · bearer","description":"Clave de API personal, con el prefijo `usk_`.","required":true,"scopes":[]}],"codeSamples":[{"label":"cURL","language":"bash","source":"curl --request GET 'https://api.upscale.trade/positions/{positionId}/history' \\\n  --header 'Accept: application/json' \\\n  --header 'Authorization: Bearer YOUR_API_KEY'"},{"label":"JavaScript","language":"javascript","source":"const response = await fetch(\"https://api.upscale.trade/positions/{positionId}/history\", {\n  method: \"GET\",\n  headers: {\n    \"Accept\": \"application/json\",\n    \"Authorization\": \"Bearer YOUR_API_KEY\"\n  },\n});\nconsole.log(response.status, await response.text());"},{"label":"Python","language":"python","source":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.upscale.trade/positions/{positionId}/history\",\n    headers={\"Accept\":\"application/json\",\"Authorization\":\"Bearer YOUR_API_KEY\"},\n    timeout=30,\n)\nprint(response.status_code, response.text)"}]},"breadcrumbs":[{"title":"Qué es el prop trading","url":"https://docs.upscale.trade/es"},{"title":"Developers","url":"https://docs.upscale.trade/es/developers"},{"title":"Obtener todos los eventos por posición","url":"https://docs.upscale.trade/es/developers/operations/getpositionevents"}],"headings":[{"depth":2,"id":"authorization","title":"Autorización"},{"depth":2,"id":"parameters","title":"Parámetros"},{"depth":2,"id":"examples","title":"Ejemplos"},{"depth":2,"id":"responses","title":"Respuestas"}],"markdown":"# Obtener todos los eventos por posición\n\n`GET /positions/{positionId}/history`\n\nQué ocurrió con una posición, las más recientes primero: aumentos, cierres parciales y totales, liquidación, cierre forzoso, cambios de margen.\n\n- Los pagos de financiación quedan fuera de este feed.\n- Un cierre forzoso lleva consigo el evento de mercado que tiene detrás, que es donde reside el motivo del mismo.\n\n<a id=\"authorization\"></a>\n\n## Autorización\n\nbearer: http · bearer (obligatorio). Clave de API personal, con el prefijo `usk_`.\n\n<a id=\"parameters\"></a>\n\n## Parámetros\n\n- path: positionId (string · uuid; obligatorio). Identificador de posición. Su cuenta debe pertenecer al llamador.\n\nTipo: string · uuid\n\nformat: uuid\n\n<a id=\"example-curl\"></a>\n\n## Ejemplo · cURL\n\n```bash\ncurl --request GET 'https://api.upscale.trade/positions/{positionId}/history' \\\n  --header 'Accept: application/json' \\\n  --header 'Authorization: Bearer YOUR_API_KEY'\n```\n\n<a id=\"example-javascript\"></a>\n\n## Ejemplo · JavaScript\n\n```javascript\nconst response = await fetch(\"https://api.upscale.trade/positions/{positionId}/history\", {\n  method: \"GET\",\n  headers: {\n    \"Accept\": \"application/json\",\n    \"Authorization\": \"Bearer YOUR_API_KEY\"\n  },\n});\nconsole.log(response.status, await response.text());\n```\n\n<a id=\"example-python\"></a>\n\n## Ejemplo · Python\n\n```python\nimport requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.upscale.trade/positions/{positionId}/history\",\n    headers={\"Accept\":\"application/json\",\"Authorization\":\"Bearer YOUR_API_KEY\"},\n    timeout=30,\n)\nprint(response.status_code, response.text)\n```\n\n<a id=\"response-401\"></a>\n\n## Respuesta 401\n\n**401**  — No autorizado\n\n<a id=\"response-403\"></a>\n\n## Respuesta 403\n\n**403**  — La cuenta pertenece a otro usuario (`account_access_denied`), o la solicitud se autentica con una clave de API mientras `api_trading` está deshabilitado en la cuenta (`api_trading_not_enabled`).\n\n<a id=\"response-404\"></a>\n\n## Respuesta 404\n\n**404**  — No existe ninguna posición con este identificador.\n\n<a id=\"response-429\"></a>\n\n## Respuesta 429\n\n**429**  — Se superó el límite de velocidad de la clave de API (`api_key_rate_limit_exceeded`). `Retry-After` indica cuándo volver; el cuerpo incluye el bucket (`read` / `write`), la ventana que se activó, su límite y `retryAt`.\n\n<a id=\"response-default-positioneventresponse\"></a>\n\n## Respuesta default · PositionEventResponse\n\n**default** application/json — Respuesta\n\nTipo: object[]\n\n[]Esquema: PositionEventResponse\n\n[]Tipo: object\n\n[]Campos obligatorios: idx, txId, version, openedAt, lastUpdatedAt, closedAt, type, status, market, trader, size, notional, fraction, margin, pnl, funding, rolloverFee, settlementOraclePrice, fee, feeRate, exchangedQuote, exchangedBase, direction, eventName, pnlInEvent, rawPnlInEvent, profitAdjustmentApplied, holdingTimeMs, feeInEvent, fundingInEvent, rolloverFeeInEvent, executionFeeRate, executionFeeInEvent, executionFee, timestamp, isOnchain, roe, scalpingCoefficient, closeReason, order\n\n[]Tipos de campos obligatorios: idx (string[]; obligatorio), txId (string[]; obligatorio), version (number; obligatorio), openedAt (string · date-time; obligatorio), lastUpdatedAt (string · date-time; obligatorio), closedAt (string · date-time · nullable; obligatorio), type (string · enum; obligatorio), status (string · enum; obligatorio), market (string · uuid; obligatorio), trader (string · uuid; obligatorio), size (string · int32; obligatorio), notional (string · int32; obligatorio), fraction (string · int32; obligatorio), margin (string · int32; obligatorio), pnl (string · int32 · nullable; obligatorio), funding (string · int32 · nullable; obligatorio), rolloverFee (string · int32; obligatorio), settlementOraclePrice (string · int32; obligatorio), fee (string · int32; obligatorio), feeRate (string · int32; obligatorio), exchangedQuote (string · int32; obligatorio), exchangedBase (string · int32; obligatorio), direction (string · enum; obligatorio), eventName (string · enum; obligatorio), pnlInEvent (string · int32; obligatorio), rawPnlInEvent (string · int32; obligatorio), profitAdjustmentApplied (boolean; obligatorio), holdingTimeMs (string[]; obligatorio), feeInEvent (string · int32; obligatorio), fundingInEvent (string · int32; obligatorio), rolloverFeeInEvent (string · int32; obligatorio), executionFeeRate (string · int32; obligatorio), executionFeeInEvent (string · int32; obligatorio), executionFee (string · int32; obligatorio), timestamp (string · date-time; obligatorio), isOnchain (boolean; obligatorio), roe (string · int32; obligatorio), scalpingCoefficient (string · int32; obligatorio), closeReason (string[]; obligatorio), order (object · nullable; obligatorio)\n\n- []idx (string[]; obligatorio)\n\n[]idx ejemplo: [\n  \"string\"\n]\n\n[]idx.Tipo: string[]\n\n[]idx.Identificador de la posición. Mismo valor que `txId`.\n\n[]idx.[]Tipo: string\n\n- []txId (string[]; obligatorio)\n\n[]txId ejemplo: [\n  \"string\"\n]\n\n[]txId.Tipo: string[]\n\n[]txId.Identificador de la posición. Se mantiene por compatibilidad hacia atrás, siempre igual a `idx`.\n\n[]txId.[]Tipo: string\n\n- []version (number; obligatorio)\n\n[]version ejemplo: 0\n\n[]version.Tipo: number\n\n[]version.Revisión de la posición: incrementada por cada evento que se le aplica.\n\n- []openedAt (string · date-time; obligatorio)\n\n[]openedAt ejemplo: 2026-05-01T12:30:00.000Z\n\n[]openedAt.Tipo: string · date-time\n\n[]openedAt.Cuándo se abrió la posición.\n\n[]openedAt.format: date-time\n\n- []lastUpdatedAt (string · date-time; obligatorio)\n\n[]lastUpdatedAt ejemplo: 2026-05-01T12:30:00.000Z\n\n[]lastUpdatedAt.Tipo: string · date-time\n\n[]lastUpdatedAt.Cuándo se aplicó el último evento a la posición.\n\n[]lastUpdatedAt.format: date-time\n\n- []closedAt (string · date-time · nullable; obligatorio)\n\n[]closedAt ejemplo: 2026-05-01T12:30:00.000Z\n\n[]closedAt.Tipo: string · date-time · nullable\n\n[]closedAt.Cuándo se cerró la posición; null mientras sigue abierta.\n\n[]closedAt.format: date-time\n\n- []type (string · enum; obligatorio)\n\n[]type ejemplo: long\n\n[]type.Tipo: string · enum\n\n[]type.Dirección de la posición. Mismo valor que `direction`.\n\n[]type.Valores permitidos: [\"long\",\"short\"]\n\n- []status (string · enum; obligatorio)\n\n[]status ejemplo: opened\n\n[]status.Tipo: string · enum\n\n[]status.Si la posición sigue abierta, fue cerrada por el trader o fue liquidada.\n\n[]status.Valores permitidos: [\"opened\",\"closed\",\"liquidated\"]\n\n- []market (string · uuid; obligatorio)\n\n[]market ejemplo: 00000000-0000-4000-8000-000000000000\n\n[]market.Tipo: string · uuid\n\n[]market.Mercado en el que se mantiene la posición.\n\n[]market.format: uuid\n\n[]market.pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$\n\n- []trader (string · uuid; obligatorio)\n\n[]trader ejemplo: 00000000-0000-4000-8000-000000000000\n\n[]trader.Tipo: string · uuid\n\n[]trader.Cuenta del trader a la que pertenece la posición.\n\n[]trader.format: uuid\n\n[]trader.pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$\n\n- []size (string · int32; obligatorio)\n\n[]size ejemplo: 1000000000\n\n[]size.Tipo: string · int32\n\n[]size.Tamaño de la posición en unidades del activo base, fp9 sin procesar.\n\n[]size.format: int32\n\n[]size.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []notional (string · int32; obligatorio)\n\n[]notional ejemplo: 1000000000\n\n[]notional.Tipo: string · int32\n\n[]notional.Nocional abierto de la posición en moneda de cotización, fp9 sin procesar — tamaño al precio de entrada.\n\n[]notional.format: int32\n\n[]notional.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []fraction (string · int32; obligatorio)\n\n[]fraction ejemplo: 1000000000\n\n[]fraction.Tipo: string · int32\n\n[]fraction.Siempre `0`. Se mantiene por compatibilidad hacia atrás.\n\n[]fraction.format: int32\n\n[]fraction.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []margin (string · int32; obligatorio)\n\n[]margin ejemplo: 1000000000\n\n[]margin.Tipo: string · int32\n\n[]margin.Margen que actualmente respalda la posición, fp9 sin procesar. Cambia con pnl, financiación y cambios manuales de margen.\n\n[]margin.format: int32\n\n[]margin.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []pnl (string · int32 · nullable; obligatorio)\n\n[]pnl ejemplo: 1000000000\n\n[]pnl.Tipo: string · int32 · nullable\n\n[]pnl.Pnl realizado acumulado a lo largo de cada evento de la posición, fp9 sin procesar.\n\n[]pnl.format: int32\n\n[]pnl.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []funding (string · int32 · nullable; obligatorio)\n\n[]funding ejemplo: 1000000000\n\n[]funding.Tipo: string · int32 · nullable\n\n[]funding.Financiación pagada (negativa) o recibida (positiva) durante la vida de la posición, fp9 en bruto.\n\n[]funding.format: int32\n\n[]funding.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []rolloverFee (string · int32; obligatorio)\n\n[]rolloverFee ejemplo: 1000000000\n\n[]rolloverFee.Tipo: string · int32\n\n[]rolloverFee.Siempre `0`. Se mantiene por compatibilidad hacia atrás.\n\n[]rolloverFee.format: int32\n\n[]rolloverFee.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []settlementOraclePrice (string · int32; obligatorio)\n\n[]settlementOraclePrice ejemplo: 1000000000\n\n[]settlementOraclePrice.Tipo: string · int32\n\n[]settlementOraclePrice.Siempre `1000000000` (1.0). Se mantiene por compatibilidad con versiones anteriores.\n\n[]settlementOraclePrice.format: int32\n\n[]settlementOraclePrice.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []fee (string · int32; obligatorio)\n\n[]fee ejemplo: 1000000000\n\n[]fee.Tipo: string · int32\n\n[]fee.Comisiones de trading cobradas durante la vida de la posición, fp9 en bruto.\n\n[]fee.format: int32\n\n[]fee.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []feeRate (string · int32; obligatorio)\n\n[]feeRate ejemplo: 1000000000\n\n[]feeRate.Tipo: string · int32\n\n[]feeRate.Tasa de comisión aplicada a la posición, fp9 fracción en bruto (`1000000` = 0.1%).\n\n[]feeRate.format: int32\n\n[]feeRate.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []exchangedQuote (string · int32; obligatorio)\n\n[]exchangedQuote ejemplo: 1000000000\n\n[]exchangedQuote.Tipo: string · int32\n\n[]exchangedQuote.Importe de cotización intercambiado por el evento más reciente, fp9 en bruto.\n\n[]exchangedQuote.format: int32\n\n[]exchangedQuote.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []exchangedBase (string · int32; obligatorio)\n\n[]exchangedBase ejemplo: 1000000000\n\n[]exchangedBase.Tipo: string · int32\n\n[]exchangedBase.Importe base intercambiado por el evento más reciente, fp9 en bruto.\n\n[]exchangedBase.format: int32\n\n[]exchangedBase.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []direction (string · enum; obligatorio)\n\n[]direction ejemplo: long\n\n[]direction.Tipo: string · enum\n\n[]direction.Dirección de la posición.\n\n[]direction.Valores permitidos: [\"long\",\"short\"]\n\n- []eventName (string · enum; obligatorio)\n\n[]eventName ejemplo: addMargin\n\n[]eventName.Tipo: string · enum\n\n[]eventName.Tipo del evento más reciente aplicado a la posición.\n\n[]eventName.Valores permitidos: [\"addMargin\",\"removeMargin\",\"closePosition\",\"increasePosition\",\"liquidate\",\"forceClose\",\"payFunding\"]\n\n- []pnlInEvent (string · int32; obligatorio)\n\n[]pnlInEvent ejemplo: 1000000000\n\n[]pnlInEvent.Tipo: string · int32\n\n[]pnlInEvent.Pnl realizado del evento más reciente, fp9 en bruto.\n\n[]pnlInEvent.format: int32\n\n[]pnlInEvent.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []rawPnlInEvent (string · int32; obligatorio)\n\n[]rawPnlInEvent ejemplo: 1000000000\n\n[]rawPnlInEvent.Tipo: string · int32\n\n[]rawPnlInEvent.Pnl realizado del evento más reciente antes del ajuste de 60 segundos, fp9 en bruto. Difiere de `pnlInEvent` solo cuando se activó el ajuste.\n\n[]rawPnlInEvent.format: int32\n\n[]rawPnlInEvent.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []profitAdjustmentApplied (boolean; obligatorio)\n\n[]profitAdjustmentApplied ejemplo: true\n\n[]profitAdjustmentApplied.Tipo: boolean\n\n[]profitAdjustmentApplied.Si el ajuste de 60 segundos limitó la ganancia del evento más reciente — dentro de un minuto de una apertura o un aumento de la posición, el pnl de la posición no puede crecer por encima de lo que era en ese momento.\n\n- []holdingTimeMs (string[]; obligatorio)\n\n[]holdingTimeMs ejemplo: [\n  \"string\"\n]\n\n[]holdingTimeMs.Tipo: string[]\n\n[]holdingTimeMs.Cuánto tiempo se mantuvo la posición antes del cierre más reciente, en milisegundos, contado desde la apertura o el último incremento. Nulo en eventos que no son cierres.\n\n[]holdingTimeMs.[]Tipo: string\n\n- []feeInEvent (string · int32; obligatorio)\n\n[]feeInEvent ejemplo: 1000000000\n\n[]feeInEvent.Tipo: string · int32\n\n[]feeInEvent.Comisión cobrada por el evento más reciente, fp9 en bruto.\n\n[]feeInEvent.format: int32\n\n[]feeInEvent.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []fundingInEvent (string · int32; obligatorio)\n\n[]fundingInEvent ejemplo: 1000000000\n\n[]fundingInEvent.Tipo: string · int32\n\n[]fundingInEvent.Financiación liquidada por el evento más reciente, fp9 en bruto.\n\n[]fundingInEvent.format: int32\n\n[]fundingInEvent.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []rolloverFeeInEvent (string · int32; obligatorio)\n\n[]rolloverFeeInEvent ejemplo: 1000000000\n\n[]rolloverFeeInEvent.Tipo: string · int32\n\n[]rolloverFeeInEvent.Siempre `0`. Se mantiene por compatibilidad hacia atrás.\n\n[]rolloverFeeInEvent.format: int32\n\n[]rolloverFeeInEvent.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []executionFeeRate (string · int32; obligatorio)\n\n[]executionFeeRate ejemplo: 1000000000\n\n[]executionFeeRate.Tipo: string · int32\n\n[]executionFeeRate.Siempre `0`. Se mantiene por compatibilidad hacia atrás.\n\n[]executionFeeRate.format: int32\n\n[]executionFeeRate.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []executionFeeInEvent (string · int32; obligatorio)\n\n[]executionFeeInEvent ejemplo: 1000000000\n\n[]executionFeeInEvent.Tipo: string · int32\n\n[]executionFeeInEvent.Siempre `0`. Se mantiene por compatibilidad hacia atrás.\n\n[]executionFeeInEvent.format: int32\n\n[]executionFeeInEvent.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []executionFee (string · int32; obligatorio)\n\n[]executionFee ejemplo: 1000000000\n\n[]executionFee.Tipo: string · int32\n\n[]executionFee.Siempre `0`. Se mantiene por compatibilidad hacia atrás.\n\n[]executionFee.format: int32\n\n[]executionFee.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []timestamp (string · date-time; obligatorio)\n\n[]timestamp ejemplo: 2026-05-01T12:30:00.000Z\n\n[]timestamp.Tipo: string · date-time\n\n[]timestamp.Marca de tiempo del evento más reciente. Mismo valor que `lastUpdatedAt`.\n\n[]timestamp.format: date-time\n\n- []isOnchain (boolean; obligatorio)\n\n[]isOnchain ejemplo: true\n\n[]isOnchain.Tipo: boolean\n\n[]isOnchain.Siempre `true`. Se mantiene por compatibilidad con versiones anteriores.\n\n- []roe (string · int32; obligatorio)\n\n[]roe ejemplo: 1000000000\n\n[]roe.Tipo: string · int32\n\n[]roe.Rentabilidad sobre el capital de la posición — pnl realizado sobre el margen aportado, fp9 fracción sin procesar.\n\n[]roe.format: int32\n\n[]roe.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []scalpingCoefficient (string · int32; obligatorio)\n\n[]scalpingCoefficient ejemplo: 1000000000\n\n[]scalpingCoefficient.Tipo: string · int32\n\n[]scalpingCoefficient.Multiplicador dinámico de spread que se aplicó a la posición, fp9 sin procesar (`1000000000` = 1.0). Por encima de 1 cuando la operación quedó dentro de la ventana de scalping del mercado.\n\n[]scalpingCoefficient.format: int32\n\n[]scalpingCoefficient.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []closeReason (string[]; obligatorio)\n\n[]closeReason ejemplo: [\n  \"string\"\n]\n\n[]closeReason.Tipo: string[]\n\n[]closeReason.Por qué la plataforma cerró la posición (por ejemplo, `weekly_session_risk_close`). Nulo para las posiciones cerradas por el trader y para las abiertas.\n\n[]closeReason.[]Tipo: string\n\n- []order (object · nullable; obligatorio)\n\n[]order ejemplo: {\n  \"id\": \"00000000-0000-4000-8000-000000000000\",\n  \"txId\": \"string\",\n  \"trader\": \"00000000-0000-4000-8000-000000000000\",\n  \"market\": \"00000000-0000-4000-8000-000000000000\",\n  \"status\": \"active\",\n  \"type\": \"market\",\n  \"direction\": \"long\",\n  \"triggerPrice\": \"1000000000\",\n  \"requestedTriggerPrice\": \"1000000000\",\n  \"stopPrice\": \"1000000000\",\n  \"limitPrice\": \"1000000000\",\n  \"stopTriggerPrice\": \"1000000000\",\n  \"takeTriggerPrice\": \"1000000000\",\n  \"trailingStopActivationPrice\": \"1000000000\",\n  \"trailingStopOffset\": \"1000000000\",\n  \"trailingStopOffsetPercent\": \"1000000000\",\n  \"leverage\": \"1000000000\",\n  \"index\": \"string\",\n  \"positionId\": \"string\",\n  \"parentOrderId\": \"string\",\n  \"expiration\": \"2026-05-01T12:30:00.000Z\",\n  \"amount\": \"1000000000\",\n  \"indexPrice\": \"1000000000\",\n  \"settlementOraclePrice\": \"1000000000\",\n  \"createdAt\": \"2026-05-01T12:30:00.000Z\",\n  \"error\": \"string\",\n  \"realizedPnl\": \"1000000000\",\n  \"rawRealizedPnl\": \"1000000000\",\n  \"profitAdjustmentApplied\": true,\n  \"executedAfterPause\": true,\n  \"sizeMode\": \"quote\",\n  \"baseSize\": \"1000000000\",\n  \"reservedAmount\": \"1000000000\",\n  \"errorCode\": \"string\",\n  \"reason\": \"force_close\"\n}\n\n[]order.Tipo: object · nullable\n\n[]order.Campos obligatorios: id, txId, trader, market, status, type, direction, triggerPrice, requestedTriggerPrice, stopPrice, limitPrice, stopTriggerPrice, takeTriggerPrice, trailingStopActivationPrice, trailingStopOffset, trailingStopOffsetPercent, leverage, index, positionId, parentOrderId, expiration, amount, indexPrice, settlementOraclePrice, createdAt, error, realizedPnl, rawRealizedPnl, profitAdjustmentApplied, executedAfterPause, sizeMode, baseSize, reservedAmount, errorCode, reason\n\n[]order.Tipos de campos obligatorios: id (string · uuid; obligatorio), txId (string; obligatorio), trader (string · uuid; obligatorio), market (string · uuid; obligatorio), status (string · enum; obligatorio), type (string · enum; obligatorio), direction (string · enum; obligatorio), triggerPrice (string · int32; obligatorio), requestedTriggerPrice (string · int32 · nullable; obligatorio), stopPrice (string · int32; obligatorio), limitPrice (string · int32; obligatorio), stopTriggerPrice (string · int32; obligatorio), takeTriggerPrice (string · int32; obligatorio), trailingStopActivationPrice (string · int32; obligatorio), trailingStopOffset (string · int32; obligatorio), trailingStopOffsetPercent (string · int32; obligatorio), leverage (string · int32 · nullable; obligatorio), index (string; obligatorio), positionId (string · nullable; obligatorio), parentOrderId (string · nullable; obligatorio), expiration (string · date-time · nullable; obligatorio), amount (string · int32; obligatorio), indexPrice (string · int32 · nullable; obligatorio), settlementOraclePrice (string · int32; obligatorio), createdAt (string · date-time; obligatorio), error (string · nullable; obligatorio), realizedPnl (string · int32 · nullable; obligatorio), rawRealizedPnl (string · int32 · nullable; obligatorio), profitAdjustmentApplied (boolean; obligatorio), executedAfterPause (boolean; obligatorio), sizeMode (string · enum; obligatorio), baseSize (string · int32 · nullable; obligatorio), reservedAmount (string · int32 · nullable; obligatorio), errorCode (string · nullable; obligatorio), reason (string · enum · nullable; obligatorio)\n\n[]order.Orden que produjo este evento; null para eventos que la plataforma generó por sí misma, como financiación o un cierre forzoso.\n\n- []order.id (string · uuid; obligatorio)\n\n[]order.id ejemplo: 00000000-0000-4000-8000-000000000000\n\n[]order.id.Tipo: string · uuid\n\n[]order.id.Identificador de la orden.\n\n[]order.id.format: uuid\n\n[]order.id.pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$\n\n- []order.txId (string; obligatorio)\n\n[]order.txId ejemplo: string\n\n[]order.txId.Tipo: string\n\n[]order.txId.Identificador de la orden. Se conserva por compatibilidad con versiones anteriores, siempre igual a `id`.\n\n- []order.trader (string · uuid; obligatorio)\n\n[]order.trader ejemplo: 00000000-0000-4000-8000-000000000000\n\n[]order.trader.Tipo: string · uuid\n\n[]order.trader.Cuenta del trader a la que pertenece la orden.\n\n[]order.trader.format: uuid\n\n[]order.trader.pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$\n\n- []order.market (string · uuid; obligatorio)\n\n[]order.market ejemplo: 00000000-0000-4000-8000-000000000000\n\n[]order.market.Tipo: string · uuid\n\n[]order.market.Mercado en el que se coloca la orden.\n\n[]order.market.format: uuid\n\n[]order.market.pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$\n\n- []order.status (string · enum; obligatorio)\n\n[]order.status ejemplo: active\n\n[]order.status.Tipo: string · enum\n\n[]order.status.Estado del ciclo de vida: `active` mientras espera, `executed` una vez ejecutada, `canceled` cuando es cancelada por el trader o la plataforma, `canceled_by_update` cuando es reemplazada por una edición, `canceled_by_position` cuando la posición a la que estaba vinculada desapareció, `canceled_by_error` cuando falló la ejecución — consulta `errorCode`.\n\n[]order.status.Valores permitidos: [\"active\",\"canceled\",\"canceled_by_update\",\"canceled_by_error\",\"canceled_by_position\",\"executed\"]\n\n- []order.type (string · enum; obligatorio)\n\n[]order.type ejemplo: market\n\n[]order.type.Tipo: string · enum\n\n[]order.type.Tipo de orden. `liquidation` marca una orden que el propio motor generó.\n\n[]order.type.Valores permitidos: [\"market\",\"limit\",\"stop\",\"trailing_stop\",\"take\",\"stop_limit\",\"stop_market\",\"liquidation\"]\n\n- []order.direction (string · enum; obligatorio)\n\n[]order.direction ejemplo: long\n\n[]order.direction.Tipo: string · enum\n\n[]order.direction.Dirección de la orden.\n\n[]order.direction.Valores permitidos: [\"long\",\"short\"]\n\n- []order.triggerPrice (string · int32; obligatorio)\n\n[]order.triggerPrice ejemplo: 1000000000\n\n[]order.triggerPrice.Tipo: string · int32\n\n[]order.triggerPrice.Precio al que se dispara la orden, fp9 en bruto. `0` cuando la orden no lleva disparador.\n\n[]order.triggerPrice.format: int32\n\n[]order.triggerPrice.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []order.requestedTriggerPrice (string · int32 · nullable; obligatorio)\n\n[]order.requestedTriggerPrice ejemplo: 1000000000\n\n[]order.requestedTriggerPrice.Tipo: string · int32 · nullable\n\n[]order.requestedTriggerPrice.Precio de activación tal como se solicitó, antes de que el motor lo desplazara hasta la distancia mínima de stop, fp9 en bruto. Nulo cuando el precio solicitado se mantuvo tal cual.\n\n[]order.requestedTriggerPrice.format: int32\n\n[]order.requestedTriggerPrice.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []order.stopPrice (string · int32; obligatorio)\n\n[]order.stopPrice ejemplo: 1000000000\n\n[]order.stopPrice.Tipo: string · int32\n\n[]order.stopPrice.Precio de activación de una orden `stop_market` / `stop_limit`, fp9 en bruto; `0` para cualquier otro tipo.\n\n[]order.stopPrice.format: int32\n\n[]order.stopPrice.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []order.limitPrice (string · int32; obligatorio)\n\n[]order.limitPrice ejemplo: 1000000000\n\n[]order.limitPrice.Tipo: string · int32\n\n[]order.limitPrice.Precio al que se coloca la orden una vez activada, fp9 en bruto: el precio stop-limit, recurriendo al precio de activación como alternativa.\n\n[]order.limitPrice.format: int32\n\n[]order.limitPrice.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []order.stopTriggerPrice (string · int32; obligatorio)\n\n[]order.stopTriggerPrice ejemplo: 1000000000\n\n[]order.stopTriggerPrice.Tipo: string · int32\n\n[]order.stopTriggerPrice.Stop-loss asociado a la orden, fp9 en bruto. `0` cuando no hay ninguno asociado.\n\n[]order.stopTriggerPrice.format: int32\n\n[]order.stopTriggerPrice.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []order.takeTriggerPrice (string · int32; obligatorio)\n\n[]order.takeTriggerPrice ejemplo: 1000000000\n\n[]order.takeTriggerPrice.Tipo: string · int32\n\n[]order.takeTriggerPrice.Take-profit asociado a la orden, fp9 en bruto. `0` cuando no hay ninguno asociado.\n\n[]order.takeTriggerPrice.format: int32\n\n[]order.takeTriggerPrice.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []order.trailingStopActivationPrice (string · int32; obligatorio)\n\n[]order.trailingStopActivationPrice ejemplo: 1000000000\n\n[]order.trailingStopActivationPrice.Tipo: string · int32\n\n[]order.trailingStopActivationPrice.Precio al que un stop móvil comienza a hacer seguimiento, fp9 sin procesar. `0` cuando hace seguimiento desde la creación.\n\n[]order.trailingStopActivationPrice.format: int32\n\n[]order.trailingStopActivationPrice.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []order.trailingStopOffset (string · int32; obligatorio)\n\n[]order.trailingStopOffset ejemplo: 1000000000\n\n[]order.trailingStopOffset.Tipo: string · int32\n\n[]order.trailingStopOffset.Distancia de seguimiento como un importe absoluto de cotización, fp9 sin procesar. `0` cuando la distancia se establece como porcentaje.\n\n[]order.trailingStopOffset.format: int32\n\n[]order.trailingStopOffset.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []order.trailingStopOffsetPercent (string · int32; obligatorio)\n\n[]order.trailingStopOffsetPercent ejemplo: 1000000000\n\n[]order.trailingStopOffsetPercent.Tipo: string · int32\n\n[]order.trailingStopOffsetPercent.Distancia de seguimiento como una fracción del precio, fp9 sin procesar. `0` cuando la distancia es absoluta.\n\n[]order.trailingStopOffsetPercent.format: int32\n\n[]order.trailingStopOffsetPercent.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []order.leverage (string · int32 · nullable; obligatorio)\n\n[]order.leverage ejemplo: 1000000000\n\n[]order.leverage.Tipo: string · int32 · nullable\n\n[]order.leverage.Apalancamiento de la orden, fp9 en bruto. Nulo en órdenes de cierre, que heredan el apalancamiento de la posición.\n\n[]order.leverage.format: int32\n\n[]order.leverage.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []order.index (string; obligatorio)\n\n[]order.index ejemplo: string\n\n[]order.index.Tipo: string\n\n[]order.index.Identificador de la orden. Se conserva por compatibilidad con versiones anteriores, siempre igual a `id`.\n\n- []order.positionId (string · nullable; obligatorio)\n\n[]order.positionId ejemplo: string\n\n[]order.positionId.Tipo: string · nullable\n\n[]order.positionId.Posición a la que está asociada una orden de cierre. Nulo para órdenes que abren o aumentan una posición.\n\n- []order.parentOrderId (string · nullable; obligatorio)\n\n[]order.parentOrderId ejemplo: string\n\n[]order.parentOrderId.Tipo: string · nullable\n\n[]order.parentOrderId.Orden de la que se generó esta: un stop o un take creado a partir de `stopTriggerPrice` / `takeTriggerPrice`, o la orden limit en la que se convirtió un `stop_limit`. Nulo cuando la orden se envió directamente.\n\n- []order.expiration (string · date-time · nullable; obligatorio)\n\n[]order.expiration ejemplo: 2026-05-01T12:30:00.000Z\n\n[]order.expiration.Tipo: string · date-time · nullable\n\n[]order.expiration.Siempre nulo. Se mantiene por compatibilidad con versiones anteriores: las órdenes no expiran por sí solas.\n\n[]order.expiration.format: date-time\n\n- []order.amount (string · int32; obligatorio)\n\n[]order.amount ejemplo: 1000000000\n\n[]order.amount.Tipo: string · int32\n\n[]order.amount.Tamaño de la orden, fp9 en bruto, en la unidad que usa su clase: en una orden de incremento, un importe de cotización — la reserva mientras espera, y lo que realmente gastó una vez ejecutada; en una orden de cierre (`stop`, `take`, `trailing_stop`), el tamaño del activo base que cierra, tal como se solicitó al crearla.\n\n[]order.amount.format: int32\n\n[]order.amount.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []order.indexPrice (string · int32 · nullable; obligatorio)\n\n[]order.indexPrice ejemplo: 1000000000\n\n[]order.indexPrice.Tipo: string · int32 · nullable\n\n[]order.indexPrice.Precio índice al que se ejecutó la orden, fp9 en bruto. Nulo mientras la orden no se haya ejecutado.\n\n[]order.indexPrice.format: int32\n\n[]order.indexPrice.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []order.settlementOraclePrice (string · int32; obligatorio)\n\n[]order.settlementOraclePrice ejemplo: 1000000000\n\n[]order.settlementOraclePrice.Tipo: string · int32\n\n[]order.settlementOraclePrice.Siempre `1000000000` (1.0). Se mantiene por compatibilidad con versiones anteriores.\n\n[]order.settlementOraclePrice.format: int32\n\n[]order.settlementOraclePrice.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []order.createdAt (string · date-time; obligatorio)\n\n[]order.createdAt ejemplo: 2026-05-01T12:30:00.000Z\n\n[]order.createdAt.Tipo: string · date-time\n\n[]order.createdAt.Cuándo se aceptó la orden.\n\n[]order.createdAt.format: date-time\n\n- []order.error (string · nullable; obligatorio)\n\n[]order.error ejemplo: string\n\n[]order.error.Tipo: string · nullable\n\n[]order.error.Siempre null. Se mantiene por compatibilidad hacia atrás — utilice `errorCode`.\n\n- []order.realizedPnl (string · int32 · nullable; obligatorio)\n\n[]order.realizedPnl ejemplo: 1000000000\n\n[]order.realizedPnl.Tipo: string · int32 · nullable\n\n[]order.realizedPnl.Pnl realizado por esta orden, fp9 en bruto. Se establece solo en una orden de cierre ejecutada; null mientras está pendiente y en órdenes que abren o aumentan una posición.\n\n[]order.realizedPnl.format: int32\n\n[]order.realizedPnl.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []order.rawRealizedPnl (string · int32 · nullable; obligatorio)\n\n[]order.rawRealizedPnl ejemplo: 1000000000\n\n[]order.rawRealizedPnl.Tipo: string · int32 · nullable\n\n[]order.rawRealizedPnl.Pnl realizado antes del ajuste de 60 segundos, fp9 en bruto. Difiere de `realizedPnl` solo cuando se activó el ajuste.\n\n[]order.rawRealizedPnl.format: int32\n\n[]order.rawRealizedPnl.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []order.profitAdjustmentApplied (boolean; obligatorio)\n\n[]order.profitAdjustmentApplied ejemplo: true\n\n[]order.profitAdjustmentApplied.Tipo: boolean\n\n[]order.profitAdjustmentApplied.Si el ajuste de 60 segundos limitó la ganancia de esta orden — dentro de un minuto de una apertura o un aumento, el pnl de la posición no puede crecer por encima de lo que era en ese momento.\n\n- []order.executedAfterPause (boolean; obligatorio)\n\n[]order.executedAfterPause ejemplo: true\n\n[]order.executedAfterPause.Tipo: boolean\n\n[]order.executedAfterPause.Indica si la orden se ejecutó después de una pausa del mercado. No lo establece el motor actual — siempre `false`.\n\n- []order.sizeMode (string · enum; obligatorio)\n\n[]order.sizeMode ejemplo: quote\n\n[]order.sizeMode.Tipo: string · enum\n\n[]order.sizeMode.Cómo se expresó el tamaño al crearse: `quote` dimensiona la orden por `amount`, `base` la dimensiona por `baseSize`.\n\n[]order.sizeMode.Valores permitidos: [\"quote\",\"base\"]\n\n- []order.baseSize (string · int32 · nullable; obligatorio)\n\n[]order.baseSize ejemplo: 1000000000\n\n[]order.baseSize.Tipo: string · int32 · nullable\n\n[]order.baseSize.Tamaño de la orden en unidades del activo base, fp9 en bruto. Nulo para órdenes dimensionadas por `quote`.\n\n[]order.baseSize.format: int32\n\n[]order.baseSize.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []order.reservedAmount (string · int32 · nullable; obligatorio)\n\n[]order.reservedAmount ejemplo: 1000000000\n\n[]order.reservedAmount.Tipo: string · int32 · nullable\n\n[]order.reservedAmount.Importe de quote reservado cuando se creó la orden con sizeMode=base, fp9 en bruto. Se mantiene en la reserva original después de la ejecución, mientras que `amount` se reescribe a lo que se gastó. Nulo para órdenes dimensionadas por `quote`, donde `amount` es la reserva.\n\n[]order.reservedAmount.format: int32\n\n[]order.reservedAmount.pattern: ^(?:-?[1-9][0-9]*|0)$\n\n- []order.errorCode (string · nullable; obligatorio)\n\n[]order.errorCode ejemplo: string\n\n[]order.errorCode.Tipo: string · nullable\n\n[]order.errorCode.Por qué falló la ejecución, establecido junto con el estado `canceled_by_error` — por ejemplo `insufficient_reserve_at_execution`, `order_below_min_notional`, `order_exceeds_market_depth` o `slippage_tolerance`. Nulo en caso contrario.\n\n- []order.reason (string · enum · nullable; obligatorio)\n\n[]order.reason ejemplo: force_close\n\n[]order.reason.Tipo: string · enum · nullable\n\n[]order.reason.Por qué la plataforma canceló la orden por sí misma, por ejemplo `force_close` o `weekly_session_risk_close`. Nulo para cancelaciones impulsadas por el trader.\n\n[]order.reason.Valores permitidos: [\"force_close\",\"stop_accounts_fail\",\"stop_accounts_freeze\",\"stop_accounts_promote\",\"stop_accounts_manual\",\"weekly_session_risk_close\",null]\n\nEjemplo\n\n\n\n```json\n[\n  {\n    \"idx\": [\n      \"string\"\n    ],\n    \"txId\": [\n      \"string\"\n    ],\n    \"version\": 0,\n    \"openedAt\": \"2026-05-01T12:30:00.000Z\",\n    \"lastUpdatedAt\": \"2026-05-01T12:30:00.000Z\",\n    \"closedAt\": \"2026-05-01T12:30:00.000Z\",\n    \"type\": \"long\",\n    \"status\": \"opened\",\n    \"market\": \"00000000-0000-4000-8000-000000000000\",\n    \"trader\": \"00000000-0000-4000-8000-000000000000\",\n    \"size\": \"1000000000\",\n    \"notional\": \"1000000000\",\n    \"fraction\": \"1000000000\",\n    \"margin\": \"1000000000\",\n    \"pnl\": \"1000000000\",\n    \"funding\": \"1000000000\",\n    \"rolloverFee\": \"1000000000\",\n    \"settlementOraclePrice\": \"1000000000\",\n    \"fee\": \"1000000000\",\n    \"feeRate\": \"1000000000\",\n    \"exchangedQuote\": \"1000000000\",\n    \"exchangedBase\": \"1000000000\",\n    \"direction\": \"long\",\n    \"eventName\": \"addMargin\",\n    \"pnlInEvent\": \"1000000000\",\n    \"rawPnlInEvent\": \"1000000000\",\n    \"profitAdjustmentApplied\": true,\n    \"holdingTimeMs\": [\n      \"string\"\n    ],\n    \"feeInEvent\": \"1000000000\",\n    \"fundingInEvent\": \"1000000000\",\n    \"rolloverFeeInEvent\": \"1000000000\",\n    \"executionFeeRate\": \"1000000000\",\n    \"executionFeeInEvent\": \"1000000000\",\n    \"executionFee\": \"1000000000\",\n    \"timestamp\": \"2026-05-01T12:30:00.000Z\",\n    \"isOnchain\": true,\n    \"roe\": \"1000000000\",\n    \"scalpingCoefficient\": \"1000000000\",\n    \"closeReason\": [\n      \"string\"\n    ],\n    \"order\": {\n      \"id\": \"00000000-0000-4000-8000-000000000000\",\n      \"txId\": \"string\",\n      \"trader\": \"00000000-0000-4000-8000-000000000000\",\n      \"market\": \"00000000-0000-4000-8000-000000000000\",\n      \"status\": \"active\",\n      \"type\": \"market\",\n      \"direction\": \"long\",\n      \"triggerPrice\": \"1000000000\",\n      \"requestedTriggerPrice\": \"1000000000\",\n      \"stopPrice\": \"1000000000\",\n      \"limitPrice\": \"1000000000\",\n      \"stopTriggerPrice\": \"1000000000\",\n      \"takeTriggerPrice\": \"1000000000\",\n      \"trailingStopActivationPrice\": \"1000000000\",\n      \"trailingStopOffset\": \"1000000000\",\n      \"trailingStopOffsetPercent\": \"1000000000\",\n      \"leverage\": \"1000000000\",\n      \"index\": \"string\",\n      \"positionId\": \"string\",\n      \"parentOrderId\": \"string\",\n      \"expiration\": \"2026-05-01T12:30:00.000Z\",\n      \"amount\": \"1000000000\",\n      \"indexPrice\": \"1000000000\",\n      \"settlementOraclePrice\": \"1000000000\",\n      \"createdAt\": \"2026-05-01T12:30:00.000Z\",\n      \"error\": \"string\",\n      \"realizedPnl\": \"1000000000\",\n      \"rawRealizedPnl\": \"1000000000\",\n      \"profitAdjustmentApplied\": true,\n      \"executedAfterPause\": true,\n      \"sizeMode\": \"quote\",\n      \"baseSize\": \"1000000000\",\n      \"reservedAmount\": \"1000000000\",\n      \"errorCode\": \"string\",\n      \"reason\": \"force_close\"\n    }\n  }\n]\n```","text":"Obtener todos los eventos por posición Qué ocurrió con una posición, las más recientes primero: aumentos, cierres parciales y totales, liquidación, cierre forzoso, cambios de margen. - Los pagos de financiación quedan fuera de este feed. - Un cierre forzoso lleva consigo el evento de mercado que tiene detrás, que es donde reside el motivo del mismo. GET /positions/{positionId}/history Trading positionId Identificador de posición. Su cuenta debe pertenecer al llamador. string · uuid 401 No autorizado 403 La cuenta pertenece a otro usuario (`account_access_denied`), o la solicitud se autentica con una clave de API mientras `api_trading` está deshabilitado en la cuenta (`api_trading_not_enabled`). 404 No existe ninguna posición con este identificador. 429 Se superó el límite de velocidad de la clave de API (`api_key_rate_limit_exceeded`). `Retry-After` indica cuándo volver; el cuerpo incluye el bucket (`read` / `write`), la ventana que se activó, su límite y `retryAt`. default Respuesta","api":{"title":"API pública de Upscale","version":"d796ac9","documentation":"https://docs.upscale.trade/es/developers","playgroundServer":"https://api.upscale.trade"}}