Articles

Construir Um Cryptocurrency Negociação Bot com R

Foto por Branko Stancevic no Unsplash

** Observe que a API usada neste tutorial não está mais em serviço. Este artigo deve ser lido para fins ilustrativos com isso em mente.a mente do comerciante é o elo fraco de qualquer estratégia ou plano de negociação. Uma execução comercial eficaz precisa de entradas humanas que vão na direcção oposta aos nossos instintos. Devíamos comprar quando o nosso cérebro de réptil quer vender. Devíamos vender quando quisermos comprar mais.é ainda mais difícil negociar criptocurrencias com uma constituição crítica. Os mercados Jovens e emergentes são inundados com “grupos de bombas” que FOMO intenso (medo de perder) que impulsionam os preços para cima antes de o corpo-esmagá-los de volta para a terra. Muitos investidores novatos também comercializam nesses mercados, investidores que possivelmente nunca entraram em um comércio na NYSE. Em cada comércio, há um fabricante e um tomador, e investidores Crypto astutos acham fácil tirar proveito dos noviços inundando o espaço.

A fim de separar as minhas emoções do crypto trading e para tirar partido dos mercados abertos 24/7, eu decidi construir um bot de trading simples que seguiria uma estratégia simples e executar trades enquanto dormia.

muitos “comerciantes de bot” como eles são chamados, usam a linguagem de programação Python para executar essas transações. Se você fosse ao google, “crypto trading bot”, você encontraria links para o código Python em vários repositórios do Github.

sou um cientista de dados, e R é a minha principal ferramenta. Eu procurei por um tutorial decente sobre o uso da linguagem R para construir um bot de negociação, mas não encontrei nada. Eu fui definido na construção de meu próprio pacote para interface com a API GDAX quando eu encontrei o pacote rgdax, que é uma embalagem R para a API GDAX. A seguir está um guia para juntar um bot de negociação que você pode usar para construir suas próprias estratégias.em poucas palavras, Vamos trocar o par Ethereum — USD na bolsa de GDAX através da sua API através da embalagem rgdax. Eu gosto de negociar este par porque Ethereum (ETH) é tipicamente em uma postura de touro, O que permite que esta estratégia brilhe.Nota: Esta é uma estrato super simplista que só vai ganhar alguns dólares num mercado de Touros. Para todos os efeitos, use isto como uma base para construir a sua própria camada.estaremos comprando quando uma combinação de indicadores de índice de resistência relativa (RSI) apontar para um mercado temporariamente superlotado, com a suposição de que os touros vão mais uma vez empurrar os preços para cima e podemos obter lucros.

Uma vez que compramos, o bot irá introduzir três ordens de venda limite: um com 1% de lucro, outro com 4% de lucro e o último com 7% de lucro. Isso nos permite libertar rapidamente fundos para entrar em outro comércio com as duas primeiras encomendas, e a ordem de 7% reforça a nossa rentabilidade global.

Software

estaremos usando o escalonador de Tarefas Rstudio e Windows para executar o nosso código R de forma regular (a cada 10 minutos). Você precisará de uma conta GDAX para enviar encomendas e uma conta Gmail para receber notificações de comércio.

Processo

Parte 1: Chamada de Compilação e Bibliotecas de Funções

Vamos começar chamando várias bibliotecas:

O pacote rgdax fornece a interface para a GDAX api, mailR é usado para nos enviar atualizações por e-mail com uma conta do Gmail, stringi nos ajuda a analisar os números de JSON e TTR nos permite realizar o técnico indicador de cálculos.

função: curr_bal_usd curr_bal_eth

irá usar a sua chave de api, secreta e senha que são geradas a partir do GDAX na secção API. Estas funções de consulta seu GDAX conta para o mais recente balanço que vamos usar várias vezes em nossa negociação:

Função: RSI

Vamos usar o RSI ou o Índice de Força Relativa como nossos principais indicadores para esta estratégia. Curr_rsi14_api puxa o valor da RSI mais recente de 14 períodos, usando velas de 15 minutos. Rsi14_api_less_one e assim por diante puxe a RSI para os períodos anteriores:

Function: bid & ask

Next, we will need the current bid and ask prices for our strategy:

Function: usd_hold, eth_hold e cancel_orders

A fim de que possamos fazer encomendas de limite de uma forma iterativa, precisamos ser capazes de puxar o estado atual das nossas encomendas já colocadas, e ser capazes de cancelar as encomendas que foram muito para baixo no livro de encomendas a ser preenchido. Vamos usar o “possui” função do rgdax pacote para fazer isso para o primeiro, e “cancel_order”, para os últimos:

Função: buy_exe

esta é a função Big-daddy que executa as nossas ordens Limite. Existem vários passos através dos quais esta função funciona.

1. A função Order_size calcula quanto eth podemos comprar, porque queremos comprar o máximo possível de cada vez, menos 0,005 eth para contabilizar erros de arredondamento

2. Nossa função WHILE coloca ordens limite enquanto ainda temos Zero ETH.3. Uma ordem é adicionada ao preço da oferta (), o sistema dorme 17 segundos para permitir que a ordem seja preenchida, e depois verifica se a ordem foi preenchida. Se não foi então o processo repete-se.

Parte 2: Armazenamento de Variáveis

em seguida, é necessário armazenar alguns de nossos indicador RSI variáveis como objetos para a negociação de loop é executado mais rapidamente e de modo a não exceder o limite de velocidade da API:

Parte 3: Negociação Loop Executa

até agora, acabamos de preparar as nossas funções e variáveis, a fim de executar o ciclo de negociação. O seguinte é uma caminhada verbal através do laço de negociação real:

Se o saldo atual de nossa conta em USD for maior que $20, nós começaremos o laço. Em seguida, se a RSI atual é maior ou igual a 30 e a RSI no período anterior foi menor ou igual a 30 e a RSI nos três períodos anteriores foi menos de 30 pelo menos uma vez, então nós compramos o máximo de ETH que pudermos com o saldo atual do USD.a seguir, guardamos este preço de compra para um arquivo CSV.

então, nós enviamos um e-mail para nós mesmos para nos alertar sobre a ação de compra.

O loop, em seguida, imprime “comprar” para que possamos rastrear isso em nosso arquivo de log.

O sistema então dorme por 3 segundos.

Agora, entramos 3 camadas-limite de ordens de venda para ter lucros.

nossa primeira ordem de venda limite recebe lucro com um ganho de 1%, o próximo recebe lucro com um ganho de 4%, e o último recebe lucro com um ganho de 7% :

Que é isso, que todo o script.

Parte 4: Usar o escalonador de Tarefas do Windows para automatizar o Script

o objectivo deste bot é tirar o erro humano do negócio, e permitir-nos entrar em negociações sem ter de estar presente numa tela. Vamos usar o programador de Tarefas do Windows para realizar isso.

Programação de script com o Rstudio suplemento

Use o prático Rstudio adicionar facilmente agendar o script:

Modificar a tarefa agendada com o Agendador de Tarefas

Navegar para a tarefa criada pelo Rstudio adicionar e ajustar o gatilho para disparar no intervalo que você desejar. No meu caso, escolho cada 10 minutos indefinidamente.

Manter um olho em sua tarefa com o arquivo de log

Cada vez que o script é executado ele irá fazer uma entrada em um arquivo de log de texto, que permite que você para solucionar problemas de erros no seu script:

Você pode ver como o “INICIAR o REGISTO de ENTRADA” e “END REGISTO de ENTRADA” função de impressão vem a calhar para separar as nossas entradas.

torná-lo seu próprio

você pode modificar este script para torná-lo tão simples ou tão complexo quanto você quiser. Estou a melhorar este guião com a adição de redes neurais do módulo Keras do Tensorflow para o Rstudio. Estas redes neurais adicionam um elemento exponencialmente mais complexo ao script, mas são incrivelmente poderosas para encontrar padrões escondidos nos dados.

além disso, o pacote TTR nos fornece um grande número de Funções Financeiras e indicadores técnicos que podem ser usados para melhorar o seu modelo.

com tudo isso sendo dito, não jogue com mais dinheiro que você pode dar ao luxo de perder. Os mercados não são um jogo e você pode e vai perder sua camisa.