Primary API
Primary API
Primary API
20
Historia del documento
2
API para listar ordenes activas.
API para listar ordenes operadas.
Descripción del campo “level” en mensaje de
suscripción a market data para Web Socket.
Se agregó un parámetro más al método de
ingreso de ordenes para permitir indicar si se
20/04/2016 1.8 cancelan las ordenes previas o no. Primary
Se actualizo la respuesta del Reporte de
Cuentas para dar soporte multimoneda.
3
Se agrego link a la documentación
Swagger
18/09/2017 1.17 Se incluyen links a ejemplos de login Rest Primary
y Websocket en Python
Se agregaron los parámetros dateFrom y
dateTo en el método de MarketData
11/01/2018 1.18 Historica (getTrades) para consultar por Primary
rango de fecha.
4
Índice
Contenido
Historia del documento .................................................................................................................................. 2
Introducción ................................................................................................................................................ 7
Conectándose a la API por token de autenticación ................................................................................ 8
Consultas a la API de Trading ...................................................................................................................... 9
Funcionalidades de la API REST .................................................................................................................. 9
Funcionalidades de la API Websocket ...................................................................................................... 10
Segmentos ................................................................................................................................................ 11
Lista de Segmentos disponibles ............................................................................................................ 11
Instrumentos (Securities) .......................................................................................................................... 12
Lista de Instrumentos disponibles ........................................................................................................ 12
Lista detallada de Instrumentos disponibles ........................................................................................ 11
Descripción detallada de un Instrumento ............................................................................................ 12
Lista de Instrumentos por Código CFI ................................................................................................... 13
Lista de Instrumentos por Segmento .................................................................................................... 13
Orden ........................................................................................................................................................ 18
Ingresar una orden ................................................................................................................................ 18
Ingresar una Orden a través de WebSocket ......................................................................................... 20
Reemplazar una Orden ......................................................................................................................... 22
Cancelar una Orden .............................................................................................................................. 23
Cancelar una Orden a través de WebSocket ........................................................................................ 23
Ver el estado de una orden................................................................................................................... 24
Suscribirse a Execution Reports a través de WebSocket ...................................................................... 27
Mensaje de Execution Reports ............................................................................................................. 28
Market Data .............................................................................................................................................. 29
MarketData en tiempo real a través de REST ....................................................................................... 29
Suscribirse a MarketData en tiempo real a través de WebSocket ....................................................... 26
Mensaje de Market Data ...................................................................................................................... 27
Descripción de MarketData Entries ...................................................................................................... 27
5
MarketData Histórica ............................................................................................................................ 28
Errores ....................................................................................................................................................... 31
Primary Risk API ............................................................................................................................................ 32
Consultar detalle de posiciones ............................................................................................................ 33
Consulta reporte de cuenta .................................................................................................................. 34
Cotización de Monedas ......................................................................................................................... 45
6
Documentación Primary API
Introducción
Primary API es una solución creada para facilitar la interoperabilidad de software de terceros con la
plataforma de negociación electrónica de ROFEX, Primary Trading Platform (PTP).
El valor agregado de esta solución consiste en simplificar la integración con PTP traduciendo las
interfaces basadas en el estándar FIX a un conjunto de Web Services simplificados; estándar
tecnológico más adoptado por el mercado y cuya implementación requiere un menor esfuerzo de
desarrollo con la consiguiente ventaja en la reducción del costo asociado.
Los Web Services tipo REST trabajan de forma sincrónica y fueron diseñados y optimizados para
atender consultas como por ejemplo: ingresar/cancelar una orden, ver Market Data histórica, etc.
Se encuentra disponible documentación formato swagger, con api de demo online para probar todos
los métodos detallados en esta documentación:
URL: https://apihub.primary.com.ar/assets/apidoc/trading/index.html
7
Esquema de la solución:
Para obtener el Token, deberá hacer una petición POST a la siguiente URL
https://api.remarkets.primary.com.ar/auth/getToken
Una vez enviada la solicitud, dicho request va a retornar una serie de headers, y entre ellos recibirá el
siguiente header con el token de acceso:
X-Auth-Token
Una vez haya obtenido el token, deberá utilizarlo para realizar los request necesarios hacia los otros
métodos. Es importante tener en cuenta que la duración del token es de 24 hs.
A continuación se especifica link con las iniciativas opensource para conectarse al mercado Matba Rofex
Link: https://github.com/matbarofex/
8
Consultas a la API de Trading
El objetivo de esta sección es brindarle al desarrollador una descripción detallada de los métodos
disponibles en Primary API.
Se da una breve explicación de la información que devuelve cada método, los parámetros que acepta,
un ejemplo de cómo utilizarlo y la respuesta que devuelve la API. Por último se agregó una lista de
errores posibles que pueden ocurrir al utilizar la API.
Segmentos1:
Instrumentos:
Órdenes:
9
Funcionalidades de la API Websocket
Primary API con la tecnología Web Socket permite realizar lo siguiente:
Órdenes:
1
0
Segmentos
Lista de Segmentos disponibles
Los segmentos son los distintos ambientes o ruedas de negociación en las que está organizada la
operatoria de ROFEX. Algunos de los segmentos que existen hoy en día son:
HTTP request
GET https://api.remarkets.primary.com.ar/rest/segment/all
Parameters
No recibe parámetros.
Ejemplo
Http Request https://api.remarkets.primary.com.ar/rest/segment/all
{
"status":"OK",
"segments":[
{
"marketSegmentId":"DDA",
"marketId":"ROFX"
},
Respuesta
…
{
"marketSegmentId":"DDF",
"marketId":"ROFX"
}
]
}
1
1
Instrumentos (Securities)
Instrumentos hace referencia a los distintos activos disponibles para negociarse en ROFEX. Pueden
agruparse por Tipos(los cuales se identifican con el estándar CFI Code) y, a su vez, cada uno tiene
características propias, las cuales se pueden consultar pidiendo el detalle (tickSize, maxSize, minSize,
etc.) del mismo.
HTTP request
GET https://api.remarkets.primary.com.ar/rest/instruments/all
Parameters
No recibe parámetros.
Ejemplo
Http Request https://api.remarkets.primary.com.ar/rest/instruments/all
{
"status":"OK",
"instruments":[
{
"instrumentId":{
"marketId":"ROFX",
"symbol":"DODic21"
Respuesta
},
"cficode":"FXXXSX"
},
…
]
}
10
Lista detallada de Instrumentos disponibles
Al igual que el método anterior devuelve una lista con todos los instrumentos pero se agrega una
descripción detallada de cada uno de ellos. Por cada instrumento devuelve datos de segmento, precio
mínimo/máximo, vencimiento, etc.
HTTP request
GET https://api.remarkets.primary.com.ar/rest/instruments/details
Parameters
No recibe parámetros.
Ejemplo
Http Request https://api.remarkets.primary.com.ar/rest/instruments/details
{
"status":"OK",
"instruments":[
{
"segment":{
"marketSegmentId":"DDF",
"marketId":"ROFX"
},
"lowLimitPrice":16.905,
"highLimitPrice":19.835,
"minPriceIncrement":0.001000,
"minTradeVol":1.000000,
"maxTradeVol":5000.000000,
Respuesta
"tickSize":1.000000,
"maturityDate":20211230,
"contractMultiplier":1000.000000,
"instrumentId":{
"marketId":"ROFX",
"symbol":"DODic21"
},
"cficode":"FXXXSX"
},
…
]
}
11
Descripción detallada de un Instrumento
Este método nos devuelve una descripción detallada de un solo instrumento, el cual se especifica en los
parámetros.
HTTP Request
GET https://api.remarkets.primary.com.ar/rest/instruments/detail
Parameters
Parámetros URL
Ejemplo
https://api.remarkets.primary.com.ar/rest/instruments/detail?symbol=DODic21&mark
Http Request etId=ROFX
{
"status":"OK",
"instrument":{
"segment":{
"marketSegmentId":"DDF",
"marketId":"ROFX"
},
"lowLimitPrice":16.905,
"highLimitPrice":19.835,
"minPriceIncrement":0.001000,
"minTradeVol":1.000000,
Respuesta
"maxTradeVol":5000.000000,
"tickSize":1.000000,
"maturityDate":20161230,
"contractMultiplier":1000.000000,
"instrumentId":{
"marketId":"ROFX",
"symbol":"DODic21"
},
"cficode":"FXXXSX"
}
}
12
Lista de Instrumentos por Código CFI
Este método permite listar todos los instrumentos que pertenezcan al mismo Tipo (como dijimos
anteriormente cada tipo se identifica por un código CFI).
HTTP request
GET https://api.remarkets.primary.com.ar/rest/instruments/byCFICode
Parameters
Parámetros URL
Ejemplo
https://api.remarkets.primary.com.ar/rest/instruments/byCFICode?CFICode=
Http Request
FXXXX
{
"status":"OK",
"instruments":[
{
"marketId":"ROFX",
"symbol":"DODic16"
},
Respuesta {
"marketId":"ROFX",
"symbol":"DOEne17"
},
…
]
}
HTTP request
GET https://api.remarkets.primary.com.ar/rest/instruments/bySegment
13
Parameters
Parámetros URL
Ejemplo
https://api.remarkets.primary.com.ar/rest/instruments/bySegment?MarketSegme
Http Request ntID= DDF&MarketID=ROFX
{
"status":"OK",
"instruments":[
{
"marketId":"ROFX",
"symbol":"DOOct21"
},
{
"marketId":"ROFX",
Respuesta "symbol":"DOEne22"
},
…
{
"marketId":"ROFX",
"symbol":"DOFeb22"
}
]
}
14
Orden
Ingresar una orden
Es la manera de enviar una orden al Mercado. Vale la pena aclarar que cuando se ingresa una orden hay
que verificar si realmente se cargó la orden y no fue rechazada. La secuencia debería ser:
HTTP Request
GET https://api.remarkets.primary.com.ar/rest/order/newSingleOrder
Parameters
Parámetros URL
Parameter name Value Description
18
cancelPrevious Boolean Parámetro opcional que indica si se cancelan todas las ordenes
previas o no. Por defecto este valor es false. Solo disponible
para ofertas enviadas a productos ROFEX.
iceberg Boolean Parámetro opcional que indica el tipo de orden Iceberg. Por
defecto este valor es false.
expireDate Date Parámetro opcional que indica la fecha de Vencimiento para
ordenes GTD. Ejemplo: 20170720
displayQty Integer Parámetro opcional que indica la cantidad a divulgar para
ordenes Iceberg.
Ejemplo
https://api.remarkets.primary.com.ar/rest/order/newSingleOrder?marketId=ROFX
&sym
Http Request
bol=DODic21&price=12.01&orderQty=2400&ordType=Limit&side=Buy&timeInFor
ce=Day&account=30&cancelPrevious=true
{
"status":"OK",
"order":{
Respuesta "clientId":"user144727645060649",
"proprietary":"api"
}
}
Ejemplo Iceberg
https://api.remarkets.primary.com.ar/rest/order/newSingleOrder?marketId=ROFX
&symbol=DOAgo21&price=18.25&orderQty=1000&ordType=Limit&side=Buy&time
Http Request
InForce=Day&account=10&iceberg=true&displayQty=100
{
"status":"OK",
"order":{
Respuesta "clientId":"user125469825632595",
"proprietary":"api"
}
}
Ejemplo GTD
https://api.remarkets.primary.com.ar/rest/order/newSingleOrder?marketId=ROFX
&symbol=DOJul21&price=17.5&orderQty=100&ordType=Limit&side=Buy&timeInF
Http Request
orce=GTD&account=10&expireDate=20170223
{
"status":"OK",
"order":{
Respuesta "clientId":"user156548752365489",
"proprietary":"api"
}
}
19
Ingresar una Orden a través de WebSocket
Con este mensaje se envía una orden al mercado. Para poder saber que ocurrió con la orden hay que
estar suscripto a los Execution Report para la cuenta con la que mandamos la orden, de lo contrario no
recibiremos ningún mensaje sobre el estado de la orden.
Mensaje Enviado:
{
"type":"no",
"product":{
"symbol":"DODic21",
"marketId":"ROFX"
Formato
},
Mensaje
"price":"18",
"quantity":"10",
"side":"BUY",
"account":"20"
}
20
Mensaje de respuesta al envío de una orden con identificador (wsClOrdId):
{
"type":"or",
"timestamp":1537212212623,
"orderReport":{
"orderId":null,
Formato
"clOrdId":"275772212000001",
Mensaje
"proprietary":"test",
"accountId":{
"id":"100"
},
"instrumentId":{
"marketId":"ROFX",
"symbol":"DODic21"
},
"price":40,
"orderQty":1,
"ordType":"LIMIT",
"side":"BUY",
"timeInForce":"DAY",
"transactTime":"20180917-16:23:32",
"status":"PENDING_NEW",
"text":"Enviada",
"wsClOrdId":"12345678fz"
}
}
Comentarios
El campo wsClOrdId se utiliza para identificar la orden envíada.
Este campo va a venir solamente en el primer Execution Report (con estado PENDING_NEW o REJECT).
En el primer Execution Report recibido el campo wsClOrdId se debe referenciar con el campo clOrdId para
poder seguir los diferentes estados de la orden.
El campo wsClOrdId es opcional. Si no se envía se debe tomar el primer clOrdId recibido en el Execution
Report para identificar la orden.
El usuario debe asegurarse que el ID ingresado le permita identificar la orden. La API no valida que el ID
sea único.
21
Mensaje para el envío de una orden GTD:
{
"type":"no",
"product":{
"marketId":"ROFX",
"symbol":"DODic21"
Formato
},
Mensaje
"price":19,
"quantity":11,
"side":"BUY",
"account":"20",
"timeInForce":"GTD",
"expireDate":"20171010"
}
HTTP Request
GET https://api.remarkets.primary.com.ar/rest/order/replaceById
Parameters
Parámetros URL
Parameter name Value Description
Ejemplo
https://api.remarkets.primary.com.ar/rest/order/replaceById?clOrdId=user1447334
Http Request 78280357&proprietary=api&price=17&orderQty=10
{
"status":"OK",
"order":{
Respuesta "clientId":"user14473450286174",
"proprietary":"api"
}
}
22
Cancelar una Orden
Permite cancelar una orden ya ingresada al mercado.
HTTP Request
GET https://api.remarkets.primary.com.ar/rest/order/cancelById
Parameters
Parámetros URL
Parameter name Value Description
El ID del request que se hizo al Mercado, devuelto por la API
clOrdId String de Ingreso y Cancelación de Orden. Ejemplo:
user144720678549411
ID que identifica al participante del mercado mediante el cual
proprietary String se hace el request. Este parámetro es siempre fijo para una
cuenta. Valor: api
Ejemplo
https://api.remarkets.primary.com.ar/rest/order/cancelById?clOrdId=user14473347
Http Request 828035 7&proprietary=api
{
"status":"OK",
"order":{
Respuesta "clientId":"user14473450286174Cnl5",
"proprietary":"api"
}
}
Mensaje Enviado:
{
"type":"co",
Formato
"clientId":"user114121092035207",
Mensaje
"proprietary":"api"
}
23
Ver el estado de una orden
APIs para consultar en qué estado se encuentra una orden que se ingresó. Se brindan varias alternativas
para esto, se puede consultar por el Client Order ID (explicado más adelante), por ordenes activas u
operadas, etc.
Es importante dejar en claro algunos conceptos para poder entender correctamente tanto la consulta a
la API como los datos que nos devuelve. Dos términos que suelen confundirse pero que representan
cosas distintas son el Cliente Order ID y el Order ID:
Cliente Order ID: hace referencia al ID del request que se hace al mercado. Para que quede
claro, un ejemplo sería: cuando se quiere mandar dar de alta una orden en el mercado se hace
un request de alta de orden que lleva asociado un Cliente Order ID específico, esto permite
diferenciar distintos request que se hagan. Para el mercado un request de alta de orden y un
request de cancelación de una orden son distintos aunque tengan asociada el mismo ID de
orden (ver siguiente), entonces tendríamos un client order ID al ingresar una orden y un client
order ID distinto al cancelar esa orden y ambos van a estar asociados al mismo Order ID.
Order ID: identifica una orden en el mercado, tan simple como esto, como dijimos antes un
Order ID va a estar asociado a un request de alta de orden (client order ID). Si se manda otro
request para cancelar esa orden entonces también ese order ID va a estar asociado al request
de cancelación de orden (client order ID distinto al de alta de orden).
Si vemos lo que devuelve la API de ingreso de orden y la API de cancelación de orden encontramos un
campo de la respuesta llamado clOrdId (Cliente Order ID) con este dato es con el que vamos a poder
realizar varias de las consultas hechas a la API.
HTTP Request
GET https://api.remarkets.primary.com.ar/rest/order/id
Parameters
Parámetros URL
Parameter name Value Description
24
Ejemplo
https://api.remarkets.primary.com.ar/rest/order/id?clOrdId=user114472067854
Http Request 9411&p roprietary=api
{
"status":"OK",
"order":{
"orderId":"1130835",
"clOrdId":"user1145712381052053",
"proprietary":"api",
"execId":"160229133429-fix1-493",
"accountId":{
"id":"10"
},
"instrumentId":{
"marketId":"ROFX",
"symbol":"DODic21"
},
Respuesta "price":18.000,
"orderQty":10,
"ordType":"LIMIT",
"side":"BUY",
"timeInForce":"DAY",
"transactTime":"20160304-17:37:35",
"avgPx":0,
"lastPx":0,
"lastQty":0,
"cumQty":0,
"leavesQty":10,
"status":"NEW",
"text":"Aceptada "
}
}
25
Consultar todos los estados por Client Order ID
Consulta que devuelve todos los estados por los que paso una orden que estén asociados a un request
hecho al mercado. En el caso de un request de alta de orden devolverá todos los estados de la orden
que se ingresó al mercado menos el del estado Cancelled ya este estado estará asociado a un request de
cancelación y no de alta de orden.
HTTP Request
GET https://api.remarkets.primary.com.ar/rest/order/allById
Parameters
Parámetros URL
Parameter name Value Description
El ID del request que se hizo al Mercado, devuelto por la API
clOrdId String de Ingreso y Cancelación de Orden. Ejemplo:
user144720678549411
ID que identifica al participante del mercado mediante el cual
proprietary String se hace el request. Este parámetro es siempre fijo para una
cuenta. Valor: api
Ejemplo
https://api.remarkets.primary.com.ar/rest/order/allById?clOrdId=user114472067
Http Request 854941 1&proprietary=api
{
"status":"OK",
"orders":[
{
"orderId":null,
"clOrdId":"user1145712381052053",
"proprietary":"api",
"accountId":{
"id":"10"
},
"instrumentId":{
Respuesta "marketId":"ROFX",
"symbol":"DODic21"
},
"price":18.540,
"orderQty":10,
"ordType":"LIMIT",
"side":"BUY",
"timeInForce":"DAY",
"transactTime":"20160304-17:36:50",
"status":"PENDING_NEW",
"text":"Enviada"
},
19
{
"orderId":"1130835",
"clOrdId":"user1145712381052053",
"proprietary":"api",
"execId":"160229133429-fix1-493",
"accountId":{
"id":"10"
},
"instrumentId":{
"marketId":"ROFX",
"symbol":"DODic21"
},
"price":18.540,
"orderQty":10,
"ordType":"LIMIT",
"side":"BUY",
"timeInForce":"DAY",
"transactTime":"20160304-17:37:35",
"avgPx":0,
"lastPx":0,
"lastQty":0,
"cumQty":0,
"leavesQty":10,
"status":"NEW",
"text":"Aceptada "
}
]
}
20
Consultar Orden por OrderID
Consulta que devuelve el estado de una orden consultando por su OrderID.
HTTP Request
GET https://api.remarkets.primary.com.ar/rest/order/byOrderId
Parameters
Parámetros URL
Parameter name Value Description
orderId Integer Número de orden. Ejemplo: 645746456
Ejemplo
Http Request https://api.remarkets.primary.com.ar/rest/order/byOrderId?orderId=93454894
{
"status":"OK",
"order":{
"orderId":"93454894",
"clOrdId":"260723557037947",
"proprietary":"api",
"execId":"T1644060",
"accountId":{
"id":"500"
},
"instrumentId":{
"marketId":"ROFX",
"symbol":"DOJun21"
},
"price":21,
"orderQty":1,
Respuesta
"ordType":"LIMIT",
"side":"BUY",
"timeInForce":"DAY",
"transactTime":"20180327-12:12:38",
"avgPx":20.174,
"lastPx":20.174,
"lastQty":1,
"cumQty":1,
"leavesQty":0,
"status":"FILLED",
"text":"Operada "
}
}
21
Consultar Órdenes Activas
Consulta que devuelve las órdenes que están activas en el mercado.
HTTP Request
GET https://api.remarkets.primary.com.ar/rest/order/actives
Parameters
Parámetros URL
Parameter name Value Description
accountId Integer Número de cuenta. Ejemplo: 30
Ejemplo
Http Request https://api.remarkets.primary.com.ar/rest/order/actives?accountId=10
{
"status":"OK",
"orders":[
{
"orderId":"1130813",
"clOrdId":"user1145703678429722",
"proprietary":"api",
"execId":"160229133429-fix1-414",
"accountId":{
"id":"10"
},
"instrumentId":{
"marketId":"ROFX",
"symbol":"DODic21"
},
"price":18.540,
Respuesta
"orderQty":1,
"ordType":"LIMIT",
"side":"BUY",
"timeInForce":"DAY",
"transactTime":"20160303-17:27:08",
"avgPx":0,
"lastPx":0,
"lastQty":0,
"cumQty":0,
"leavesQty":1,
"status":"NEW",
"text":"Aceptada "
},
…
]
}
22
Consultar Ordenes Operadas
Consulta que devuelve todas las ordenes que están total o parcialmente operadas.
HTTP Request
GET https://api.remarkets.primary.com.ar/rest/order/filleds
Parameters
Parámetros URL
Ejemplo
Http Request https://api.remarkets.primary.com.ar/rest/order/actives?accountId=10
{
"status":"OK",
"orders":[
{
"orderId":"1130813",
"clOrdId":"user1145703678429722",
"proprietary":"api",
"execId":"T1169011",
"accountId":{
"id":"10"
},
"instrumentId":{
"marketId":"ROFX",
"symbol":"DODic21"
},
Respuesta "price":18.540,
"orderQty":1,
"ordType":"LIMIT",
"side":"BUY",
"timeInForce":"DAY",
"transactTime":"20160303-17:29:53",
"avgPx":18.540000,
"lastPx":18.500,
"lastQty":1,
"cumQty":1,
"leavesQty":0,
"status":"FILLED",
"text":"Operada "
}
]
}
23
Estado de orden por ID Cuenta
Consulta que devuelve el último estado de los request (client order ID) asociadas a una cuenta. Es decir,
de los si se hizo un request para dar de alta una orden, y luego se hizo otro para darlo de baja entonces
esta API devolverá 2 ordenes, una con el ultimo estado asociado al request de alta y otra con el ultimo
estado asociado al request de baja.
HTTP Request
GET https://api.remarkets.primary.com.ar/rest/order/all
Parameters
Parámetros URL
Parameter name Value Description
accountId Integer Número de cuenta. Ejemplo: 30
Ejemplo
Http Request https://api.remarkets.primary.com.ar/rest/order/all?accountId=30
{
"status":"OK",
"orders":[
{
"orderId":"1130835",
"clOrdId":"user1145712381052053",
"proprietary":"api",
"execId":"160229133429-fix1-493",
"accountId":{
"id":"10"
},
"instrumentId":{
"marketId":"ROFX",
"symbol":"DODic21"
Respuesta },
"price":18.540,
"orderQty":10,
"ordType":"LIMIT",
"side":"BUY",
"timeInForce":"DAY",
"transactTime":"20160304-17:37:35",
"avgPx":0,
"lastPx":0,
"lastQty":0,
"cumQty":0,
"leavesQty":10,
"status":"NEW",
"text":"Aceptada "
},
24
{
"orderId":"1130835",
"clOrdId":"user1145712381052053Cnl54",
"proprietary":"api",
"execId":"160229133429-fix1-494",
"accountId":{
"id":"10"
},
"instrumentId":{
"marketId":"ROFX",
"symbol":"DODic21"
},
"price":18.540,
"orderQty":10,
"ordType":"LIMIT",
"side":"BUY",
"timeInForce":"DAY",
"transactTime":"20160304-17:38:15",
"avgPx":0,
"lastPx":0,
"lastQty":0,
"cumQty":0,
"leavesQty":10,
"status":"CANCELLED",
"text":"Cancelada"
}
]
}
25
Estado de Orden por Execution ID
Consulta que devuelve el estado de la orden (por Execution ID). Es decir, esta consulta va a devolver la
orden asociada a un Execution ID pudiendo identificar que orden esta involucrada en la respectiva
operación.
HTTP Request
GET https://api.remarkets.primary.com.ar/rest/order/byExecId
Parameters
Parámetros URL
Parameter name Value Description
execId String Identificador de Ejecución, ejemplo: T3567006
26
Suscribirse a Execution Reports a través de WebSocket
Los siguientes mensajes le permiten al usuario suscribirse para recibir mensajes de Execution Reports
sobre las órdenes asociadas a una cuenta determinada. Se permite suscribirse para ordenes asociadas a
una, varias o todas las cuentas del usuario.
Mensaje Enviado:
{
"type":"os",
Formato "account":{
Mensaje "id":"40"
}
}
Mensaje Enviado:
{
"type":"os",
"accounts":[
{
"id":"40"
Formato
},
Mensaje
{
"id":"4000"
}
]
}
Mensaje Enviado:
{
Formato
"type":"os"
Mensaje
}
27
Se encuentra disponible el parámetro “snapshotOnlyActive” para recibir los Execution Reports de las
ordenes activas (en estado NEW o PARTIALLY_FILLED) para todas las cuentas, mas de una cuenta o para una
única cuenta.
Mensaje Enviado:
{
Formato
"type":"os" ,"snapshotOnlyActive":true
Mensaje
}
Mensaje Enviado:
{
"type":"or",
"orderReport":{
"orderId":"1128056",
"clOrdId":"user14545967430231",
"proprietary":"api",
"execId":"160127155448-fix1-1368",
"accountId":{
"id":"30"
},
"instrumentId":{
"marketId":"ROFX",
"symbol":"DODic21"
},
Formato
"price":18.000,
Mensaje
"orderQty":10,
"ordType":"LIMIT",
"side":"BUY",
"timeInForce":"DAY",
"transactTime":"20160204-11:41:54",
"avgPx":0,
"lastPx":0,
"lastQty":0,
"cumQty":0,
"leavesQty":10,
"status":"CANCELLED",
"text":"Reemplazada"
}
}
28
Market Data
Estas API permiten acceder a datos Históricos y en Tiempo Real sobre cualquier instrumento negociado
en el mercado. También la API ofrece un método para buscar todos los instrumentos que se han
operado.
Para cotizaciones en tiempo real será necesario que el consumo se haga a través de Websocket (más
información en la página 26).
HTTP Request
GET https://api.remarkets.primary.com.ar/rest/marketdata/get
Parameters
Parámetros URL
Parameter name Value Description
El id del Mercado al que pertenece el instrumento sobre el que
se pide info. Valores permitidos:
marketId String
● ROFX
Valido para MD de ROFEX y MERVAL.
Ejemplo
https://api.remarkets.primary.com.ar/rest/marketdata/get?marketId=ROFX&symbol
Http Request =DODic 21&entries=BI,OF,LA,OP,CL,SE,OI&depth=2
29
{
"status":"OK",
"marketData":{
"LA":{ "price":18.010, "size":500 },
"SE":null,
"BI":[{"price":18.000, "size":25}], "OI":null,
Respuesta
"OF":[{"price":18.050, "size":50}, {"price":1.110,
"size":10}],
"OP":18.010,
30
"CL":null
},
"depth":2,
"aggregated":true
}
Para recibir este tipo de mensajes hay que suscribirse indicando los instrumentos de los cuales
queremos recibir MD. El servidor enviara un mensaje de MD por cada instrumento al que nos
suscribimos cada vez que este cambie.
Utilizando el protocolo Web Socket es posible recibir Market Data de los instrumentos especificados de
manera asíncrona cuando esta cambie sin necesidad de hacer un request cada vez que necesitemos.
Para recibir este tipo de mensajes hay que suscribirse indicando los instrumentos de los cuales
queremos recibir MD. El servidor enviara un mensaje de MD por cada instrumento al que nos
suscribimos cada vez que este cambie.
Con este mensaje nos suscribimos para recibir MD de los instrumentos especificados, el servidor
solamente enviara los datos especificados en la lista “entries”. El parámetro “depth” indica la
profundidad del book que se desea recibir, por defecto se devuelve el top of book, es decir profundidad
1.
Mensaje Enviado:
{
"type":"smd",
"level":1,
"entries":["OF”],
"products":[
Formato Mensaje {
"symbol":"DOMar21",
"marketId":"ROFX"
},
{
"symbol":"DOSep21",
"marketId":"ROFX"
}
],
"depth":2
}
26
Mensaje de Market Data
Este es el mensaje que envía el servidor a todos los que estén suscriptos a MD del instrumento indicado.
En este caso utilizamos el ejemplo de suscripción a market data con profundidad 2.
Mensaje Recibido:
{
"type":"Md",
"instrumentId":{
"marketId":"ROFX",
"symbol":"DODic20"
},
"marketData":{
"OF":[
{
Formato "price":18.000,
Mensaje "size":21
},
{
"price":18.100,
"size":21
}
]
}
}
27
MarketData Histórica
La API para acceder a datos históricos del mercado permite buscar datos para una fecha en particular
y para un contrato especifico.
HTTP Request
https://api.remarkets.primary.com.ar/rest/data/getTrades?marketId=ROFX&symbol=DOEne18&date=YYYY-
MM-DD
Parameters
Parámetros URL
Parameter name Value Description
Errores
Lista de errores
Tipo de Error Mensaje enviado con errores en la sintaxis.
{
Mensaje "status":"ERROR",
enviado por el "description":"Mensaje invalido",
Servidor "message":"{\"type\":\"smd\",\"level\":1,}"
}
28
Ejemplo
Para obtener la Market Data Histórica para el contrato de Dólar Mayo 2017 para la fecha
17/05/2017:
Http Request https://api.remarkets.primary.com.ar
/rest/data/getTrades?marketId=ROFX&symbol= DOMay21&date=2017-05-17
{
"status":"OK",
"symbol":"DOMay21",
"market":"ROFX",
"trades":[
{
"price":15.77,
"size":125,
"datetime":"2017-05-17 14:29:24.831",
"servertime":1495031364831,
"symbol":"DOMay21"
Respuesta },
{
"price":15.775,
"size":75,
"datetime":"2017-05-17 14:35:40.152",
"servertime":1495031740152,
"symbol":"DOMay21"
},
{
"price":15.76,
"size":325,
"datetime":"2017-05-17 14:46:43.038",
"servertime":1495032403038,
"symbol":"DOMay21"
},
…
{
"price":15.73,
"size":1000,
"datetime":"2017-05-17 15:54:15.700",
"servertime":1495036455700,
"symbol":"DOMay21"
}
]
}
29
Ejemplo
Para obtener la Market Data Histórica para el contrato de Dólar Febrero 2018 para el rango de
fechas 01/01/2018 – 10/01/2018:
Http Request https://api.remarkets.primary.com.ar
/rest/data/getTrades?marketId=ROFX&symbol= DOMay21&dateFrom=2018-
01-01&dateTo=2018-01-10
{
"status":"OK",
"symbol":"DOFeb21",
"market":"ROFX",
"trades":[
{
"price":19.73,
"size":139,
"datetime":"2017-01-01 14:29:24.831",
"servertime":1495031364831,
"symbol":"DOMay21"
Respuesta },
{
"price":19.725,
"size":10,
"datetime":"2017-01-01 14:35:40.152",
"servertime":1495031740152,
"symbol":"DOMay21"
},
{
"price":19.86,
"size":330,
"datetime":"2017-01-08 12:46:43.038",
"servertime":14950123403038,
"symbol":"DOMay21"
},
…
{
"price":19.73,
"size":1000,
"datetime":"2017-01-10 11:54:15.700",
"servertime":1495123455700,
"symbol":"DOMay21"
}
]
}
30
Errores
Lista de errores
Tipo de Error Intentar cargar una orden con una cuenta a la que no se tiene acceso.
{
"status":"ERROR",
Respuesta "description":"No tiene acceso a la cuenta 30",
"message":null
}
Tipo de Error Error al intentar acceder a un método que no existe o al cual no se tiene acceso.
{
"status":"ERROR",
"message":"Access Denied"
}
O
Respuesta
{
"status":"ERROR",
"description":"Ruta invalida",
"message":""
}
31
Primary Risk API
Primary Risk API es la interfaz que permite comunicarse con el sistema RIMA (Risk Manager).
Consulta de posiciones
HTTP Request
GET https://api.remarkets.primary.com.ar/rest/risk/position/getPositions/{accountName}
Autenticación
HTTP Basic Authentication
Parameters
Parámetros URL
Parameter name Value Description
accountName String Nombre de la Cuenta. Ejemplo: 30
Ejemplo
Http Request https://api.remarkets.primary.com.ar/rest/risk/position/getPositions/10
{
"status":"OK",
"positions":[
{
"originalBuyPrice":13.0,
"originalSellPrice":0.0,
"symbol":"DODic21",
"instrument":{
"symbolReference":"DLR122021"
Respuesta },
"buyPrice":18.0,
"buySize":10.0,
"sellPrice":0.0,
"sellSize":0,
"totalDailyDiff":0.0,
"totalDiff":0.0
}
]
}
32
Consultar detalle de posiciones
HTTP Request
GET https://api.remarkets.primary.com.ar/rest/risk/detailedPosition/{accountName}
Autenticación
HTTP Basic Authentication
Parameters
Parámetros URL
Parameter name Value Description
accountName String Nombre de la Cuenta. Ejemplo: 30
Ejemplo
Http Request https://api.remarkets.primary.com.ar/rest/risk/detailedPosition/10
{
"status":"OK",
"detailedPosition":{
"account":"10",
"totalDailyDiffPlain":-
29288.460000000000000000000000000000,
"totalMarketValue":null,
"report":{
"FUTURE":{
"DLR122021":{
"detailedPositions":[
{
"symbolReference":"DLR122021",
"settlType":null,
"contractType":"FUTURE",
Respuesta
"priceConversionFactor":1.000000,
"contractSize":1002.000000,
"marketPrice":18.077000000000,
"currency":"ARS",
"exchangeRate":1.000000,
"totalInitialSize":0,
"buyInitialSize":0,
"sellInitialSize":0,
"buyInitialPrice":0,
"sellInitialPrice":0,
"totalFilledSize":10.000000,
"buyFilledSize":10.000000,
"sellFilledSize":0,
"buyFilledPrice":18.000000,
"sellFilledPrice":0,
33
"totalCurrentSize":10.000000,
"buyCurrentSize":10.000000,
"sellCurrentSize":0,
"detailedDailyDiff":{
"buyPricePPPDiff":18.000000,
"sellPricePPPDiff":0,
"totalDailyDiff":-
29288.460000000000000000000000,
"buyDailyDiff":-
29288.460000000000000000000000,
"sellDailyDiff":0E-18,
"totalDailyDiffPlain":-
29288.460000000000000000000000000000,
"buyDailyDiffPlain":-
29288.460000000000000000000000000000,
"sellDailyDiffPlain":0E-24
},
"marketValue":null
}
],
"instrumentMarketValue":null,
"instrumentInitialSize":0,
"instrumentFilledSize":10.000000,
"instrumentCurrentSize":10.000000
}
}
},
"lastCalculation":1455653450657
}
}
HTTP Request
GET https://api.remarkets.primary.com.ar/rest/risk/accountReport/{accountName}
Autenticación
HTTP Basic Authentication
Parameters
Parámetros URL
Parameter name Value Description
accountName String Nombre de la Cuenta. Ejemplo: 30
40
Ejemplo
Http Request https://api.remarkets.primary.com.ar/rest/risk/accountReport/10
{
"status":"OK",
"accountData":{
"lastCalculation":1467729250596,
"accountName":"10",
"marketMember":"Primary",
"marketMemberIdentity":"000",
"collateral":0,
"margin":666555,
"availableToCollateral":555666,
"detailedAccountReports":{
"T_PLUS_2":{
"currencyBalance":{
"detailedCurrencyBalance":{
"EUR":{ "consumed":0, "available":0 },
"ARS":{ "consumed":0, "available":0 },
"ARS BCRA":{ "consumed":0, "available":0 },
"U$S":{ "consumed":0, "available":0 },
"USD G":{ "consumed":0, "available":0 },
"USD D":{ "consumed":0, "available":0 },
"USD C":{ "consumed":0, "available":0 },
"USD R":{ "consumed":0, "available":0 }
},
Respuesta "accountValue":{
"cash":{
"totalCash":0.000000,
"detailedCash":{
"EUR":0, "ARS":0, "ARS BCRA":0, "USD G":0,
"U$S":0, "USD D":0, "USD R":0, "USD C":0
}
},
"dailyDiff":0,
"movements":0,
"portfolio":0,
"credit":1000000.000000000000,
"total":1000000.000000000000
},
"availableToOperate":{
"cash":{
"totalCash":0.000000,
"detailedCash":{
"EUR":0, "ARS":0, "ARS BCRA":0, "USD G":0,
"U$S":0, "USD D":0, "USD R":0, "USD C":0
}
},
"dailyDiff":0,
"movements":0,
41
"portfolio":0,
"credit":1000000.000000000000,
"total":1000000.000000000000
}
},
"NEXT_DAY":{
"currencyBalance":{
"detailedCurrencyBalance":{
"EUR":{ "consumed":0, "available":0 },
"ARS":{ "consumed":0, "available":0 },
"ARS BCRA":{ "consumed":0, "available":0 },
"U$S":{ "consumed":0, "available":0 },
"USD G":{ "consumed":0, "available":0 },
"USD D":{ "consumed":0, "available":0 },
"USD C":{ "consumed":0, "available":0 },
"USD R":{ "consumed":0, "available":0 }
}
},
"accountValue":{
"cash":{
"totalCash":0.000000,
"detailedCash":{
"EUR":0, "ARS":0, "ARS BCRA":0, "USD G":0,
"U$S":0, "USD D":0, "USD R":0, "USD C":0
}
},
"dailyDiff":0,
"movements":0,
"portfolio":0,
"credit":1000000.000000000000,
"total":1000000.000000000000
},
"availableToOperate":{
"cash":{
"totalCash":0.000000,
"detailedCash":{
"EUR":0, "ARS":0, "ARS BCRA":0, "USD G":0,
"U$S":0, "USD D":0, "USD R":0, "USD C":0
}
},
"dailyDiff":0,
"movements":0,
"portfolio":0,
"credit":1000000.000000000000,
"total":1000000.000000000000
}
},
"T_PLUS_3":{
"currencyBalance":{
42
"detailedCurrencyBalance":{
"EUR":{ "consumed":0, "available":0 },
"ARS":{ "consumed":0, "available":0 },
"ARS BCRA":{ "consumed":0, "available":0 },
"U$S":{ "consumed":0, "available":0 },
"USD G":{ "consumed":0, "available":0 },
"USD D":{ "consumed":0, "available":0 },
"USD C":{ "consumed":0, "available":0 },
"USD R":{ "consumed":0, "available":0 }
}
},
"accountValue":{
"cash":{
"totalCash":0.000000,
"detailedCash":{
"EUR":0, "ARS":0, "ARS BCRA":0, "USD G":0,
"U$S":0, "USD D":0, "USD R":0, "USD C":0
}
},
"dailyDiff":0,
"movements":0,
"portfolio":0,
"credit":1000000.000000000000,
"total":1000000.000000000000
},
"availableToOperate":{
"cash":{
"totalCash":0.000000,
"detailedCash":{
"EUR":0, "ARS":0, "ARS BCRA":0, "USD G":0,
"U$S":0, "USD D":0, "USD R":0, "USD C":0
}
},
"dailyDiff":0,
"movements":0,
"portfolio":0,
"credit":1000000.000000000000,
"total":1000000.000000000000
}
},
"CASH":{
"currencyBalance":{
"detailedCurrencyBalance":{
"EUR":{ "consumed":0, "available":0 },
"ARS":{ "consumed":0, "available":0 },
"ARS BCRA":{ "consumed":0, "available":0 },
"U$S":{ "consumed":0, "available":0 },
"USD G":{ "consumed":0, "available":0 },
"USD D":{ "consumed":0, "available":0 },
43
"USD C":{ "consumed":0, "available":0 },
"USD R":{ "consumed":0, "available":0 }
}
},
"accountValue":{
"cash":{
"totalCash":0.000000,
"detailedCash":{
"EUR":0, "ARS":0, "ARS BCRA":0, "USD G":0,
"U$S":0, "USD D":0, "USD R":0, "USD C":0
}
},
"dailyDiff":0,
"movements":0,
"portfolio":0,
"credit":1000000.000000000000,
"total":1000000.000000000000
},
"availableToOperate":{
"cash":{
"totalCash":0.000000,
"detailedCash":{
"EUR":0, "ARS":0, "ARS BCRA":0, "USD G":0,
"U$S":0, "USD D":0, "USD R":0, "USD C":0
}
},
"dailyDiff":0,
"movements":0,
"portfolio":0,
"credit":1000000.000000000000,
"total":1000000.000000000000
}
}
},
"hasError":false,
"errorDetail":null
}
}
44
Cotización de Monedas
HTTP Request
GET /risk/currency/getAll
Autenticación
HTTP Basic Authentication
Parameters
No recibe parámetros.
Ejemplo
Http Request https://api.remarkets.primary.com.ar/rest/risk/currency/getAll
{
"status":"OK",
"currencies":[
{
"rate":1,
"currency":"ARS",
"description":"Pesos"
},
{
"rate":17.6,
"currency":"USD C",
"description":"Dólar Cable"
},
{
"rate":17.6,
"currency":"USD G",
"description":"Dólar Gtía. ROFEX"
Respuesta
},
{
"rate":17.35,
"currency":"U$S",
"description":"Dólar garantía ROFEX"
},
{
"rate":17.3307,
"currency":"USD R",
"description":"Dólar Ref. CA3500"
},
{
"rate":1,
"currency":"ARS BCRA",
"description":"Pesos BCRA"
}
]
}
45