Estratégias

As rotas de estratégias da API: criar, controlar o ciclo de vida, enviar ordens manuais e consultar estado, trades e ordens.

As rotas de estratégias criam, controlam e consultam estratégias. Todas ficam sob /api/strategy, são autenticadas por token ou chave de API, e respeitam o cabeçalho X-Desk para escolher a mesa. As permissões seguem a matriz de acesso.

Tipos

Tipos de estratégia

O tipo entra na própria rota de criação, POST /api/strategy/{tipo}. Os valores aceitos, e o que cada um significa, estão no Catálogo de Estratégias:

RotaEstratégia
DiDiff2 · DiDiff3 · DiDiff4Spread Pts · Fly Pts · Slide Pts
DiFra2 · DiFra3 · DiFra4FRA · Fly FRA · Slide FRA
DiFra3EdsDiff · DiFra4EdsDiffFly FRA EDS Pts · Slide FRA EDS Pts
SpreadSpread genérico
SingleOrderSingle Order
CrossOrderDireto/Cross

Criar

Criar uma estratégia

Autenticação: token ou chave de API. Acesso: Editar estratégias (Admin, Trader).

POST/api/strategy/{tipo}Cria a estratégia do tipo indicado

Todo corpo compartilha um envelope comum, e acrescenta os campos do tipo:

CampoTipoDescrição
idintIdentificador da estratégia. Opcional: informe um, de 1 a 65535, ou deixe em branco (ou 0), e o AlgoServer gera um e o devolve.
accountuintConta. Usa o padrão da sessão se omitido.
validateFatFingerboolLiga a proteção fat finger. Padrão true.
memostringRótulo livre da operação.
deskIdstringMesa da estratégia.
curl -X POST https://<host>/api/strategy/SingleOrder \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"symbol": "DI1F27", "side": "BUY", "price": 13.505, "quantity": 100}'

Corpo por tipo

Campos de cada tipo

Single Order (SingleOrder):

CampoTipoDescrição
symbolstringInstrumento negociado.
sideenumBUY ou SELL.
pricedoublePreço limite.
quantityulongQuantidade de contratos.

Direto/Cross (CrossOrder):

CampoTipoDescrição
symbolstringInstrumento negociado.
pricedoublePreço do negócio.
quantityulongQuantidade.
buyAccountuintConta compradora.
sellAccountuintConta vendedora.
maxSweepQtyulongQuantidade máxima de varredura. Opcional.
crossTypeenumALL_OR_NONE_CROSS (padrão), CROSS_EXECUTED_AGAINST_BOOK_FROM_CLIENT, VWAP_CROSS ou CLOSING_PRICE_CROSS.
crossPrioritizationenumNONE (padrão), BUY_SIDE_IS_PRIORITIZED ou SELL_SIDE_IS_PRIORITIZED.

Spreads de curva e genérico (DiDiff*, DiFra*, Spread):

CampoTipoDescrição
instrumentsarrayOs instrumentos do spread. Veja a tabela abaixo.
spreaddoubleSpread alvo.
slippageMaxContractsintLimite de encilhamento antes de bloquear novas colocações.
slippageWaitSecondsintEspera antes de agredir o mercado.
slippageMaxTicksintDeslocamento da agressão, em ticks.
startTime · endTimehh:mm:ssJanela de operação, em BRT.
isEdsEnabled · edsOrderQuantitybool · ulongUso do EDS, nas estratégias de 2 instrumentos.

Cada item de instruments:

CampoTipoDescrição
symbolstringInstrumento.
sideenumBUY ou SELL.
quantityulongQuantidade alvo.
maxQuantityulongTeto de quantidade no apregoamento.
placementPriceLevelsintNíveis de preço mantidos, de 1 a 3.
maxSimultaneousOrdersintOrdens simultâneas por nível, de 1 a 5.
maxPriceIncrementsintIncrementos de preço antes de pausar.
burstQuantityulongQuantidade extra em rajada.
isPlacementEnabledboolApregoa passivamente o instrumento.
priceFactordoublePeso no spread. Apenas no Spread genérico.
{
  "spread": 12.5,
  "slippageMaxContracts": 50,
  "slippageWaitSeconds": 3,
  "slippageMaxTicks": 2,
  "startTime": "09:30:00",
  "endTime": "16:00:00",
  "isEdsEnabled": true,
  "edsOrderQuantity": 100,
  "instruments": [
    { "symbol": "DI1F27", "side": "BUY",  "quantity": 100, "placementPriceLevels": 3, "maxSimultaneousOrders": 5 },
    { "symbol": "DI1F29", "side": "SELL", "quantity": 100, "placementPriceLevels": 3, "maxSimultaneousOrders": 5 }
  ]
}

O significado desses campos está em Apregoamento, Encilhamento e no Catálogo de Estratégias.

Ciclo de vida

Controlar

Autenticação: token ou chave de API. Acesso: iniciar e parar exigem Editar estratégias; cancelar exige Cancelar estratégias (inclui Risk).

POST/api/strategy/start/{id}Inicia a estratégia
POST/api/strategy/stop/{id}Encerra de forma controlada
DEL/api/strategy/{id}Cancela a estratégia
DEL/api/strategy/allCancela todas as estratégias da mesa

Ordem manual

Enviar ordem manual

Autenticação: token ou chave de API. Acesso: Editar estratégias (Admin, Trader).

POST/api/strategyInsere uma ordem manual em uma estratégia

Envia uma ordem manual para uma estratégia em andamento, útil no desencilhamento. Os campos escolhem o que operar e como:

CampoTipoDescrição
idintEstratégia alvo.
symbolTypeenumAll (todos os instrumentos) ou Fixed (um específico). Padrão Fixed.
symbolstringInstrumento, quando symbolType é Fixed.
priceTypeenumMarket ou Limit. Padrão Limit.
pricedoublePreço, quando priceType é Limit.
quantityTypeenumAll ou Fixed. Padrão Fixed.
quantityulongQuantidade, quando quantityType é Fixed.
trancheTypeenumAll ou Fixed, para mirar um tranche. Padrão Fixed.
tranchePosition · trancheIdintO tranche alvo, quando Fixed.
{ "id": 101, "symbolType": "Fixed", "symbol": "DI1F27", "priceType": "Limit", "price": 13.50, "quantityType": "All", "trancheType": "All" }

O detalhe de cada combinação está em Desencilhamento.

Consultas

Consultar

Autenticação: token ou chave de API. Acesso: Cancelar estratégias (Admin, Trader, Risk); a rota duration aceita qualquer usuário autenticado.

GET/api/strategy/allLista as estratégias da mesa
GET/api/strategy/{id}Estado de uma estratégia
GET/api/strategy/tradesTrades de todas as estratégias da mesa
GET/api/strategy/trades/{id}Trades de uma estratégia
GET/api/strategy/openOrdersOrdens abertas da mesa
POST/api/strategy/duration/{tipo}Calcula as quantidades neutras

A rota duration devolve, a partir de um instrumento e de uma quantidade de referência, as quantidades que deixam a posição neutra: em DV nas estratégias em pontos, e em PU nas de FRA. Veja a neutralidade nas estratégias em pontos e a FRA.