primary
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChinesePrimary — Trading API de Matba ROFEX
Primary — Matba ROFEX交易API
API para operar en el Mercado Argentino de Futuros y Opciones (Matba ROFEX) a través de Primary Trading Platform (PTP). Soporta futuros (dólar, soja, trigo, maíz, índices), opciones sobre futuros, acciones, bonos y CEDEARs.
Base URL:
https://api.remarkets.primary.com.arDocs: github.com/matbarofex — repositorio oficial con ejemplos open source.
用于通过Primary Trading Platform (PTP)在阿根廷期货与期权市场(Matba ROFEX)进行交易的API。支持期货(美元、大豆、小麦、玉米、指数)、期货期权、股票、债券和CEDEARs。
Base URL:
https://api.remarkets.primary.com.ar文档: github.com/matbarofex — 包含开源示例的官方仓库。
Autenticación
认证
Obtener Credenciales
获取凭证
| Entorno | URL | Descripción |
|---|---|---|
| REMARKET (demo) | remarkets.primary.ventures | Crear cuenta gratis para paper trading |
| LIVE (producción) | Contactar a mpi@primary.com.ar | Solicitar acceso al equipo MPI |
Una vez creada la cuenta en REMARKET, tendrás:
- Usuario: el que registraste
- Password: el que configuraste
- Account: tu número de cuenta (suele ser + últimos dígitos del usuario)
REM
| 环境 | URL | 描述 |
|---|---|---|
| REMARKET(演示) | remarkets.primary.ventures | 免费创建账户进行模拟交易 |
| LIVE(生产) | 联系 mpi@primary.com.ar | 联系MPI团队申请访问权限 |
在REMARKET创建账户后,你将获得:
- 用户名: 注册时填写的用户名
- 密码: 自行设置的密码
- 账户: 你的账户编号(通常为 + 用户名最后几位)
REM
Obtener Token
获取Token
python
import requests
r = requests.post("https://api.remarkets.primary.com.ar/auth/getToken",
headers={"X-Username": tu_usuario, "X-Password": tu_password})
token = r.headers["X-Auth-Token"]El token se envía en adelante como header en todos los requests.
X-Auth-Token⚠️ NUNCA hardcodear credenciales. Usar variables de entorno o parámetros CLI.
python
import os
TOKEN = os.getenv("PRIMARY_TOKEN") # Opcional: cachear token
USER = os.getenv("PRIMARY_USER")
PASS = os.getenv("PRIMARY_PASSWORD")
ACCOUNT = os.getenv("PRIMARY_ACCOUNT") # Ej: 12345 o REM12345python
import requests
r = requests.post("https://api.remarkets.primary.com.ar/auth/getToken",
headers={"X-Username": tu_usuario, "X-Password": tu_password})
token = r.headers["X-Auth-Token"]后续所有请求中,需在请求头 中携带该token。
X-Auth-Token⚠️ 切勿硬编码凭证。请使用环境变量或CLI参数。
python
import os
TOKEN = os.getenv("PRIMARY_TOKEN") # 可选:缓存token
USER = os.getenv("PRIMARY_USER")
PASS = os.getenv("PRIMARY_PASSWORD")
ACCOUNT = os.getenv("PRIMARY_ACCOUNT") # 示例: 12345 或 REM12345Renew Token
刷新Token
Si recibís un 401, el token expiró. Renovalo con un nuevo POST a .
/auth/getToken如果收到401错误,说明token已过期。通过再次POST请求 刷新token。
/auth/getTokenSegmentos
交易板块
El mercado se organiza en segmentos (ruedas de negociación). Cada instrumento pertenece a un segmento.
| Segmento | Descripción |
|---|---|
| Derivados Financieros (futuros de dólar, índices) |
| Derivados Agropecuarios (soja, trigo, maíz) |
| Instrumentos listados en ambas divisiones |
| Mercados externos a Matba ROFEX (BYMA) |
| Mercado Abierto Electrónico |
| Ambiente de pruebas |
| Sub-segmentos de usuarios |
| Otros segmentos |
市场按交易板块(交易轮次)划分。每个交易工具都属于一个板块。
| 板块 | 描述 |
|---|---|
| 金融衍生品(美元期货、指数) |
| 农业衍生品(大豆、小麦、玉米) |
| 在两个部门上市的工具 |
| Matba ROFEX以外的市场(BYMA) |
| 电子公开市场 |
| 测试环境 |
| 用户子板块 |
| 其他板块 |
Listar Segmentos
列出所有交易板块
http
GET https://api.remarkets.primary.com.ar/rest/segment/allpython
r = requests.get("https://api.remarkets.primary.com.ar/rest/segment/all",
headers={"X-Auth-Token": token})
print(r.json()["segments"])Respuesta:
json
{"status":"OK","segments":[
{"marketSegmentId":"DDF","marketId":"ROFX"},
{"marketSegmentId":"DDA","marketId":"ROFX"},
...
]}http
GET https://api.remarkets.primary.com.ar/rest/segment/allpython
r = requests.get("https://api.remarkets.primary.com.ar/rest/segment/all",
headers={"X-Auth-Token": token})
print(r.json()["segments"])响应:
json
{"status":"OK","segments":[
{"marketSegmentId":"DDF","marketId":"ROFX"},
{"marketSegmentId":"DDA","marketId":"ROFX"},
...
]}Instrumentos (Securities)
交易工具(证券)
Los instrumentos se identifican por su símbolo y marketId. Ejemplos:
| Símbolo | Descripción | CFI Code |
|---|---|---|
| Futuro de dólar Junio 2026 | |
| Futuro de soja Rosario Mayo 2026 | |
| Opción Call sobre futuro dólar | |
| Opción Put sobre futuro dólar | |
| Acción Grupo Galicia | |
交易工具通过代码和marketId标识。示例:
| 代码 | 描述 | CFI代码 |
|---|---|---|
| 2026年6月美元期货 | |
| 2026年5月罗萨里奥大豆期货 | |
| 美元期货看涨期权 | |
| 美元期货看跌期权 | |
| Galicia集团股票 | |
Todos los Instrumentos
所有交易工具
http
GET https://api.remarkets.primary.com.ar/rest/instruments/allhttp
GET https://api.remarkets.primary.com.ar/rest/instruments/allInstrumentos con Detalle
带详情的交易工具
http
GET https://api.remarkets.primary.com.ar/rest/instruments/detailsDevuelve: , , , , , , , , , , , , , , .
symbolsegmentlowLimitPricehighLimitPriceminPriceIncrementminTradeVolmaxTradeVoltickSizecontractMultiplierroundLotmaturityDatecurrencyorderTypestimesInForcecficodehttp
GET https://api.remarkets.primary.com.ar/rest/instruments/details返回字段: , , , , , , , , , , , , , , 。
symbolsegmentlowLimitPricehighLimitPriceminPriceIncrementminTradeVolmaxTradeVoltickSizecontractMultiplierroundLotmaturityDatecurrencyorderTypestimesInForcecficodeDetalle de un Instrumento
单个交易工具详情
http
GET https://api.remarkets.primary.com.ar/rest/instruments/detail?symbol=DLR/JUN26&marketId=ROFXhttp
GET https://api.remarkets.primary.com.ar/rest/instruments/detail?symbol=DLR/JUN26&marketId=ROFXPor Código CFI
按CFI代码筛选
http
GET https://api.remarkets.primary.com.ar/rest/instruments/byCFICode?CFICode=FXXXSX| CFI Code | Tipo |
|---|---|
| Futuro |
| Futuro (genérico) |
| Opción Call sobre Futuro |
| Opción Put sobre Futuro |
| Opción Call europea sobre Futuro |
| Opción Put europea sobre Futuro |
| Acción |
| Bono |
| CEDEAR |
| Opción Call sobre Acción |
| Opción Put sobre Acción |
| Obligación Negociable |
http
GET https://api.remarkets.primary.com.ar/rest/instruments/byCFICode?CFICode=FXXXSX| CFI代码 | 类型 |
|---|---|
| 期货 |
| 通用期货 |
| 期货看涨期权 |
| 期货看跌期权 |
| 欧式期货看涨期权 |
| 欧式期货看跌期权 |
| 股票 |
| 债券 |
| CEDEAR |
| 股票看涨期权 |
| 股票看跌期权 |
| 可交易债券 |
Por Segmento
按交易板块筛选
http
GET https://api.remarkets.primary.com.ar/rest/instruments/bySegment?MarketSegmentID=DDF&MarketID=ROFXhttp
GET https://api.remarkets.primary.com.ar/rest/instruments/bySegment?MarketSegmentID=DDF&MarketID=ROFXMarket Data
市场数据
En Tiempo Real (REST Snapshot)
实时数据(REST快照)
http
GET https://api.remarkets.primary.com.ar/rest/marketdata/get
?marketId=ROFX
&symbol=DLR/JUN26
&entries=BI,OF,LA,OP,CL,SE,OI
&depth=3| Entry | Significado |
|---|---|
| Bids (ofertas de compra en el book) |
| Offers (ofertas de venta en el book) |
| Last (último precio operado) |
| Opening Price (precio de apertura) |
| Closing Price (cierre rueda anterior) |
| Settlement Price (precio de ajuste, solo futuros) |
| High Price (máximo de la rueda) |
| Low Price (mínimo de la rueda) |
| Trade Volume (volumen operado en contratos) |
| Open Interest (interés abierto, solo futuros) |
| Index Value (solo índices) |
| Effective Volume (solo BYMA) |
| Nominal Volume (solo BYMA) |
| Auction Price (cierre del día corriente) |
python
r = requests.get("https://api.remarkets.primary.com.ar/rest/marketdata/get",
headers={"X-Auth-Token": token},
params={"marketId": "ROFX", "symbol": "DLR/JUN26",
"entries": "BI,OF,LA,OP,CL,SE,OI", "depth": 3})
data = r.json()["marketData"]
print(f"Bid: {data['BI']} | Offer: {data['OF']}")
print(f"Last: {data['LA']} | Settle: {data['SE']}")http
GET https://api.remarkets.primary.com.ar/rest/marketdata/get
?marketId=ROFX
&symbol=DLR/JUN26
&entries=BI,OF,LA,OP,CL,SE,OI
&depth=3| 条目 | 含义 |
|---|---|
| 买价(订单簿中的买入报价) |
| 卖价(订单簿中的卖出报价) |
| 最新成交价 |
| 开盘价 |
| 上一交易日收盘价 |
| 结算价(仅期货) |
| 当日最高价 |
| 当日最低价 |
| 成交量(合约数) |
| 持仓量(仅期货) |
| 指数值(仅指数) |
| 有效成交量(仅BYMA) |
| 名义成交量(仅BYMA) |
| 拍卖价(当日收盘价) |
python
r = requests.get("https://api.remarkets.primary.com.ar/rest/marketdata/get",
headers={"X-Auth-Token": token},
params={"marketId": "ROFX", "symbol": "DLR/JUN26",
"entries": "BI,OF,LA,OP,CL,SE,OI", "depth": 3})
data = r.json()["marketData"]
print(f"买价: {data['BI']} | 卖价: {data['OF']}")
print(f"最新成交价: {data['LA']} | 结算价: {data['SE']}")Histórica (Trades)
历史交易数据
http
GET https://api.remarkets.primary.com.ar/rest/data/getTrades
?marketId=ROFX
&symbol=DLR/JUN26
&dateFrom=2026-06-01
&dateTo=2026-06-08Parámetros: , , (una fecha), / (rango), (para mercados externos), ().
marketIdsymboldatedateFromdateToexternalenvironmentREMARKETSpython
r = requests.get("https://api.remarkets.primary.com.ar/rest/data/getTrades",
headers={"X-Auth-Token": token},
params={"marketId": "ROFX", "symbol": "DLR/JUN26",
"date": "2026-06-05"})
trades = r.json()["trades"]
for t in trades[:3]:
print(f"{t['datetime']} {t['price']} {t['size']}")http
GET https://api.remarkets.primary.com.ar/rest/data/getTrades
?marketId=ROFX
&symbol=DLR/JUN26
&dateFrom=2026-06-01
&dateTo=2026-06-08参数: , , (单个日期), /(日期范围), (用于外部市场), ()。
marketIdsymboldatedateFromdateToexternalenvironmentREMARKETSpython
r = requests.get("https://api.remarkets.primary.com.ar/rest/data/getTrades",
headers={"X-Auth-Token": token},
params={"marketId": "ROFX", "symbol": "DLR/JUN26",
"date": "2026-06-05"})
trades = r.json()["trades"]
for t in trades[:3]:
print(f"{t['datetime']} {t['price']} {t['size']}")Órdenes
订单
Tipos de Órdenes
订单类型
| Tipo | Descripción |
|---|---|
| Orden con precio límite |
| Orden a mercado |
| Orden stop que se activa como limit |
| Market que se convierte en limit |
Nota: STOP_LIMIT y MARKET_TO_LIMIT no están disponibles para todos los instrumentos. Verificar en el detalle del instrumento.
orderTypes| 类型 | 描述 |
|---|---|
| 限价订单 |
| 市价订单 |
| 止损限价订单 |
| 转限价市价订单 |
注:STOP_LIMIT和MARKET_TO_LIMIT并非对所有交易工具可用。请查看交易工具详情中的字段。
orderTypesTime in Force (TIF)
有效期限(TIF)
| TIF | Descripción |
|---|---|
| Solo válida por el día. Se expira al cierre de rueda |
| Immediate or Cancel |
| Fill or Kill |
| Good Till Date (requiere |
| TIF | 描述 |
|---|---|
| 仅当日有效,交易日结束后过期 |
| 立即成交或取消 |
| 全部成交或取消 |
| 有效期至指定日期(需 |
Ingresar Orden (REST)
提交订单(REST)
http
GET https://api.remarkets.primary.com.ar/rest/order/newSingleOrder
?marketId=ROFX
&symbol=DLR/JUN26
&side=BUY
&orderQty=10
&ordType=LIMIT
&price=1450.0
&timeInForce=DAY
&account=TU_CUENTA
&cancelPrevious=False
&iceberg=FalseParámetros:
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| String | ✅ | |
| String | ✅ | Símbolo del instrumento |
| String | ✅ | |
| Integer | ✅ | Cantidad de contratos |
| String | ✅ | |
| Float | Condicional | Requerido para LIMIT |
| String | No | |
| Integer/String | ✅ | Número de cuenta |
| Boolean | No | Cancela órdenes previas del mismo contrato/lado |
| Boolean | No | Orden Iceberg (default: false) |
| Integer | Condicional | Cantidad a divulgar (para iceberg) |
| Date | Condicional | Requerido para GTD (formato: YYYYMMDD) |
Respuesta:
json
{"status":"OK","order":{"clientId":"21581341758","proprietary":"PBCP"}}El es el clOrdId (Client Order ID) que se usa para consultar/cancelar la orden.
clientIdhttp
GET https://api.remarkets.primary.com.ar/rest/order/newSingleOrder
?marketId=ROFX
&symbol=DLR/JUN26
&side=BUY
&orderQty=10
&ordType=LIMIT
&price=1450.0
&timeInForce=DAY
&account=TU_CUENTA
&cancelPrevious=False
&iceberg=False参数:
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| String | ✅ | |
| String | ✅ | 交易工具代码 |
| String | ✅ | |
| Integer | ✅ | 合约数量 |
| String | ✅ | |
| Float | 条件必填 | 限价订单需填写 |
| String | 否 | 默认 |
| Integer/String | ✅ | 账户编号 |
| Boolean | 否 | 是否取消同一工具同一方向的先前订单 |
| Boolean | 否 | 是否为冰山订单(默认:false) |
| Integer | 条件必填 | 冰山订单需填写显示数量 |
| Date | 条件必填 | GTD订单需填写(格式:YYYYMMDD) |
响应:
json
{"status":"OK","order":{"clientId":"21581341758","proprietary":"PBCP"}}clientIdIngresar Orden (WebSocket)
提交订单(WebSocket)
json
{"type":"no","product":{"marketId":"ROFX","symbol":"DLR/JUN26"},
"price":185,"quantity":23,"side":"BUY","account":"20","iceberg":false}Para identificar la orden vía WebSocket, incluir :
wsClOrdIdjson
{"type":"no","product":{"marketId":"ROFX","symbol":"DLR/JUN26"},
"price":185,"quantity":23,"side":"BUY","account":"20",
"iceberg":false,"wsClOrdId":"mioid-unico-123"}Respuesta WebSocket (Execution Report):
json
{"type":"or","orderReport":{"orderId":"1128056","clOrdId":"user14545...",
"status":"PENDING_NEW","text":"Enviada","wsClOrdId":"mioid-unico-123"}}Importante: Elsolo aparece en el primer execution report. Luego se debe usar elwsClOrdIddevuelto para seguimiento.clOrdId
json
{"type":"no","product":{"marketId":"ROFX","symbol":"DLR/JUN26"},
"price":185,"quantity":23,"side":"BUY","account":"20","iceberg":false}通过WebSocket提交订单时,可添加标识订单:
wsClOrdIdjson
{"type":"no","product":{"marketId":"ROFX","symbol":"DLR/JUN26"},
"price":185,"quantity":23,"side":"BUY","account":"20",
"iceberg":false,"wsClOrdId":"mioid-unico-123"}WebSocket响应(执行报告):
json
{"type":"or","orderReport":{"orderId":"1128056","clOrdId":"user14545...",
"status":"PENDING_NEW","text":"已发送","wsClOrdId":"mioid-unico-123"}}重要提示:仅在首次执行报告中出现。后续需使用返回的wsClOrdId进行跟踪。clOrdId
Reemplazar Orden
修改订单
http
GET https://api.remarkets.primary.com.ar/rest/order/replaceById
?clOrdId=user144733478280357
&proprietary=api
&price=17
&orderQty=10http
GET https://api.remarkets.primary.com.ar/rest/order/replaceById
?clOrdId=user144733478280357
&proprietary=api
&price=17
&orderQty=10Cancelar Orden
取消订单
http
GET https://api.remarkets.primary.com.ar/rest/order/cancelById
?clOrdId=ajduj3l13ieci2jr4ck
&proprietary=PBCPhttp
GET https://api.remarkets.primary.com.ar/rest/order/cancelById
?clOrdId=ajduj3l13ieci2jr4ck
&proprietary=PBCPCancelar por WebSocket
通过WebSocket取消订单
json
{"type":"co","clientId":"user114121092035207","proprietary":"PBCP"}json
{"type":"co","clientId":"user114121092035207","proprietary":"PBCP"}Consultar Estado de la Orden (REST)
查询订单状态(REST)
| Endpoint | Descripción |
|---|---|
| Último estado del request |
| Todos los estados del request |
| Estado por Order ID |
| Órdenes activas (NEW o PARTIALLY_FILLED) |
| Órdenes total o parcialmente operadas |
| Todos los estados de la cuenta |
| Estado por Execution ID |
| 端点 | 描述 |
|---|---|
| 查询订单最新状态 |
| 查询订单所有状态历史 |
| 通过Order ID查询状态 |
| 查询账户有效订单(NEW或PARTIALLY_FILLED状态) |
| 查询账户已成交订单(全部或部分成交) |
| 查询账户所有订单状态 |
| 通过Execution ID查询状态 |
Execution Reports (WebSocket)
执行报告(WebSocket)
Suscribirse a una cuenta:
json
{"type":"os","account":{"id":"40"}}Varias cuentas:
json
{"type":"os","accounts":[{"id":"40"},{"id":"4000"}]}Todas las cuentas:
json
{"type":"os"}Solo órdenes activas:
json
{"type":"os","snapshotOnlyActive":true}订阅单个账户:
json
{"type":"os","account":{"id":"40"}}订阅多个账户:
json
{"type":"os","accounts":[{"id":"40"},{"id":"4000"}]}订阅所有账户:
json
{"type":"os"}仅订阅有效订单:
json
{"type":"os","snapshotOnlyActive":true}Risk API
Risk API
La Risk API usa HTTP Basic Auth con el mismo user/password, no token. Requiere el header adicionalmente al .
Authorization: Basic <base64>X-Auth-Tokenpython
import base64
auth = base64.b64encode(f"{user}:{password}".encode()).decode()
headers = {"X-Auth-Token": token, "Authorization": f"Basic {auth}"}Risk API使用HTTP Basic认证,使用与之前相同的用户名/密码,无需token。除外,还需添加请求头 。
X-Auth-TokenAuthorization: Basic <base64>python
import base64
auth = base64.b64encode(f"{user}:{password}".encode()).decode()
headers = {"X-Auth-Token": token, "Authorization": f"Basic {auth}"}Posiciones de una Cuenta
账户头寸
http
GET https://api.remarkets.primary.com.ar/rest/risk/position/getPositions/{accountName}python
r = requests.get(f"https://api.remarkets.primary.com.ar/rest/risk/position/getPositions/TU_CUENTA",
headers=headers)
positions = r.json()["positions"]
for p in positions:
print(f"{p['symbol']} Buy:{p['buySize']} Sell:{p['sellSize']} Diff:{p['totalDiff']}")http
GET https://api.remarkets.primary.com.ar/rest/risk/position/getPositions/{accountName}python
r = requests.get(f"https://api.remarkets.primary.com.ar/rest/risk/position/getPositions/TU_CUENTA",
headers=headers)
positions = r.json()["positions"]
for p in positions:
print(f"{p['symbol']} 买入:{p['buySize']} 卖出:{p['sellSize']} 差额:{p['totalDiff']}")Posiciones Detalladas
详细头寸
http
GET https://api.remarkets.primary.com.ar/rest/risk/detailedPosition/{accountName}Devuelve desglose por instrumento con: , , , , , , , .
contractTypemarketPricecurrencyexchangeRatecontractMultiplierbuyCurrentSizesellCurrentSizedetailedDailyDiffhttp
GET https://api.remarkets.primary.com.ar/rest/risk/detailedPosition/{accountName}返回按工具拆分的详情,包含: , , , , , , , 。
contractTypemarketPricecurrencyexchangeRatecontractMultiplierbuyCurrentSizesellCurrentSizedetailedDailyDiffReporte de Cuenta
账户报告
http
GET https://api.remarkets.primary.com.ar/rest/risk/accountReport/{accountName}python
import base64
auth = base64.b64encode(f"{user}:{password}".encode()).decode()
headers = {"X-Auth-Token": token, "Authorization": f"Basic {auth}"}
r = requests.get(f"https://api.remarkets.primary.com.ar/rest/risk/accountReport/TU_CUENTA",
headers=headers)
data = r.json()["accountData"]
print(f"Colateral: {data['collateral']}")
print(f"Margen: {data['margin']}")
print(f"Disponible: {data['availableToCollateral']}")http
GET https://api.remarkets.primary.com.ar/rest/risk/accountReport/{accountName}python
import base64
auth = base64.b64encode(f"{user}:{password}".encode()).decode()
headers = {"X-Auth-Token": token, "Authorization": f"Basic {auth}"}
r = requests.get(f"https://api.remarkets.primary.com.ar/rest/risk/accountReport/TU_CUENTA",
headers=headers)
data = r.json()["accountData"]
print(f"保证金: {data['collateral']}")
print(f"占用保证金: {data['margin']}")
print(f"可用保证金: {data['availableToCollateral']}")Saldos por moneda
各币种余额
for moneda, saldo in data['detailedAccountReports']['0']['currencyBalance']['detailedCurrencyBalance'].items():
print(f" {moneda}: consumido={saldo['consumed']} disponible={saldo['available']}")
---for moneda, saldo in data['detailedAccountReports']['0']['currencyBalance']['detailedCurrencyBalance'].items():
print(f" {moneda}: 已占用={saldo['consumed']} 可用={saldo['available']}")
---WebSocket
WebSocket
URL:
wss://api.remarkets.primary.com.ar/La API WebSocket recibe mensajes asíncronos. El token se envía como header en la conexión:
python
import websocket
ws = websocket.WebSocketApp(
"wss://api.remarkets.primary.com.ar/",
header=[f"X-Auth-Token: {token}"],
on_open=on_open,
on_message=on_message,
...
)
ws.run_forever()Los mensajes tienen el formato:
| type | Significado |
|---|---|
| New Order (enviar orden) |
| Cancel Order (cancelar orden) |
| Order Report (execution report recibido) |
| Order Subscription (suscribirse a reports) |
| Subscribe Market Data |
| Market Data (recibido) |
URL:
wss://api.remarkets.primary.com.ar/WebSocket API接收异步消息。需在连接请求头中携带token:
python
import websocket
ws = websocket.WebSocketApp(
"wss://api.remarkets.primary.com.ar/",
header=[f"X-Auth-Token: {token}"],
on_open=on_open,
on_message=on_message,
...
)
ws.run_forever()消息格式如下:
| type | 含义 |
|---|---|
| 提交新订单 |
| 取消订单 |
| 接收执行报告 |
| 订阅订单报告 |
| 订阅市场数据 |
| 接收市场数据 |
Market Data por WebSocket
通过WebSocket获取市场数据
json
{"type":"smd","level":1,"entries":["OF","BI","LA"],
"products":[{"symbol":"DLR/JUN26","marketId":"ROFX"}],"depth":2}Respuesta:
json
{"type":"Md","instrumentId":{"marketId":"ROFX","symbol":"DLR/JUN26"},
"marketData":{"OF":[{"price":189,"size":21},{"price":188,"size":13}]}}json
{"type":"smd","level":1,"entries":["OF","BI","LA"],
"products":[{"symbol":"DLR/JUN26","marketId":"ROFX"}],"depth":2}响应:
json
{"type":"Md","instrumentId":{"marketId":"ROFX","symbol":"DLR/JUN26"},
"marketData":{"OF":[{"price":189,"size":21},{"price":188,"size":13}]}}Estados de una Orden
订单状态
| Estado | Significado |
|---|---|
| Enviada al mercado, aún no procesada |
| Aceptada, activa en el book |
| Parcialmente operada |
| Totalmente operada |
| Cancelada |
| Rechazada (ver |
| Cancelación en proceso |
| Reemplazo en proceso |
| Reemplazada |
| Pendiente de aprobación |
| 状态 | 含义 |
|---|---|
| 已发送至市场,尚未处理 |
| 已被接受,在订单簿中处于活跃状态 |
| 部分成交 |
| 全部成交 |
| 已取消 |
| 已拒绝(查看 |
| 取消中 |
| 修改中 |
| 已修改 |
| 待审批 |
Errores Comunes
常见错误
| Error | Causa | Solución |
|---|---|---|
| 401 Unauthorized | Token inválido o expirado | Renovar con |
| Account ID incorrecto | Verificar |
| Symbol incorrecto | Verificar símbolo con |
| Sin permisos para el endpoint | Verificar segmento/método |
| Endpoint no existe | Revisar URL |
| Bid/Offer vacíos | Mercado cerrado o sin liquidez | Consultar en horario de rueda |
| 错误 | 原因 | 解决方案 |
|---|---|---|
| 401 Unauthorized | Token无效或已过期 | 通过 |
| 账户ID错误 | 检查 |
| 工具代码错误 | 通过 |
| 无该端点访问权限 | 检查交易板块/请求方法 |
| 端点不存在 | 检查URL |
| 买价/卖价为空 | 市场闭市或缺乏流动性 | 在交易时段查询 |
Scripts de Ejemplo
示例脚本
Ver ./scripts/:
bash
undefined查看 ./scripts/:
bash
undefinedAutenticación y token (opcional, los scripts hacen login automático)
认证和token(可选,脚本会自动登录)
export PRIMARY_USER="tu_usuario"
export PRIMARY_PASSWORD="tu_password"
export PRIMARY_ACCOUNT="TU_CUENTA"
export PRIMARY_USER="你的用户名"
export PRIMARY_PASSWORD="你的密码"
export PRIMARY_ACCOUNT="你的账户"
Listar segmentos e instrumentos
列出交易板块和工具
python scripts/instruments.py --user $PRIMARY_USER --password $PRIMARY_PASSWORD
python scripts/instruments.py --user $PRIMARY_USER --password $PRIMARY_PASSWORD
Market data de un futuro
获取期货市场数据
python scripts/market_data.py --user $PRIMARY_USER --password $PRIMARY_PASSWORD
--symbol DLR/JUN26 --entries BI,OF,LA
--symbol DLR/JUN26 --entries BI,OF,LA
python scripts/market_data.py --user $PRIMARY_USER --password $PRIMARY_PASSWORD
--symbol DLR/JUN26 --entries BI,OF,LA
--symbol DLR/JUN26 --entries BI,OF,LA
Ver reporte de cuenta
查看账户报告
python scripts/check_account.py --user $PRIMARY_USER --password $PRIMARY_PASSWORD
--account TU_CUENTA
--account TU_CUENTA
python scripts/check_account.py --user $PRIMARY_USER --password $PRIMARY_PASSWORD
--account 你的账户
--account 你的账户
Ver posiciones
查看头寸
python scripts/check_positions.py --user $PRIMARY_USER --password $PRIMARY_PASSWORD
--account TU_CUENTA
--account TU_CUENTA
python scripts/check_positions.py --user $PRIMARY_USER --password $PRIMARY_PASSWORD
--account 你的账户
--account 你的账户
Enviar orden (¡cuidado! orden real en live)
提交订单(注意!生产环境为真实订单)
python scripts/place_order.py --user $PRIMARY_USER --password $PRIMARY_PASSWORD
--symbol DLR/JUN26 --side BUY --qty 1 --type LIMIT --price 1450 --account TU_CUENTA
--symbol DLR/JUN26 --side BUY --qty 1 --type LIMIT --price 1450 --account TU_CUENTA
python scripts/place_order.py --user $PRIMARY_USER --password $PRIMARY_PASSWORD
--symbol DLR/JUN26 --side BUY --qty 1 --type LIMIT --price 1450 --account 你的账户
--symbol DLR/JUN26 --side BUY --qty 1 --type LIMIT --price 1450 --account 你的账户
WebSocket: Market Data en tiempo real
WebSocket: 实时市场数据
python scripts/websocket_md.py --user $PRIMARY_USER --password $PRIMARY_PASSWORD
--symbols DLR/JUN26 --entries BI,OF,LA --depth 3
--symbols DLR/JUN26 --entries BI,OF,LA --depth 3
python scripts/websocket_md.py --user $PRIMARY_USER --password $PRIMARY_PASSWORD
--symbols DLR/JUN26 --entries BI,OF,LA --depth 3
--symbols DLR/JUN26 --entries BI,OF,LA --depth 3
WebSocket: Execution Reports
WebSocket: 执行报告
python scripts/websocket_orders.py --user $PRIMARY_USER --password $PRIMARY_PASSWORD
--account TU_CUENTA
--account TU_CUENTA
python scripts/websocket_orders.py --user $PRIMARY_USER --password $PRIMARY_PASSWORD
--account 你的账户
--account 你的账户
WebSocket: Enviar orden (requiere suscripción a execution reports aparte)
WebSocket: 提交订单(需单独订阅执行报告)
python scripts/websocket_send_order.py --user $PRIMARY_USER --password $PRIMARY_PASSWORD
--symbol DLR/JUN26 --side BUY --qty 1 --type LIMIT --price 1450 --account TU_CUENTA
--symbol DLR/JUN26 --side BUY --qty 1 --type LIMIT --price 1450 --account TU_CUENTA
python scripts/websocket_send_order.py --user $PRIMARY_USER --password $PRIMARY_PASSWORD
--symbol DLR/JUN26 --side BUY --qty 1 --type LIMIT --price 1450 --account 你的账户
--symbol DLR/JUN26 --side BUY --qty 1 --type LIMIT --price 1450 --account 你的账户
WebSocket: Cancelar orden
WebSocket: 取消订单
python scripts/websocket_send_order.py --user $PRIMARY_USER --password $PRIMARY_PASSWORD
--cancel --clordid user12345... --proprietary PBCP
--cancel --clordid user12345... --proprietary PBCP
---python scripts/websocket_send_order.py --user $PRIMARY_USER --password $PRIMARY_PASSWORD
--cancel --clordid user12345... --proprietary PBCP
--cancel --clordid user12345... --proprietary PBCP
---Glosario de Campos
字段术语表
| Campo | Descripción |
|---|---|
| Client Order ID — ID del request al mercado |
| Order ID — ID de la orden en el mercado |
| Execution ID — ID de una ejecución particular |
| Usuario FIX que envió la orden ( |
| ID de orden enviada por WebSocket (solo en 1er report) |
| Precio promedio operado |
| Cantidad acumulada operada |
| Cantidad remanente |
| Último precio operado |
| Última cantidad operada |
| Fecha y hora de la transacción |
| Incremento mínimo de cantidad |
| Incremento mínimo de precio (tick price) |
| Multiplicador del contrato |
| Fecha de vencimiento |
| Factor para precio unitario |
| Límite mínimo de precio |
| Límite máximo de precio |
| 字段 | 描述 |
|---|---|
| 客户订单ID — 发送至市场的请求ID |
| 订单ID — 市场中的订单ID |
| 执行ID — 单次成交的ID |
| 发送订单的FIX用户( |
| WebSocket提交的订单ID(仅在首次报告中出现) |
| 平均成交价 |
| 累计成交量 |
| 剩余未成交量 |
| 最新成交价 |
| 最新成交数量 |
| 交易日期和时间 |
| 最小数量增量 |
| 最小价格增量(报价单位) |
| 合约乘数 |
| 到期日 |
| 单位价格转换因子 |
| 最低价格限制 |
| 最高价格限制 |