Construir Um Cryptocurrency Negociação Bot com R
** 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
- Parte 1: Chamada de Compilação e Bibliotecas de Funções
- Parte 2: Armazenamento de Variáveis
- Parte 3: Negociação Loop Executa
- Parte 4: Usar o escalonador de Tarefas do Windows para automatizar o Script
- Programação de script com o Rstudio suplemento
- Modificar a tarefa agendada com o Agendador de Tarefas
- Manter um olho em sua tarefa com o arquivo de log
- torná-lo seu próprio
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.
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.