Las solicitudes de API relacionadas con Block RFQ requieren un alcance diferente al de las operaciones en bloque. Esto se hizo porque las operaciones en bloque pueden tener un «opcionalbloquear la aprobación de la operación» donde una conexión autenticada diferente tiene que aprobar cualquier operación en bloque realizada con una clave de API con esta función opcional. Como Block RFQ no es una plataforma de terceros, esto no es necesario y los largos tiempos de aprobación pueden provocar una selección adversa, especialmente en un mercado anónimo
Para escuchar nuevas RFQ de bloque o para recuperar todas las RFQ de bloque abiertas, únicamente block_rfq:read es necesario. Para crear también solicitudes de oferta o responder a solicitudes de oferta, block_rfq_id:read_write es necesario. Estos ámbitos se pueden añadir a claves nuevas o claves existentes.
Con el private/create_block_rfq call the taker inicia una solicitud de presupuesto en bloque especificando los instrumentos e introduciendo los importes en la divisa base (en el caso de futuros inversos en la divisa cotizada). El tomador también debe introducir la dirección de cada una de las piernas para especificar la estructura. Al no especificar la variable de creadores, todos los creadores son seleccionados automáticamente.
{
"method": "private/create_block_rfq",
"params": {
"legs": [
{
"instrument_name": "BTC-14FEB25-100000-C",
"amount": 100,
"direction": "buy"
},
{
"instrument_name": "BTC-14FEB25-110000-C",
"amount": 100,
"direction": "sell"
}
]
},
"jsonrpc": "2.0",
"id": 1
}
La respuesta de creación siempre contendrá listas de ofertas y solicitudes vacías, ya que solo se rellenarán después de que los creadores respondan. Si aparece una lista vacía junto a la variable makers, significa que todos los creadores de la plataforma han sido seleccionados. La estructura de las piernas se divide en proporciones y una cantidad total, tal y como se describe en el «Unidad de precios» sección de Solicitud de presupuesto de Deribit Block artículo. Deribit también devuelve combo_id que es el nombre del instrumento teórico de la cartera de órdenes de la estrategia. En el caso de las estrategias personalizadas, este campo está vacío. El miembro también obtiene información sobre las marcas de tiempo block_rfq_id que es el identificador único de la solicitud de presupuesto en bloque.
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"state": "created",
"bids": [],
"asks": [],
"role": "taker",
"amount": 100,
"legs": [
{
"direction": "buy",
"instrument_name": "BTC-14FEB25-100000-C",
"ratio": 1
},
{
"direction": "sell",
"instrument_name": "BTC-14FEB25-110000-C",
"ratio": 1
}
],
"expiration_timestamp": 1738250740801,
"block_rfq_id": 1,
"combo_id": "BTC-CS-14FEB25-100000_110000",
"makers": [],
"min_trade_amount": 0.1,
"creation_timestamp": 1738250440801
}
}
A continuación se muestra un ejemplo de cómo crear una estructura de solicitud de presupuesto por bloques que contenga un tramo de seto.
{
"method": "private/create_block_rfq",
"params": {
"legs": [
{
"instrument_name": "BTC-14FEB25-100000-C",
"amount": 100,
"direction": "buy"
},
{
"instrument_name": "BTC-14FEB25-110000-C",
"amount": 100,
"direction": "sell"
}
],
"hedge": {
"instrument_name": "BTC-PERPETUAL",
"amount": 50000,
"direction": "sell",
"price": 100000
}
},
"jsonrpc": "2.0",
"id": 1
}
Al crear una solicitud de presupuesto en bloque mediante el private/create_block_rfq método, tomadores puede utilizar el preasignación función para dividir la cantidad total entre sus cuenta principal, subcuentas o clientes vinculados a corredores. Cada asignación debe especificar: user_id (para asignación directa) o client_info objeto (para la asignación de corredores), y amount.
Importante
Esta funcionalidad solo está disponible al crear una solicitud de presupuesto en bloque desde la cuenta principal.
Ejemplo para user_id
{
"method": "private/create_block_rfq",
"params": {
"legs": [
{
"instrument_name": "BTC-25JUL25",
"amount": 200000,
"direction": "buy"
}
],
"trade_allocations": [
{
"user_id": 1354,
"amount": 100000
},
{
"user_id": 1464,
"amount": 100000
}
],
"label": "test",
"makers": [],
"disclosed": true
},
"jsonrpc": "2.0",
"id": 6
}
Ejemplo para client_info y user_id
{
"method": "private/create_block_rfq",
"params": {
"legs": [
{
"instrument_name": "BTC-PERPETUAL",
"amount": 200000,
"direction": "buy"
}
],
"trade_allocations": [
{
"client_info" : {
"client_id" : 1,
"client_link_id" : 1
},
"amount": 100000
},
{
"user_id" : 7,
"amount" : 100000
}
],
"label": "test",
"makers": [],
"disclosed": true
},
"jsonrpc": "2.0",
"id": 6
}
Requisitos clave:
-
Los tamaños asignados deben alinearse con el importe mínimo de negociación de los instrumentos subyacentes (como ocurre con las cotizaciones)
-
El suma de todas las asignaciones debe ser igual al tamaño total de la solicitud de presupuesto
-
Las asignaciones pueden estar por debajo del tamaño mínimo de bloque, siempre y cuando el total cumpla con el requisito
-
Las asignaciones son inmutables una vez creada la solicitud de presupuesto
Verificaciones de márgenes
-
El margen está validado por cuenta asignada en el momento de la creación de la solicitud de presupuesto.
-
El el creador no necesita fondos si no se está asignando a sí mismo.
-
En caso de una verificación fallida, se informará al corredor qué asignación falló.
Ciclo de vida y visibilidad de las solicitudes de presupuesto
-
En público, el el creador sigue marcado como tomador.
-
Las asignaciones solo son visibles para el creador y los destinatarios individuales (cada uno ve solo lo suyo).
-
Usuarios asignados en la solicitud de presupuesto no puedo citar en él para evitar la autonegociación.
-
Las RFQ respetan la Configuración SMP (prevención de coincidencias automáticas): no se permite cotizar si algún usuario asignado tiene la misma identidad de solicitud de presupuesto que el creador.
Comportamiento comercial y asignación posterior a la negociación
-
Solo el creador ve el desglose completo de las asignaciones.
-
Usuarios asignados:
-
Ver solo su parte del comercio
-
Puede ver el tamaño total negociado (ya que la solicitud de presupuesto es pública)
-
-
Las tarifas las pagan los usuarios asignados, pero el la tarifa se basa en el creador de la solicitud de presupuesto, no cuentas individuales.
-
Cuentas asignadas pueden ver sus respectivas operaciones en su registro de transacciones, al igual que con las operaciones normales. Esto incluye los detalles de las comisiones, las marcas de tiempo y los metadatos de las operaciones
Visibilidad comercial en API y suscripciones
Las operaciones asignadas aparecerán en:
-
user.trades. * y otras suscripciones relacionadas
-
privado/get_user_trades_by_currency y métodos relacionados
El método de creación de Block RFQ private/create_block_rfq toma un parámetro opcional disclosed. De forma predeterminada, está configurado en False pero es necesario seleccionar al menos a 5 creadores para obtener una solicitud de presupuesto en bloque anónima válida. En las solicitudes de oferta no anónimas, pasamos el alias del destinatario a un parámetro llamado taker y añada los alias del creador al bid, ask y trade matrices. Esta información se almacena históricamente. Los creadores no pueden ver los alias de otros fabricantes en estas matrices. A continuación se muestra un ejemplo de creación de una solicitud de presupuesto en bloque no anónima
{
"method": "private/create_block_rfq",
"params": {
"legs": [
{
"instrument_name": "BTC-14FEB25-100000-C",
"amount": 100,
"direction": "buy"
},
{
"instrument_name": "BTC-14FEB25-110000-C",
"amount": 100,
"direction": "sell"
}
],
"disclosed": true
},
"jsonrpc": "2.0",
"id": 1
}
El canal de notificación de los participantes proporciona actualizaciones sobre el estado de la solicitud de presupuesto en bloque creada por el miembro. El canal envía una actualización cada vez que cambia un campo. Por lo general, esto implica que el estado o las nuevas cotizaciones se presenten como ofertas o solicitudes. A continuación se puede ver un ejemplo de respuesta
channel: block_rfq.taker.{currency}
{
"jsonrpc": "2.0",
"method": "subscription",
"params": {
"channel": "block_rfq.taker.btc",
"data": {
"jsonrpc": "2.0",
"id": 1,
"result": {
"continuation": null,
"block_rfqs": [
{
"timestamp": 1738252420844,
"state": "filled",
"bids": [
{
"price": 0.03,
"amount": 100,
"last_update_timestamp": 1738252318903,
"execution_instruction": "all_or_none",
"makers": ["MAKER1"]
}
],
"asks": [],
"role": "taker",
"mark_price": 0.005396142,
"amount": 100,
"trades": [
{
"price": 0.01,
"direction": "buy",
"amount": 100,
"maker": "MAKER1"
}
],
"legs": [
{
"price": 0.03,
"direction": "buy",
"instrument_name": "BTC-14FEB25-100000-C",
"ratio": 1
},
{
"price": 0.02,
"direction": "sell",
"instrument_name": "BTC-14FEB25-110000-C",
"ratio": 1
}
],
"expiration_timestamp": 1738252585438,
"block_rfq_id": 1,
"combo_id": "BTC-CS-14FEB25-110000_100000",
"disclosed": false,
"makers": [],
"min_trade_amount": 0.1,
"creation_timestamp": 1738252285438
}
]
}
}
}
}
Los canales de creación muestran información sobre todas las nuevas solicitudes de oferta de bloques en las que un miembro esté etiquetado como creador y cualquier actualización del estado. A continuación se muestra un ejemplo de cómo etiquetan a un creador en una solicitud
channel: block_rfq.maker.{currency}
{
"jsonrpc": "2.0",
"method": "subscription",
"params": {
"channel": "block_rfq.maker.btc",
"data": {
"state": "open",
"role": "maker",
"combo_id": "BTC-CS-14FEB25-100000_110000",
"legs": [
{
"direction": "buy",
"instrument_name": "BTC-14MAR25-80000-C",
"ratio": 1
},
{
"direction": "sell",
"instrument_name": "BTC-14MAR25-80000-P",
"ratio": 1
}
],
"amount": 100,
"min_trade_amount": 0.1,
"expiration_timestamp": 1740742981931,
"taker": "BenTrades",
"creation_timestamp": 1740742681931,
"block_rfq_id": 1,
"taker_rating": 5-20,
"disclosed": true
}
}
}
A continuación se muestra un ejemplo de cómo se está llenando la solicitud de presupuesto anterior. El comercio se originó a partir de any_part_of citas con dos creadores. En este ejemplo, ambos creadores son subcuentas de la misma cuenta principal. Se ha abierto la suscripción para la subcuenta que tiene el campo «creador» en la cinta comercial. El creador recibió el nombre conveniente¿Tú'. Esto significa que los fabricantes también recibirán información comercial de esta suscripción para otros fabricantes. Solo recibirán la información visible públicamente y los campos privados, como el nombre del creador, solo estarán visibles en su suscripción.
{
"jsonrpc": "2.0",
"method": "subscription",
"params": {
"channel": "block_rfq.maker.btc",
"data": {
"timestamp": 1740742710983,
"state": "filled",
"role": "maker",
"combo_id": "BTC-CS-14FEB25-100000_110000",
"legs": [
{
"price": 0.03,
"direction": "buy",
"instrument_name": "BTC-14FEB25-100000-C",
"ratio": 1
},
{
"price": 0.02,
"direction": "sell",
"instrument_name": "BTC-14FEB25-110000-C",
"ratio": 1
}
],
"amount": 100,
"min_trade_amount": 0.1,
"mark_price": 0.005396142,
"trades": [
{
"price": 0.01,
"direction": "buy",
"amount": 50
},
{
"price": 0.01,
"maker": "YOU",
"direction": "buy",
"amount": 50
}
],
"expiration_timestamp": 1740742981931,
"taker": "BenTrades",
"creation_timestamp": 1740742681931,
"block_rfq_id": 1,
"disclosed": true
}
}
}
Los interesados también tienen la opción de cancelar una solicitud de presupuesto en bloque antes de que caduque utilizando. Esto se puede hacer aprobando block_rfq_id a la private/cancel_block_rfq método.
{
"method" : "private/cancel_block_rfq",
"params" : {
"block_rfq_id" : 1
}
}
Los creadores responden a las RFQ de Block colocando comillas usando private/add_block_rfq_quote método. Los creadores especifican la solicitud de presupuesto del bloque introduciendo el block_rfq_id y, a continuación, repetir los tramos de la estructura de ratios con un precio al lado de cada tramo. Luego, los fabricantes especifican si esta es su compraoferta) o precio de venta (preguntar). También introducen un amount y un execution_instruction que puede ser un all_or_none pedido o un any_part_of pedido. En el caso de all_or_none la cantidad siempre debe coincidir con la cantidad solicitada por el tomador. En el caso de any_part_of los formadores de pedidos pueden añadir varios pedidos parciales.
{
"method": "private/add_block_rfq_quote",
"params": {
"label": "test",
"block_rfq_id": 1,
"direction": "sell",
"legs": [
{
"instrument_name": "BTC-14FEB25-100000-C",
"ratio": 1,
"direction": "buy",
"price": "0.03"
},
{
"instrument_name": "BTC-14FEB25-110000-C",
"ratio": 1,
"direction": "sell",
"price": "0.02"
}
],
"amount": 100,
"execution_instruction": "all_or_none"
},
"jsonrpc": "2.0",
"id": 1
}
En la respuesta a la cotización, los creadores reciben información sobre el estado de su cotización. Esto incluye el quote_state y el único block_rfq_quote_id. Deribit también calcula el precio agregado que se ofreció para la dirección. Si la RFQ del bloque ya se ha negociado, los fabricantes también pueden ver el importe de esta cotización que se utilizó para
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"label": "test",
"price": 0.01,
"direction": "sell",
"amount": 100,
"legs": [
{
"price": 0.03,
"direction": "buy",
"instrument_name": "BTC-14FEB25-100000-C",
"ratio": 1
},
{
"price": 0.02,
"direction": "sell",
"instrument_name": "BTC-14FEB25-110000-C",
"ratio": 1
}
],
"block_rfq_id": 1,
"replaced": false,
"filled_amount": 0,
"last_update_timestamp": 1738251666989,
"execution_instruction": "all_or_none",
"block_rfq_quote_id": 1,
"creation_timestamp": 1738251666989,
"quote_state": "open"
}
}
Al enviar una cotización a una solicitud de presupuesto en bloque, fabricantes puede incluir un expires_at marca de tiempo para indicar durante cuánto tiempo su cotización sigue siendo válida.
Comportamiento del creador
Al llamar al método private/add_block_rfq_quote, un fabricante puede incluir el expires_at parámetro (en milisegundos desde la época) para especificar cuándo debe caducar la cotización.
Ejemplo de solicitud:
{
«método»: «privado/add_block_rfq_quote»,
«parámetros»: {
«etiqueta»: «prueba1",
«block_rfq_id»: 194,
«cantidad»: 100000,
«dirección»: «vender»,
«piernas»: [
{
«nombre_instrumento»: «BTC-25APR25",
«precio»: 86000,
«proporción»: «1",
«dirección»: «comprar»
}
],
«instrucción_ejecución»: «cualquier parte de»,
«cadue_at»: 1745312540321
},
«jsonrpc»: «2.0",
«id»: 1
Si la cotización no se acepta antes expires_at, se excluirá automáticamente de su consideración y ejecución.
Visibilidad del tomador
Los participantes recuperan las RFQ abiertas mediante private/get_block_rfqs será ver el expires_at campo en cada cotización disponible.
Ejemplo de respuesta del tomador:
«pregunta»: [
{
«cantidad»: 200000,
«precio»: 86000,
«fabricantes»: [
«test_responder»
],
«last_update_timestamp»: 1745312295333,
«cadue_at»: 1745312540321,
«instrucción_ejecución»: «cualquier parte de»
}
Cotizaciones agregadas
Si un comprador ve un cotización agregada (p. ej., una sola cita compuesta por las respuestas de varios creadores con execution_instruction:»any_part_of«):
-
El sistema mostrará solo el más cercano (más temprano)
expires_atentre las comillas ejecutables. -
Las cotizaciones con marcas de fecha de caducidad posteriores son ignorado en este contexto, ya que la caducidad más temprana es el factor que limita la ejecución.
Notas clave
-
expires_ates opcional, pero se recomienda para estrategias de precios urgentes. -
Una vez enviada, la fecha de caducidad de una cotización no se puede modificar.
-
Las cotizaciones caducadas se excluyen automáticamente de la comparación y la visualización.
-
El vencimiento se aplica por cotización, no a toda la solicitud de presupuesto.
Proporciona notificaciones sobre las cotizaciones enviadas, editadas o canceladas. Este método solo está disponible para los creadores y solo muestra sus cotizaciones.
channel: block_rfq.maker.quotes.any
{
"jsonrpc": "2.0",
"method": "subscription",
"params": {
"channel": "block_rfq.maker.quotes.any",
"data": [
{
"label": "test",
"price": 0.01,
"direction": "sell",
"amount": 100,
"legs": [
{
"price": 0.03,
"direction": "buy",
"instrument_name": "BTC-14FEB25-100000-C",
"ratio": 1
},
{
"price": 0.02,
"direction": "sell",
"instrument_name": "BTC-14FEB25-110000-C",
"ratio": 1
}
],
"block_rfq_id": 1,
"replaced": false,
"filled_amount": 0,
"last_update_timestamp": 1738251666989,
"execution_instruction": "all_or_none",
"block_rfq_quote_id": 1,
"creation_timestamp": 1738251666989,
"quote_state": "open"
}
]
}
}
Para operar con cotizaciones activas, los compradores pueden enviar una orden cruzada utilizando private/accept_block_rfq método. En este orden, especifican la dirección y el precio por el que están dispuestos a operar. Si el precio de su pedido es al menos tan bueno como el precio ofrecido por un fabricante, la operación se realiza al mejor precio.
{
"method": "private/accept_block_rfq",
"params": {
"block_rfq_id": 1,
"legs": [
{
"instrument_name": "BTC-14FEB25-100000-C",
"ratio": 1,
"direction": "buy"
},
{
"instrument_name": "BTC-14FEB25-110000-C",
"ratio": 1,
"direction": "sell"
}
],
"price": 0.01,
"direction": "buy",
"amount": 100
},
"jsonrpc": "2.0",
"id": 1
}
Los participantes pueden enviar activar pedidos directamente dentro del flujo de solicitudes de presupuesto en bloque especificando el precio al que están dispuestos a operar.
El private/accept_block_rfq el método es presentado por tomador e incluye un time_in_force parámetro que determina cómo se comporta el pedido:
-
fill_or_kill(predeterminado): El pedido debe completarse de forma inmediata y completa; de lo contrario, fallará. -
good_til_cancelled: El pedido se almacena como desencadenante y permanece activo hasta que coincida o se cancele.
Comportamiento de coincidencia de pedidos
-
Partido inmediato: Si la liquidez disponible del fabricante alcanza o mejora el precio del comprador, la operación se ejecuta de inmediato.
-
Modo de activación: De lo contrario, el pedido se convierte en desencadenante, esperando pasivamente hasta que aparezca una cotización de fabricante adecuada.
-
Un pedido activo por lado: Los compradores solo pueden tener una orden de activación activa por dirección (comprar o vender). El envío de uno nuevo reemplaza al anterior.
Ejemplo: aceptar una solicitud de presupuesto con un precio límite
{
«método»: «private/accept_block_rfq»,
«parámetros»: {
«block_rfq_id»: 129910,
«time_in_force»: «bueno_til_cancelado»,
«piernas»: [
{
«nombre_instrumento»: «BTC-29MAY25-100000-C»,
«direction»: «comprar»,
«ratio»: «1"
},
{
«nombre_instrumento»: «BTC-29MAY25-101000-C»,
«dirección»: «vender»,
«proporción»: «1"
}
],
«precio»: 0.01,
«dirección»: «vender»,
«cantidad»: 12,5
},
«jsonrpc»: «2.0",
«identificación»: 2
Si el tomador usa good_til_cancelled y no hay ninguna cotización coincidente disponible en el momento del envío, el sistema devolverá un trade_trigger objeto con estado: untriggered, lo que indica que el pedido está a la espera de una coincidencia.
{
"jsonrpc": "2.0",
"id": 2,
"result": {
"trade_trigger": {
"state": "untriggered",
"price": 0.01,
"direction": "sell"
}
}
}
Solicitud de presupuesto para cancelar un pedido de activación en bloque
Si un solicitante ha presentado un orden de activación usando time_in_force: good_til_cancelled, y el pedido aún está sin activar, se puede cancelar en cualquier momento mediante el private/cancel_block_rfq_trigger método.
Esto es útil cuando el comprador ya no desea esperar a que llegue la liquidez correspondiente o quiere actualizar sus precios.
Importante
Cancelación de un disparador no cierra la solicitud de presupuesto del bloque en sí.
Ejemplo de solicitud
{
«método»: «private/cancel_block_rfq_trigger»,
«parámetros»: {
«block_rfq_id»: 123
},
«jsonrpc»: «2.0",
«id»: 1
Ejemplo de respuesta
La respuesta devuelve el objeto Block RFQ completo, incluido un objeto actualizado trade_trigger campo que indica que el disparador se ha cancelado.
{
«jsonrpc»: «2.0",
«id»: 1,
«resultado»: {
«creation_timestamp»: 1730798381504,
«timestamp de caducidad»: 1730798481504,
«block_rfq_id»: 123,
«rol»: «tomador»,
«estado»: «abierto»,
«taker_rating»: «1-2",
«creadores»: ["maker1", «maker2"],
«cantidad»: 100,
«min_trade_amount»: 10,
«piernas»: [
{
«nombre_instrumento»: «BTC-8NOV24-70000-C»,
«proporción»: 1
},
{
«nombre_instrumento»: «BTC-8NOV24-72000-C»,
«proporción»: 1
}
],
«combo_id»: «BTC-CS-8NOV24-70000_72000",
«label»: «Solicitud de presupuesto de mi bloque»,
«app_name»: «Aplicación de ejemplo»,
«mark_price»: 0.025,
«divulgado»: falso,
«trade_trigger»: {
«estado»: «cancelado»,
«precio»: 0.01,
«dirección»: «comprar»,
«cancel_reason»: «Usuario cancelado»
}
}
Block RFQ son operaciones normales de Deribit Block y también se notifican como tales. La única diferencia es block_rfq_id campo que puede vincular varias operaciones en bloque (en caso de que la operación se haya ejecutado como parte del modelo multifabricante).
{
"jsonrpc": "2.0",
"id": 1,
"result": [
{
"id": "BLOCK-701428",
"timestamp": 1738252420847,
"trades": [
{
"timestamp": 1738252420846,
"state": "filled",
"iv": 56.37,
"price": 0.0088,
"direction": "buy",
"index_price": 105782.69,
"profit_loss": 0,
"instrument_name": "BTC-14FEB25-100000-C",
"trade_seq": 4,
"api": true,
"mark_price": 0.00824031,
"amount": 100,
"order_id": "32032913453",
"matching_id": null,
"tick_direction": 0,
"fee": 0.00225,
"mmp": false,
"block_trade_id": "BLOCK-701428",
"block_rfq_id": 1,
"combo_id": "BTC-CS-14FEB25-100000_110000",
"post_only": false,
"reduce_only": false,
"self_trade": false,
"underlying_price": 106384.42,
"contracts": 100,
"trade_id": "193437641",
"fee_currency": "BTC",
"order_type": "limit",
"risk_reducing": false,
"block_trade_leg_count": 2,
"liquidity": "T"
},
{
"timestamp": 1738252420846,
"state": "filled",
"iv": 60.3,
"price": 0.0027,
"direction": "sell",
"index_price": 105782.69,
"profit_loss": 0,
"instrument_name": "BTC-14FEB25-110000-C",
"trade_seq": 5,
"api": true,
"mark_price": 0.00284417,
"amount": 100,
"order_id": "32032913451",
"matching_id": null,
"tick_direction": 0,
"fee": 0,
"mmp": false,
"block_trade_id": "BLOCK-701428",
"block_rfq_id": 1,
"combo_id": "BTC-CS-14FEB25-100000_110000",
"post_only": false,
"reduce_only": false,
"self_trade": false,
"underlying_price": 106384.42,
"contracts": 100,
"trade_id": "193437640",
"fee_currency": "BTC",
"order_type": "limit",
"risk_reducing": false,
"block_trade_leg_count": 2,
"liquidity": "T"
}
]
}
]
}
Los creadores pueden editar sus citas usando private/edit_block_rfq_quote. Esto se puede hacer mediante una combinación de la etiqueta y el block_rfq_id o pasando el block_rfq_quote_id. En el siguiente ejemplo, el precio de cotización se actualiza mediante un block_rfq_id y un label.
{
"method" : "private/edit_block_rfq_quote",
"params" : {
"label" : "test",
"block_rfq_id" : 1,
"amount" : 100,
"direction" : "sell",
"legs" : [
{
"instrument_name": "BTC-14FEB25-100000-C",
"ratio": 1,
"direction": "buy",
"price": 0.04
},
{
"instrument_name": "BTC-14FEB25-110000-C",
"ratio": 1,
"direction": "sell",
"price": 0.02
}
],
"execution_instruction" : "all_or_none"
},
"jsonrpc" : "2.0",
"id" : 1
}
Los creadores pueden cancelar sus cotizaciones usando private/cancel_block_rfq_quote introduciendo una combinación de block_rfq_id y label o el block_rfq_quote_id.
{
"jsonrpc" : "2.0",
"id" : 1,
"method" : "private/cancel_block_rfq_quote",
"params" : {
"block_rfq_quote_id" : 1
}
}
Importante
El cancelar al desconectar La funcionalidad también se aplica a las cotizaciones de Block RFQ, lo que permite a los creadores cancelar automáticamente sus cotizaciones si se interrumpe la conexión.
Los creadores también pueden cancelar todas sus cotizaciones pendientes mediante una llamada de private/cancel_all_block_rfq_quotes. Esta llamada toma opcionalmente el parámetro block_rfq_id que cancela todas las cotizaciones de una solicitud de presupuesto de bloque específica o, si no se proporciona, cancela las cotizaciones de todas las solicitudes de presupuesto de bloque a las que ha respondido el creador.
{
"jsonrpc" : "2.0",
"id" : 24,
"method" : "private/cancel_all_block_rfq_quotes",
"params" : {
"block_rfq_id" : 1
}
}
Los miembros pueden recuperar información sobre las RFQ en bloque activas e históricas mediante el private/get_block_rfqs llamada cuando el número de RFQ está especificado por el count variable. Opcionalmente, las solicitudes de oferta en bloque se pueden filtrar por state y role. Para recuperar la información de un solo bloque, los miembros de RFQ pueden completar el block_rfq_id variable. Las solicitudes de oferta activas devuelven la misma respuesta que las solicitudes de oferta recién creadas, pero con información actualizada bids y asks. Las RFQ históricas registran la mejor oferta y demanda ofrecidas en el momento en que se cerró la RFQ en bloque y cualquier operación que se haya producido como resultado de la RFQ en bloque
{
"method" : "private/get_block_rfqs",
"params" : {
"block_rfq_id" : 1
},
"jsonrpc" : "2.0",
"id" : 2
}
Si la solicitud de presupuesto en bloque ya no está abierta, la respuesta se estructura de la siguiente manera. Para cerrar las solicitudes de presupuesto en bloque, también agregamos un parámetro adicional included_in_taker_rating para los usuarios, lo que determina si esta solicitud de presupuesto en bloque contará o no para su ratio de OTV.
{
"jsonrpc": "2.0",
"id": 2,
"result": {
"continuation": null,
"block_rfqs": [
{
"timestamp": 1738252420844,
"state": "filled",
"bids": [
{
"price": 0.01,
"amount": 100,
"last_update_timestamp": 1738252318903,
"execution_instruction": "all_or_none",
"makers": [
"ANONYMOUS"
]
}
],
"asks": [
{
"price": 0.02,
"amount": 100,
"last_update_timestamp": 1738252285527,
"execution_instruction": "all_or_none",
"makers": [
"ANONYMOUS"
]
}
],
"role": "taker",
"mark_price": 0.005396142,
"amount": 100,
"trades": [
{
"price": 0.01,
"direction": "buy",
"amount": 100,
"maker": "ANONYMOUS"
}
],
"legs": [
{
"price": 0.03,
"direction": "buy",
"instrument_name": "BTC-14FEB25-100000-C",
"ratio": 1
},
{
"price": 0.02,
"direction": "sell",
"instrument_name": "BTC-14FEB25-110000-C",
"ratio": 1
}
],
"expiration_timestamp": 1738252585438,
"block_rfq_id": 1,
"combo_id": "BTC-CS-14FEB25-100000_110000",
"disclosed": false,
"included_in_taker_rating": true,
"makers": [],
"min_trade_amount": 0.1,
"creation_timestamp": 1738252285438
}
]
}
}
Solo la información de cotización activa se puede recuperar mediante private/get_block_rfq_quotes. Las cotizaciones canceladas y las cotizaciones de las solicitudes de presupuesto de bloque cerrado no se almacenan. Además, las versiones anteriores de las cotizaciones editadas no se pueden recuperar. Las cotizaciones activas se pueden filtrar por block_rfq_id. Este parámetro es opcional y si se llama al método sin él, se devolverán todas las comillas activas. La información de una cotización específica también se puede recuperar mediante una combinación de block_rfq_id y label o block_rfq_quote_id.
{
"jsonrpc" : "2.0",
"id" : 1,
"method" : "private/get_block_rfq_quotes",
"params" : {
"block_rfq_id" : 1
}
}
{
"jsonrpc": "2.0",
"id": 1,
"result": [
{
"label": "test",
"price": 0.01,
"direction": "sell",
"amount": 100,
"legs": [
{
"price": 0.03,
"direction": "buy",
"instrument_name": "BTC-14FEB25-100000-C",
"ratio": 1
},
{
"price": 0.02,
"direction": "sell",
"instrument_name": "BTC-14FEB25-110000-C",
"ratio": 1
}
],
"block_rfq_id": 1,
"replaced": false,
"filled_amount": 0,
"last_update_timestamp": 1738254302855,
"execution_instruction": "all_or_none",
"block_rfq_quote_id": 1,
"creation_timestamp": 1738254302855,
"quote_state": "open"
}
]
}
Método público public/get_block_rfq_trades proporciona información sobre las operaciones que resultaron de las RFQ en bloque.
{
"method" : "public/get_block_rfq_trades",
"params" : {
"currency" : "BTC"
},
"jsonrpc" : "2.0",
"id" : 1
}
A continuación se muestra un ejemplo de respuesta de operaciones procedentes de este punto final.
{
"continuation": "1737538194561:4695",
"block_rfqs": [
{
"id": 1,
"timestamp": 1737726042985,
"direction": "buy",
"bid_price": 0.01,
"ask_price": 0.02,
"amount": 100,
"mark_price": 0.01,
"legs": [
{
"direction": "buy",
"instrument_name": "BTC-14FEB25-100000-C",
"ratio": 1
},
{
"direction": "sell",
"instrument_name": "BTC-14FEB25-110000-C",
"ratio": 1
}
],
"combo_id": “BTC-CS-14FEB25-100000_110000”,
"hedge": "undefined"
},
{
"id": 4951,
"timestamp": 1737724733876,
"direction": "sell",
"bid_price": -500,
"ask_price": null,
"amount": 100000,
"mark_price": -308.4,
"legs": [
{
"direction": "buy",
"instrument_name": "BTC-31JAN25",
"ratio": 1
},
{
"direction": "sell",
"instrument_name": "BTC-7FEB25",
"ratio": 1
}
],
"combo_id": null,
"hedge": "undefined"
}
]
}
Método private/get_block_rfq_makers se puede llamar para recuperar una lista de todos los fabricantes disponibles. No requiere parámetros.
{
"method" : "private/get_block_rfq_makers",
"params" : {
},
"jsonrpc" : "2.0",
"id" : 1
}
Para los miembros que desean fijar el precio de toda la estructura en lugar de fijar el precio de cada tramo por separado, ofrecemos un precio por tramo. private/get_leg_prices método. Este método utiliza una estructura de solicitud de presupuesto por bloques con importes (como si se presentara por primera vez) y un precio agregado, y devuelve las partes de la estructura de ratios y calcula los precios válidos para cada una de ellas, que pueden utilizarse para cotizar
Nota
Tenga en cuenta que esta llamada solo funciona para las estrategias convencionales y devuelve un error para las personalizadas.
{
"method": "private/get_leg_prices",
"params": {
"price": 0.01,
"legs": [
{
"instrument_name": "BTC-8NOV24-70000-C",
"amount": 100,
"direction": "buy"
},
{
"instrument_name": "BTC-8NOV24-72000-C",
"amount": 100,
"direction": "sell"
}
]
},
"jsonrpc": "2.0",
"id": 1
}
Se devuelve la estructura de ratios con un precio para cada tramo.
Nota
Tenga en cuenta que los precios devueltos serán válidos para el tamaño de las garrapatas de Block RFQ, no necesariamente para las tallas de la cartera de pedidos de Deribit en los instrumentos dados.
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"amount": 100,
"legs": [
{
"price": 0.0475,
"direction": "sell",
"instrument_name": "BTC-14FEB25-110000-C",
"ratio": 1
},
{
"price": 0.0575,
"direction": "buy",
"instrument_name": "BTC-14FEB25-100000-C",
"ratio": 1
}
]
}
}
Las operaciones de RFQ en bloque se ejecutan como operaciones en bloque y aparecen como tales en el historial de operaciones de Deribit, como public/get_last_trades_by_currency. Las operaciones en bloque que se ejecutaron como parte de una solicitud de presupuesto en bloque también tienen una block_rfq_id campo.
{
"jsonrpc": "2.0",
"id": 10,
"result": {
"trades": [
{
"timestamp": 1731580311926,
"price": 91314.5,
"direction": "buy",
"index_price": 91225.89,
"instrument_name": "BTC-PERPETUAL",
"amount": 18260,
"trade_seq": 114040640,
"mark_price": 91226,
"tick_direction": 1,
"contracts": 1826,
"trade_id": "192235370"
},
{
"timestamp": 1731580302276,
"iv": 106.47,
"price": 0.2,
"direction": "sell",
"index_price": 91227.09,
"instrument_name": "BTC-8NOV24-72000-C",
"combo_id": "BTC-CS-8NOV24-70000_72000",
"amount": 100,
"trade_seq": 231,
"mark_price": 0.21684268,
"tick_direction": 2,
"block_trade_id": "BLOCK-423",
"block_rfq_id": 1,
"contracts": 100,
"trade_id": "192235369",
"block_trade_leg_count": 2
},
{
"timestamp": 1731580302276,
"iv": 107.37,
"price": 0.3,
"direction": "buy",
"index_price": 91227.09,
"instrument_name": "BTC-8NOV24-70000-C",
"combo_id": "BTC-CS-8NOV24-70000_72000",
"amount": 100,
"trade_seq": 213,
"mark_price": 0.23542917,
"tick_direction": 0,
"block_trade_id": "BLOCK-423",
"block_rfq_id": 1,
"contracts": 100,
"trade_id": "192235368",
"block_trade_leg_count": 2
},
{
"timestamp": 1731580301165,
"price": 91314.5,
"direction": "buy",
"index_price": 91227.09,
"instrument_name": "BTC-PERPETUAL",
"amount": 18260,
"trade_seq": 114040639,
"mark_price": 91227.32,
"tick_direction": 0,
"contracts": 1826,
"trade_id": "192235367"
}
],
"has_more": true
},
}
Block RFQ admite Protección para creadores de mercado (MMP) con ajustes y activadores que se gestionan por separado de la negociación de la cartera de pedidos. El MMP se puede configurar mediante la interfaz web o mediante la API. Para configurar los ajustes de Block RFQ MMP y supervisar su estado, puedes utilizar los siguientes métodos de WebSocket, block_rfq bandera:
Cuando el block_rfq indicador está establecido en verdadero, los métodos se aplican a Block RFQ MMP. Cuando la marca se omite o se false, los métodos se aplican al libro de pedidos MMP.
Para configurar el Recuento de operaciones disparador para Block RFQ, utilice index_name=all en el private/set_mmp_config solicitud.
Ejemplo de solicitud:
{
"method": "private/set_mmp_config",
"params": {
"block_rfq": true,
"trade_count_limit": 2,
"frozen_time": 0,
"index_name": "all",
"interval": 5
},
"jsonrpc": "2.0",
"id": 1
}
Para recibir notificaciones de activación en tiempo real, suscríbase al user.mmp_trigger. {index_name} canal
-
Utilice
index_name=anypara recibir notificaciones de todos los tipos de activación en todos los pares de divisas. -
Utilice
index_name=allpara recibir notificaciones únicamente cuando se active el recuento de operaciones.