Experiência VonmoTrade. Parte 2: Pedidos. Tipos, recursos de processamento


Para entender como as trocas funcionam, você precisa lidar com os aplicativos de troca e as regras para seu processamento por um broker.


No artigo, analisaremos os tipos de ordens, as características de sua execução na bolsa e as restrições impostas pelo modelo de negociação. Se você está curioso sobre o que significam as abreviações DIA, GTC, FOK, COI, GTD, GAT, MOO, MOC, LOO, LOC, MIT, OCO, OSO, PEG, peço gato.


Sobre pedidos


É importante que todos os participantes do mercado concluam uma pechincha. Para iniciar a negociação, você deve criar um aplicativo (pedido) para a venda ou compra do instrumento financeiro necessário. Consequentemente, o conjunto total de aplicativos forma a oferta e a demanda atuais.


Ordem de troca - instruções do cliente para o corretor para a compra ou venda de instrumentos financeiros na bolsa.
Um pedido típico contém as seguintes informações:


  • Identificador do instrumento financeiro (ativo negociado)
  • Tipo de aplicação
  • A direção da transação. Compra ou venda
  • Preço
  • Quantidade
  • Período de validade do aplicativo (opcional)
  • Instruções adicionais (opcional)

Tipos de pedidos


Ordens básicas podem ser divididas em três grandes grupos


  • Mercado . Esse aplicativo deve ser executado imediatamente ao preço atual de mercado ou, se o volume necessário não estiver disponível, o mais rápido possível.
  • Diferido . O aplicativo permite controlar o preço máximo da transação para uma compra e o menor preço possível para uma venda. Tais ordens não podem ser executadas. Para pedidos limitados, o preço é sempre indicado melhor.
  • Com condições . Qualquer aplicativo que não seja o limite, que para execução requer o cumprimento de condições adicionais.

Data de validade


Certamente você já viu abreviações no formato DIA, GTC, FOK, COI, GTD, GAT. Todos eles limitam a duração do aplicativo.


  • DIA Pedidos desse tipo expiram no final do dia de negociação.
  • GTC (Bom até cancelado). O aplicativo é válido até ser claramente cancelado. Para que esses aplicativos não permaneçam no mercado indefinidamente, é introduzida uma restrição adicional para eles, geralmente de 30 a 90 dias.
  • FOK (Preencher ou Matar). O aplicativo deve ser executado na íntegra ou imediatamente cancelado.
  • COI (Imediato ou Cancelar). O aplicativo é executado imediatamente ou cancelado pela troca. Ao contrário do FOK, permita o fechamento parcial.
  • GTD (data / hora válida). O aplicativo é válido até o tempo especificado.
  • GAT (Good-after-Time / Date). O aplicativo é válido a partir do horário indicado.

Condições de execução da ordem


Ao combinar instruções sobre preços, validade e restrições adicionais, você pode obter várias condições para a execução de pedidos.


Para entender os relacionamentos, descreveremos a estrutura dos tipos de pedidos, apresentada no início do artigo.


Abrir e fechar pedidos de mercado


Adicionando um período de validade à ordem do mercado, obtemos:


  • MOO (Mercado Aberto). Uma ordem de mercado desse tipo só pode ser executada no momento em que o dia de negociação é aberto. A execução é garantida com liquidez.
  • LOO (Limite de abertura). Como o MOO, o LOO só pode ser executado no início do dia de negociação. Diferentemente do MOO, os pedidos limitados desse tipo permitem definir instruções para o preço. A execução não é garantida.
  • MOC (Market-On-Close). Semelhante ao MOO, mas uma ordem de mercado só pode ser fechada no final do dia de negociação. A execução é garantida com liquidez.
  • LOC (Limite ao fechar). Semelhante ao LOO, mas uma ordem de limite só pode ser fechada no final do dia de negociação. A execução não é garantida.

Pedidos condicionais


Quando queremos configurar nossas ordens para a execução de uma estratégia de negociação, as ordens condicionais chegam às ordens de resgate, cuja ativação ocorre somente depois que a condição é atendida. Assim, o principal objetivo desses pedidos é minimizar o risco de grandes perdas financeiras.


Parar ordem


Uma ordem de parada é uma solicitação para comprar ou vender uma certa quantia de um ativo a um preço especificado ou pior. Assim que o preço de um instrumento se torna igual ou excede o preço especificado para uma ordem de parada, é automaticamente convertido em uma ordem de mercado (ordem de mercado) e executado em termos gerais. Da mesma forma, para uma ordem de stop sell, assim que o preço atinge o nível especificado na ordem e continua a cair, ela se transforma em uma ordem de mercado. Assim, é garantida a execução de ordens de parada ativas.


As ordens de parada minimizam possíveis perdas, portanto, stop loss é sinônimo de ordem de parada.


Ordem de parada de limite (ordem de limite de parada)


Diferentemente das ordens de parada regulares, nas quais apenas o preço de parada é indicado, no limite, devemos indicar adicionalmente o preço limite.
Assim que o preço de um ativo se tornar igual ou pior que o preço de parada, uma ordem limite com o preço limite especificado será criada automaticamente. A execução de tal ordem não é garantida.


Ordem de parada à direita


Diferentemente das ordens de parada regulares, em que o preço da parada é indicado em unidades absolutas, as ordens deslizantes usam porcentagens. Depois de acionado, ele se transforma em uma ordem de mercado regular. Assim, o preço de parada está atrelado ao preço no mercado e aumenta com ele. Por exemplo, fizemos um pedido a um preço de 10 rublos e o preço de parada indicou 10% do atual, ou seja, o preço absoluto de parada será de 9 rublos. Em seguida, o ativo aumentou para 15 rublos e, ao mesmo tempo, o preço de parada do nosso pedido para 13,5 rublos.


Esse tipo de pedido é usado para minimizar perdas e maximizar lucros.


Seguindo ordens de limite de parada


Ao contrário das ordens de parada corrediça, após o acionamento, a ordem se transforma em um limite, e não no mercado.


Peg order


É uma espécie de limite de pedidos. Um pedido altera automaticamente seu preço após uma alteração no preço de oferta / demanda. As instruções de preço indicam a pior das compensações do melhor preço atual de compra / venda.


Pedido OCO (um cancela outro)


Esta é uma ordem de pares. Geralmente consiste em uma ordem de parada e um limite. Ambas as ordens funcionam com um instrumento. Se um deles for executado, o segundo será automaticamente cancelado.
Um exemplo simples: compramos um ativo por 10 rublos, nosso objetivo é obter pelo menos 3 rublos de lucro e queremos limitar as perdas a um máximo de 2 rublos. Em seguida, o preço final será de 8 rublos e o preço limite será de 13 rublos.


Pedido OSO (um envia outro)


Essa ordem consiste em uma ordem principal e um grupo de ordens relacionadas. Os pedidos podem funcionar com diferentes instrumentos. No caso da execução da ordem principal, todas as relacionadas são criadas automaticamente no mercado.


Examinamos a teoria das ordens, agora podemos começar a praticar.


Prática


Do ponto de vista sistêmico, é importante determinar de maneira flexível, mas precisa, a estrutura básica de todos os tipos de pedidos. Em Erlang, isso pode ser feito usando as entradas:


-record(exchange_order, { id :: binary(), orig_id :: binary(), ticker :: binary(), owner :: binary(), trader :: binary(), type :: non_neg_integer(), side :: non_neg_integer(), time_in_force :: non_neg_integer(), price :: binary(), trigger_price :: binary(), qty :: binary(), orig_qty :: binary(), created_ts :: non_neg_integer(), updated_ts :: non_neg_integer(), deals_history :: [#exchange_deal{}], linked_orders :: [#exchange_order{}], opts :: map() }). 

Identificação do pedido


Depois que o pedido vai para a troca, é atribuído um identificador intra-sistema - o campo id. Para melhorar a experiência do usuário ao coordenar a troca com sistemas externos, é necessário permitir que o sistema externo à troca atribua seu ID à ordem criada - o campo orig_id. Isso tornará possível solicitar pedidos por ID e por orig_id e permitirá recusar mapeamento adicional de pedidos no sistema externo.


Ordem de afiliação


Colocamos no sistema a possibilidade de criar intermediários. As inscrições podem ser enviadas diretamente de licitantes ou de um intermediário que presta serviços a clientes que não têm acesso direto à central.


No caso de uma aplicação direta, proprietário e comerciante são os mesmos.


Codificação de instruções


Analisamos os campos restantes. Dois campos são usados ​​para codificar instruções de preço: preço - preço limite para pedidos limitados e tirgger_price - preço de resposta para tipos personalizados. Por exemplo, para ordens de parada, esse campo codificará um preço de parada.


Para codificar o volume, use qty e qty_orig. Qty_orig define o volume inicial da ordem e qty - o volume da ordem durante sua execução.


Para ter informações precisas sobre execuções parciais, você precisa de uma matriz de deals_history. Com sua ajuda, depois que o pedido foi completamente preenchido, é possível calcular, por exemplo, o preço médio de um pedido concluído.


O campo linked_orders é necessário para codificar informações sobre pedidos relacionados para OCO e OSO.


Para poder expandir o sistema sem alterar o registro exchange_order, adicionaremos o campo opts - um dicionário dinâmico.


Subtotal


Honestamente, pensei que a segunda parte do ciclo seria compacta. No entanto, para uma compreensão holística, tive que divulgar o tópico com mais detalhes.


A parte teórica do próximo artigo destacará a edição do livro de pedidos e as regras de processamento de pedidos. O lado técnico revelará o esquema para o processamento de dados de mercado e o armazenamento de dados históricos.

Source: https://habr.com/ru/post/pt481772/


All Articles