Skip to content

lchampz/trading_engine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TradingEngine

TradingEngine e uma base de motor de matching para ordens de compra e venda em Elixir. O projeto hoje concentra tres pecas principais:

  • Order, que representa uma ordem com id, price, quantity, side e timestamp.
  • Matcher, que contem a logica de confronto entre uma ordem de entrada e uma fila de ordens opostas.
  • OrderBook, que guarda os lados de compra e venda e o historico do livro.

Na pratica, isso significa que o repositório ainda esta na fase de nucleo tecnico: ha a estrutura do dominio e parte da logica de matching, mas ainda falta integrar tudo em um fluxo publico de uso, persistencia e distribuicao.

Estado atual

O codigo existente ja aponta para estes comportamentos:

  • Criacao de ordens com preco em Decimal.
  • Ordenacao das ordens por preco para ambos os lados do livro.
  • Regras basicas de matching quando ha compatibilidade entre compra e venda.
  • Inicializacao de um processo GenServer para a aplicacao principal. Ao mesmo tempo, o projeto ainda esta incompleto. Hoje ha, por exemplo, teste quebrando por falta de TradingEngine.hello/0, e o OrderBook ainda tem funcoes internas nao conectadas ao fluxo publico.

Como usar localmente

Para compilar o projeto:

mix deps.get
mix compile

Para iniciar o IEx com o projeto carregado:

iex -S mix

Exemplos do que ja existe hoje no codigo:

buy = Order.new("1", "100.50", 10, :buy)
sell = Order.new("2", "99.00", 10, :sell)

Matcher.match_order(buy, [sell])

Como testar na pratica

Teste automatizado:

mix test

Demo visual no terminal

Existe uma demo nativa em Elixir que sobe varios nodes concorrentes, gera ordens aleatorias e desenha o book real da engine no terminal em tempo real.

Para abrir, rode:

mix demo

Voce tambem pode ajustar o numero de nodes e a velocidade:

mix demo --nodes 7 --speed 1.4

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages