Como criar o primeiro aplicativo para negociação na bolsa: 3 etapas iniciais



As trocas modernas são muito tecnológicas e atraem a atenção de especialistas em TI (por exemplo, discussões ativas dos meus artigos sobre o assunto indicam isso). Muitos estão interessados ​​no tópico de escrever robôs de negociação - alguém quer tentar ganhar dinheiro sozinho com a bolsa, alguém não se importa de fazê-lo por encomenda. Hoje falaremos sobre como abordar a criação do primeiro produto desse tipo - discutiremos uma possível pilha de tecnologia, diminuindo o limite de entrada e maneiras de minimizar possíveis perdas.

Isenção de responsabilidade : um post para quem já imagina pelo menos aproximadamente o dispositivo da troca, a presença de riscos, tem a oportunidade de experimentar não pelo último dinheiro e, em geral, tem bom senso.

Explore uma possível pilha de tecnologia


Como em qualquer projeto de TI, ao desenvolver aplicativos para negociação na bolsa de valores, a escolha de ferramentas específicas determina o objetivo final. Antes de começar a desenvolver um robô de negociação, é necessário projetar o sistema inteiro, entender quais módulos estarão nele, como eles irão interagir.

Você escreve um robô de alta frequência, para o qual cada milissegundo é importante? Em quais mercados de quais países o sistema comercial operará? Haverá apenas um mecanismo de negociação ou ainda é necessário adicionar um módulo de gerenciamento de riscos?

Em cada um desses casos, o conjunto de tecnologias pode variar. Uma boa abordagem para seleção é descrita em um artigo sobre o recurso de perfil QuantStart (é claro, em inglês - é melhor dominar esse idioma para o desenvolvimento de aplicativos financeiros).

Em geral, você provavelmente terá que escolher entre uma lista dessas tecnologias:

  • A maioria das APIs de corretagem e não apenas (aqui está minha seleção de tais ferramentas ) possui interfaces em C ++ e / ou Java. Talvez você consiga encontrar módulos prontos para conexão, escritos em C #, Python, R, Excel e MatLab por representantes / clientes da comunidade de um determinado broker. Mas você pode ter que escrevê-los você mesmo.
  • Para análise de dados, bibliotecas como uBLAS, LAPACK e NAG for C ++ são frequentemente usadas; MatLab em Python, NumPy / SciPy são populares.
  • Ao desenvolver robôs de alta frequência usando uma GPU (FPGA), você provavelmente precisará se familiarizar com a estrutura CUDA.

Aprenda as especificidades do desenvolvimento no campo das finanças com a ajuda de linguagens de programação internas


Criar um sistema comercial poderoso é, por padrão, um projeto de larga escala. No entanto, se seu objetivo é, em princípio, familiarizar-se com o desenvolvimento da área financeira, estudar vários pontos ao criar robôs de negociação, é bem possível fazer isso com as chamadas linguagens de programação internas.

Existem terminais de negociação que não só podem ser usados ​​para fazer transações no modo manual, mas também usam as linguagens de script incorporadas a eles para criar robôs simples.

Um dos terminais mais populares no mercado de ações russo é o QUIK, e possui a linguagem algorítmica QPILE (interface programável QUIK e ambiente lógico). Com ele, você pode automatizar sistemas de negociação simples . Também no QUIK, um intérprete da linguagem de script LUA é incorporado - é chamado QLUA. Os scripts nele podem ser baixados no terminal, tanto na forma de código-fonte quanto na forma de código de bytes compilado.

Exemplo de código QPILE:

PROGRAM FirmCode = "MC0012300000" CurrentBalance = MONEY_CURRENT_BALANCE(ROWNAME, FirmCode, "EQTV", "SUR") CurrentLimit = MONEY_CURRENT_LIMIT(ROWNAME, FirmCode, "EQTV", "SUR") Locked = MONEY_LIMIT_LOCKED(ROWNAME, FirmCode, "EQTV", "SUR") AvailableMoney = MoneyCurrentBalance + MoneyCurrentLimit – MoneyLocked If AvailableMoney > 0 Status = " " Else Status = " " SET_ROW_COLOR(ROWNAME, "RGB(255,138,138)", "DEFAULT_COLOR") End If END_PROGRAM 

Os dois idiomas têm uma comunidade de usuários bastante desenvolvida, e perguntas podem ser feitas em tópicos no fórum oficial.

Além do QUIK, você pode negociar em bolsas russas através do terminal SMARTx . Ele usa a linguagem de script interna TradeScript. A sintaxe é simples, mas o número de palavras e operandos disponíveis pode ser codificado com estratégias bastante complexas. É assim que o código de estratégia simples do TradeScript pode ser:

 Buy Signals # ,        TREND(EMA(CLOSE, 20), 15) = UP AND TREND(MACD(13, 26, 9, SIMPLE), 5) = UP Sell Signals # ,        TREND(EMA(CLOSE, 20), 15) = DOWN AND TREND(MACD(13, 26, 9, SIMPLE), 5) = DOWN Exit Long Signal # ,         TREND(EMA(CLOSE, 20), 15) = DOWN OR TREND(MACD(13, 26, 9, SIMPLE), 5) = DOWN Exit Short Signal # ,         TREND(EMA(CLOSE, 20), 15) = UP OR TREND(MACD(13, 26, 9, SIMPLE), 5) = UP 

A etapa mais importante: teste e depuração


O desenvolvimento de aplicações para o setor financeiro, e especialmente instrumentos para negociação na bolsa de valores, é complicado pelo fato de que aqui você precisa pagar por erros no sentido literal. Isso não está gravando código para a próxima inicialização da Web, onde uma falha pode passar despercebida. Qualquer erro no código do robô de negociação resultará em perda de dinheiro. Portanto, a depuração e o teste são a etapa mais importante na criação desse software.

Obviamente, você deve aplicar todas as práticas recomendadas, criar testes, conduzir corretamente a aceitação do código (mesmo se estiver desenvolvendo um projeto sozinho). E o mais importante - antes de iniciar os testes com dinheiro real, “conduza” o programa nos virtuais.

Hoje, muitos corretores russos oferecem um serviço de acesso de teste gratuito (por exemplo, a empresa desenvolvedora de terminais SMARTx tem um) quando oferecem uma conta que quase não é diferente da real, mas o dinheiro é virtual. Como regra, ao trabalhar com essa conta, você pode negociar nos principais mercados - ações, moeda, derivativos - e trabalhar com as principais ações, futuros, etc.

Em alguns casos, você pode até testar a negociação com fundos emprestados (ou seja, alavancagem) - mas ao criar o primeiro robô, a questão ainda é se é necessário adicionar essas funções a ele.

Recursos úteis para desenvolvedores de aplicativos para negociação na bolsa:


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


All Articles