Introdução às ordens RPI

08/07 16:00:00 (UTC)Spot Trading Guide

Introdução às ordens RPI

Uma ordem Retail Price Improvement (RPI) é um tipo de ordem especializado, concebido exclusivamente para market makers aprovados. Corresponde apenas a ordens não algorítmicas colocadas através da aplicação ou da interface Web, proporcionando aos traders de retalho uma liquidez de mercado mais direcionada e melhores preços de execução. Ao mesmo tempo, protege as ordens de fornecimento de liquidez dos market makers de serem correspondidas com ordens algorítmicas, mantendo a equidade e a integridade globais do mercado.

 

I. O que é uma ordem RPI?

Uma ordem RPI é uma ordem limite especial que só pode ser submetida através da OpenAPI por market makers incluídos em whitelist. Apresenta quatro características principais:

•Correspondência direcionada: Corresponde exclusivamente a ordens não algorítmicas submetidas através da aplicação e da interface Web. Não corresponde a ordens de API (incluindo outras ordens RPI) nem a ordens de bot de grade.

• Prioridade mais baixa: Ao mesmo nível de preço, as ordens RPI só participam na correspondência depois de todas as ordens não-RPI terem sido executadas.

•Apenas Maker: São ordens limite passivas que fornecem sempre liquidez ao livro de ordens, nunca retirando liquidez.

•Diferença de visibilidade: Apresentada normalmente nas interfaces App e Web; invisível no livro de ordens público da API.

II. Quem pode submeter ordens RPI?

As ordens RPI só podem ser submetidas através da OpenAPI por market makers aprovados e incluídos em whitelist, estando estritamente restritas a pares de trading incluídos em whitelist.

• As submissões por market makers não incluídos em whitelist irão desencadear a mensagem: "As ordens RPI estão disponíveis apenas para market makers aprovados."

• As submissões em pares de trading não incluídos em whitelist irão desencadear a mensagem: "As ordens RPI só são suportadas para pares de trading específicos."

III. Como submeter ordens RPI?

As ordens RPI só podem ser submetidas através da OpenAPI, com suporte para os métodos REST e WebSocket. Ao colocar uma ordem, o tipo de ordem (type) deve ser definido como uma ordem limite (buy-limit ou sell-limit), e o campo time-in-force deve ser definido como rpi. Todos os outros parâmetros mantêm-se idênticos aos das ordens limite padrão.

Método REST

Os endpoints de colocação de ordens Spot, batch e Margem suportam todos as ordens RPI (o type deve ser buy-limit ou sell-limit). Basta adicionar o campo time-in-force (com o valor rpi) aos parâmetros de pedido existentes:

• Colocação de ordem Spot: POST /v1/order/orders/place

• Colocação de ordens em lote: POST /v1/order/batch-orders

• Colocação de ordem de Margem: POST /v1/order/auto/place

Exemplo de pedido (Ordem de compra RPI Spot):

{

"account-id": "12345",

"symbol": "btcusdt",

"type": "buy-limit",

"amount": "0.01",

"price": "50000",

"time-in-force": "rpi"

}

Método WebSocket

Os canais de trading via WebSocket também suportam a colocação de ordens RPI, utilizando os mesmos parâmetros que a API REST:

• Colocação de ordem Spot: Canal create-order

• Colocação de ordens em lote: Canal create-batchorder

• Colocação de ordem de Margem: Canal create-margin-order

Códigos de erro comuns

Código de erro

Descrição

order-rpi-maker-not-allowed

A conta atual não está na whitelist RPI e não está autorizada a submeter ordens RPI.

order-rpi-symbol-not-allowed

Este par de trading não está na whitelist RPI e não suporta a submissão de ordens RPI.

order-rpi-only-limit-maker

O type deve ser buy-limit ou sell-limit.

order-rpi-not-enabled

A funcionalidade RPI está atualmente desativada. Contacte a equipa de operações para confirmar o calendário de lançamento.

 

Que pares de trading suportam ordens RPI?

Chame o endpoint Get All Trading Pairs GET /v2/settings/common/symbol. Cada par de trading na resposta inclui um campo enable_rpi (booleano). Um valor true indica que o suporte RPI está ativado para o par de trading, enquanto um valor false indica que não é suportado.

Exemplo de resposta (apenas campos-chave):

{

"status": "ok",

"data": [

{ "sc": "btcusdt", "dn": "BTC/USDT", "enable_rpi": true },

{ "sc": "ethusdt", "dn": "ETH/USDT", "enable_rpi": false }

]

}

Se for submetido um pedido de ordem RPI para um par de trading que não suporta RPI, o sistema irá devolver o código de erro order-rpi-symbol-not-allowed.

IV. Âmbito de correspondência

Ordens que podem corresponder com ordens RPI

• Origem: interface App/Web

• Tipos: ordens de mercado, ordens limite, limite avançado-FOK, limite avançado-IOC, ordens take-profit/stop-loss, ordens de mercado/limite acionadas por ordens condicionais

• Especial: as ordens de copy trading/follow trading e as ordens iceberg são tratadas como ordens normais e podem ser correspondidas normalmente

Ordens não elegíveis para correspondência RPI

• Todas as ordens de API (incluindo outras ordens RPI e ordens condicionais acionadas através de canais de API)

• Ordens de bot de grade

 

V. Regras de trading

Item da regra

Descrição

Produtos suportados

Spot (incluindo Margem)

Mecanismo de ordem

Idêntico às ordens limite padrão (mesmos requisitos de margem, tamanhos mínimo/máximo de ordem e limites de preço)

Operações suportadas

Colocação de ordens em lote, modificação (preço/quantidade), cancelamento, cancelamento de ordens em lote e execução parcial de ordens

Incompatibilidade

Não pode ser combinada com ordens condicionais (TP/SL, ordem de ativação, etc.)

Limite de preço

No momento da colocação da ordem, as ordens não podem ultrapassar o preço das ordens não-RPI do lado oposto; caso contrário, serão canceladas

Exemplo de limite de preço

•Submeter uma ordem de compra RPI a um preço de 99 → Aceite.

•Submeter uma ordem de compra RPI a um preço de 102 → Rejeitada, pois ultrapassa a ordem não-RPI no Ask 2 (preço 102)

Nível

Preço

Quantidade

Ask 2

102

25

Ask 1

100 (RPI)

15

Bid 1

99 (RPI)

10

Bid 2

98

20

VI. Visibilidade da ordem

Módulo

Cenário

Descrição

Livro de ordens

APP / Web

As ordens RPI são apresentadas normalmente sem etiquetas especiais; ocultadas automaticamente quando os preços se cruzam. As ordens ocultas permanecem ativas no motor de correspondência e podem ser executadas quando as condições forem cumpridas.

OpenAPI

Não visível.

Histórico de ordens pessoal

APP / Web

Os market makers podem ver as ordens RPI e a etiqueta "RPI" nos registos de ordens atuais e históricos; as ordens dos utilizadores normais não apresentam etiquetas especiais.

OpenAPI

As ordens RPI são apresentadas normalmente e podem ser distinguidas das ordens normais.

Exemplos de ocultação por cruzamento de preço

Exemplo 1: Duas ordens RPI com preços cruzados (preço de compra ≥ preço de venda) → Ambos os lados são ocultados.

/

Preço

Quantidade

Visível

Ask 4

1.005

20

Sim

Ask 3

1.003 (RPI)

15

Sim

Ask 2

1.001 (RPI)

10

Não

Ask 1

999 (RPI)

5

Não

Bid 1

1.002 (RPI)

10

Não

Bid 2

1.000 (RPI)

20

Não

Bid 3

998

25

Sim

Bid 4

997 (RPI)

30

Sim

Exemplo 2: Ordem RPI cruza com uma ordem de API ou ordem de estratégia de grade → A ordem RPI é ocultada; a ordem da contraparte é apresentada normalmente

/

Preço

Quantidade

Visível

Ask 4

1.005

20

Sim

Ask 3

1.003 (RPI)

15

Sim

Ask 2

1.001 (RPI)

10

Não

Ask 1

999 (RPI)

5

Não

Bid 1

1.002 (Grid Bots)

10

Sim

Bid 2

1.000 (API)

20

Sim

Bid 3

998

25

Sim

Bid 4

997 (RPI)

30

Sim

VII. Estrutura de taxas

As ordens RPI estão sujeitas a uma taxa de maker RPI exclusiva, que substitui a taxa de maker original do market maker. As ordens não-RPI continuam a ser cobradas à taxa original.

A taxa exclusiva RPI pode ser consultada através do endpoint GET /v2/reference/transact-fee-rate. É adicionado um novo campo rpiFeeRate aos parâmetros de resposta, representando a taxa de maker RPI atualmente em vigor. Em alternativa, pode contactar diretamente a equipa de Operações de Market Maker da HTX.

 

VIII. Atualizações de endpoints de API e fluxos de dados

Para suportar o mecanismo de ordem RPI, os endpoints existentes foram ajustados de acordo com as seguintes regras.

Dados de mercado REST

Nome do endpoint

Pedido HTTP

Descrição das alterações

Profundidade do livro de ordens

GET /market/depth

Adiciona um parâmetro opcional includeRpi (Boolean, default false). Quando definido como true, os dados de profundidade não agregados (step0) incluirão ordens RPI. Os restantes níveis agregados não são afetados.

Profundidade total do livro de ordens

GET /market/fullMbp

Igual ao anterior, com a adição do parâmetro includeRpi

Transações de mercado recentes

GET /market/trade

A resposta de cada transação adiciona um campo isRpiTrade (Boolean); true indica que a execução foi gerada por uma ordem RPI.

Histórico de transações recentes

GET /market/history/trade

Igual ao anterior, com a adição do campo isRpiTrade

Últimas tickers para todos os pares de trading

GET /market/tickers

Sem alterações estruturais; as execuções RPI são incluídas nas métricas normalmente.

Detalhes da ticker fundida

GET /market/detail/merged

Sem alterações estruturais; as execuções RPI são incluídas nas métricas normalmente.

Detalhes de mercado de 24 horas

GET /market/detail

Sem alterações estruturais; as execuções RPI são incluídas nas métricas normalmente.

Dados de velas (K-Line)

GET /market/history/kline

Sem alterações estruturais; as execuções RPI são incluídas nas métricas normalmente.

Fluxo de dados de mercado WebSocket

Canal

Inclui ordens RPI

Descrição

market.$symbol.bbo

Não

Dados tick-by-tick de BBO (Best Bid/Offer); as ordens RPI são excluídas dos cálculos.

market.$symbol.depth.$type

Não

Cotações de profundidade de mercado; as ordens RPI pendentes não são incluídas na transmissão

market.$symbol.fullDepth.$type

Sim (novo)

Adiciona um novo canal de transmissão para agregar as ordens RPI pendentes. O protocolo é consistente com o canal de profundidade, permitindo que os market makers subscrevam de forma independente dados de profundidade completos, incluindo RPI.

market.$symbol.mbp.$levels

Não

Profundidade MBP incremental; as ordens RPI não são incluídas na transmissão.

market.$symbol.mbp.refresh.$levels

Não

Snapshot MBP completo; as ordens RPI não são incluídas na transmissão.

Endpoints de colocação e consulta de ordens (REST)

Nome do endpoint

Pedido HTTP

Descrição das alterações

Colocar ordens spot

POST /v1/order/orders/place

Adiciona o campo time-in-force (valor: rpi).

Colocar ordens em lote

POST /v1/order/batch-orders

Adiciona o campo time-in-force (valor: rpi).

Colocar ordem de margem

POST /v1/order/auto/place

Adiciona o campo time-in-force (valor: rpi).

Consultar ordens abertas atuais

GET /v1/order/openOrders

É adicionado um novo campo time-in-force à resposta (o valor rpi indica uma ordem RPI).

Consultar detalhes da ordem

GET /v1/order/orders/{order-id}

É adicionado um novo campo time-in-force à resposta (o valor rpi indica uma ordem RPI).

É adicionado um novo valor de enumeração rpi_cancel para canceled-source, indicando que a ordem foi cancelada pelo sistema devido a cruzamento de preço com uma ordem não-RPI.

Consultar por clientOrderId

GET /v1/order/orders/getClientOrder

É adicionado um novo campo time-in-force à resposta (o valor rpi indica uma ordem RPI).

É adicionado um novo valor de enumeração rpi_cancel para canceled-source, indicando que a ordem foi cancelada pelo sistema devido a cruzamento de preço com uma ordem não-RPI.

Detalhes da transação

GET /v1/order/orders/{order-id}/matchresults

É adicionado um novo campo time-in-force à resposta (o valor rpi indica uma ordem RPI).

É adicionado um novo valor de enumeração rpi_cancel para canceled-source, indicando que a ordem foi cancelada pelo sistema devido a cruzamento de preço com uma ordem não-RPI.

Consultar histórico de ordens

GET /v1/order/orders

É adicionado um novo campo time-in-force à resposta (o valor rpi indica uma ordem RPI).

É adicionado um novo valor de enumeração rpi_cancel para canceled-source, indicando que a ordem foi cancelada pelo sistema devido a cruzamento de preço com uma ordem não-RPI.

Histórico de ordens das últimas 48 horas

GET /v1/order/history

É adicionado um novo campo time-in-force à resposta (o valor rpi indica uma ordem RPI).

É adicionado um novo valor de enumeração rpi_cancel para canceled-source, indicando que a ordem foi cancelada pelo sistema devido a cruzamento de preço com uma ordem não-RPI.

Transações atuais e históricas

GET /v1/order/matchresults

É adicionado um novo campo time-in-force à resposta (o valor rpi indica uma ordem RPI).

Transmissão de ordens (WebSocket)

Canal

Descrição

Descrição das alterações

orders#${symbol}

Transmissão de atualizações de ordens

É adicionado um novo campo time-in-force (valor: rpi), permitindo a diferenciação em tempo real entre ordens RPI e ordens normais.

trade.clearing#${symbol}#${mode}

Atualizações de transações pós-liquidação e cancelamento de ordens

É adicionado um novo campo time-in-force (valor: rpi); é adicionado um novo valor de enumeração rpi_cancel para canceled-source, permitindo a identificação em tempo real de cancelamentos acionados por cruzamento de preço.

Documentação sobre ordens RPI concluída.