Como fazer o seu próprio robô de negociação

Autora:Bem-estar, Criado: 2019-03-16 10:29:22, Atualizado: 2019-03-16 10:29:54

Prefácio

Eu certamente não sou um grande programador, mas escrever este projeto me ensinou muito (e me manteve ocupado).FMZ.COMNo entanto, fiquei agradavelmente surpreso com os resultados que obtive e o bot fez quase 100% de lucro até agora.

O que é que ele faz? É um bot de arbitragem. Isso significa que ele ganha dinheiro negociando a diferença entre os preços em duas (ou mais) bolsas. A partir de agora, é unidirecional e só negocia entre Etherdelta e Bittrex: eles compartilham aproximadamente vinte pares de et / token.imgPalavras seguidas de parênteses são transações de ethereum que invocam uma chamada de função de contrato inteligente.

O Código

Podia ter usadofmz.comEu precisava de algo mais confiável; uma transação falhada significa perder dinheiro. Cada uma das minhas solicitações GET precisava de uma resposta, mesmo se o pacote TCP se perdesse ou o servidor da web na outra extremidade estivesse temporariamente fora. Portanto, eu decidi implementar meu próprio Python etherscan API wrapper e usei o pythereum para criar as transações e etherscan para publicá-las. Eu também escrevi meus próprios requests.get decorator que é um loop de tempo que só sai quando a resposta é satisfatória.

Aqui está o código que eu usei para codificar as respostas da API do etherdelta json como hexadecimal, RLP codificado, transações Ethereum (não para os fracos de coração):img

Os valores hexadecimais brutos no fechamento na parte inferior são as assinaturas de função que correspondem a cada função. Uma assinatura de função é derivada do keccak da função e seus argumentos. Ela deve ser anexada ao parâmetro de dados de uma transação seguido pelos dados que compõem os argumentos. No total, meu código tem cerca de 400 linhas de comprimento e está contido em 5 arquivos diferentes.

O resultado

Fiz alguns gráficos dos dados que registrei usando o pymatplotlib.img img img

Conclusão

No geral, todo o projeto levou-me cerca de duas semanas durante o meu tempo livre na escola e foi uma explosão em todos os sentidos. Eu tirei uma pausa da codificação vigorosamente e estou atualmente no processo de planejamento de arbitragem bot v2.

Para a lua!


Mais.