DeviaVir / zenbot

» Para seguir el camino, mire al maestro, siga al maestro, camine con el maestro, vea a través del maestro, conviértase en el maestro.»– Proverbio Zen

¡Nuevo! Chatea con otros usuarios de Zenbot

¡Zenbot tiene un chat de discordia de nuevo! Puedes entrar a través de este enlace de invitación.

Descripción

Zenbot es un bot de comercio de criptomonedas de línea de comandos que utiliza Node.js y MongoDB. Cuenta con:

  • Enfoque comercial basado en análisis técnico totalmente automatizado
  • Soporte completo para GDAX y Poloniex, se está trabajando en el soporte de intercambio adicional.
  • Arquitectura de complementos para implementar soporte de intercambio o escribir nuevas estrategias
  • Simulador para probar estrategias contra datos históricos
  • Modo de negociación»en papel», opera en un saldo simulado mientras observa el mercado en vivo
  • Paradas de venta, paradas de compra y paradas de ganancias (finales) configurables
  • Período de muestreo flexible y frecuencia de negociación: promedios de 1-2 operaciones/día con período de 1 hora, 10/día con período de 15 m

Descargo de responsabilidad

  • Zenbot NO es una máquina de ganancias segura. Úselo BAJO SU PROPIO RIESGO.
  • La criptomoneda sigue siendo un experimento, y por lo tanto también lo es Zenbot. Es decir, ambos pueden fallar en cualquier momento.
  • Ejecutar un bot y operar en general requiere un estudio cuidadoso de los riesgos y parámetros involucrados.
  • A menudo, los parámetros comerciales predeterminados tendrán un rendimiento inferior al de una estrategia de compra-retención, así que ejecute algunas simulaciones y encuentre los parámetros óptimos para su intercambio/par elegido antes de ir «all-in».

inicio Rápido

1. Requisitos: Linux, OSX o Docker, Nodo.js y MongoDB.

Ejecutar en la consola,

git clone https://github.com/carlos8f/zenbot.git

O, sin git,

wget https://github.com/carlos8f/zenbot/archive/master.tar.gztar -xf zenbot-master.tar.gzmv zenbot-master zenbot

Crear el archivo de configuración mediante la copia de conf-sample.js a conf.js:

cp conf-sample.js conf.js
  • Ver y editar conf.js.
  • Es posible usar zenbot en el modo» paper trading » sin hacer ningún cambio.
  • Sin embargo, debe agregar sus claves de API de exchange para habilitar el comercio real.
  • Las claves API NO necesitan permisos de depósito/retiro.

Si usa Docker, vaya a la sección «Docker» a continuación.

Instalar dependencias:

cd zenbotnpm install# optional, installs the `zenbot.sh` binary in /usr/local/bin:npm link

Docker

Para ejecutar Zenbot en Docker, install Docker, Docker Compose, Docker Machine (si es necesario), Puede seguir las instrucciones en https://docs.docker.com/compose/install/

Después de la instalación (paso 2 anterior),

cd zenbotdocker-compose builddocker-compose up (-d if you don't want to see the log)

Vocab: selectores

Un «selector» es un identificador corto que le dice a Zenbot en qué intercambio y par de divisas actuar. Utilice el formulario {exchange_slug}.{asset}-{currency}. Puede encontrar una lista completa de selectores compatibles con la instalación de Zenbot con:

3. (opcional) Ejecute simulaciones para su selector elegido

Para rellenar datos (siempre que su intercambio elegido lo admita), use:

zenbot backfill <selector> --days <days>

Después de rellenar, puede ejecutar una simulación:

zenbot sim <selector> 

Para obtener una lista de opciones para el , use:

zenbot sim --help

Para opciones adicionales relacionadas con la estrategia, use:

zenbot list-strategies
  • Por defecto, la sim comenzará con 1000 unidades de moneda. Anular con --currency_capital y --asset_capital.
  • Abra sim_result.html en su navegador para ver un gráfico de velas con operaciones.

Captura de pantalla y resultado de ejemplo

Zenbot muestra un gráfico HTML de cada resultado de simulación. En la imagen siguiente, las flechas rosadas representan la compra de bots (flecha arriba) y la venta (flecha abajo), ya que iteraron los datos históricos del producto BTC/USD de GDAX exchange.

end balance 2954.50 (195.45%)buy hold 1834.44 (83.44%)vs. buy hold 61.06%110 trades over 91 days (avg 1.21 trades/day)

Zenbot comenzó con 1 1,000 USD y terminó con 2 2,954.50 después de 90 días, ¡logrando un ROI del 195%! A pesar de una estrategia de compra/retención que devuelve un respetable 83.44%, Zenbot tiene un potencial considerable para vencer a los compradores / titulares.

4. Ejecute zenbot

El siguiente comando lanzará el bot, y si no ha tocado c.default_selector en conf.js, intercambiará el par BTC/USD predeterminado en GDAX.

zenbot trade 

Utilice el indicador --paper para realizar operaciones simuladas mientras observa el mercado.

Aquí le mostramos cómo ejecutar un selector diferente (ejemplo: ETH-BTC en Poloniex):

./zenbot trade poloniex.eth-btc

Para obtener una lista completa de opciones para el comando trade, use:

y también:

la Lectura de la salida de la consola

De izquierda a derecha:

  • Marca de tiempo en hora local (gris, azul cuando se muestran estadísticas «en vivo»)
  • Precio del activo en moneda (amarillo)
  • Cambio porcentual del precio desde el último período (rojo/verde)
  • Volumen en el activo desde el último período (gris)
  • Gráfico ANSI RSI (rojo/verde)
  • trend_ema_rate (rojo/verde verde, explicado a continuación)
  • Señal o acción actual, que incluye buysellbuyingsellingboughtsold y last_trade_worth (porcentaje cambio en la dirección de la tendencia desde la última compra/venta)
  • Saldo de la cuenta (activo)
  • Saldo de la cuenta (moneda)
  • Porcentaje de ganancias o pérdidas (se puede restablecer con --reset_profit)
  • Ganancia o pérdida vs.estrategia de compra/retención

Acerca de la estrategia predeterminada

  • La estrategia predeterminada se llama trend_ema y reside en ./extensions/trend_ema.
  • El valor predeterminado es usar un período de 1h, pero puede anular esto agregando, por ejemplo, --period=15ma los comandos simo trade.
  • Calcula el EMA de 34 períodos del precio actual y calcula el cambio porcentual del EMA del último período para obtener el trend_ema_rate
  • Considera trend_ema_rate >= 0 una tendencia al alza y trend_ema_rate < 0 una tendencia a la baja
  • Filtra valores bajos (motosierras) mediante neutral_rate, que cuando se establece en auto, utiliza la desviación estándar del trend_ema_rate como filtro de ruido variable.
  • Compra al principio de la tendencia ascendente, vende al principio de la tendencia descendente
  • Si oversold_rsi se establece, intenta comprar cuando el RSI cae por debajo de ese valor, y luego comienza a recuperarse (una contraparte de --profit_stop_enable_pct, que vende cuando se alcanza un porcentaje de ganancia, y luego cae)
  • El bot siempre trate de evitar las tarifas comerciales, utilizando órdenes solo posteriores y, por lo tanto, siendo un «creador» de mercado en lugar de un «tomador». Sin embargo, algunos intercambios no ofrecerán descuentos para fabricantes.

Opción de ajustar consejos

  • el Comercio se ajusta la frecuencia de con una combinación de --period y --trend_ema. Por ejemplo, si quieres más frecuentes de comercio, trate de --period=15m o --trend_ema=25 o ambos. Si obtienes demasiadas operaciones de ping-pong o pérdidas por las tarifas, intenta aumentar period o trend_ema.
  • A veces es tentador decirle al comercio de bots muy a menudo. Trate de resistir este impulso y opte por la calidad sobre la cantidad, ya que cada operación viene con una cantidad decente de riesgo de deslizamiento y sierra de látigo.
  • En un mercado alcista, --sell_rate=-0.01y --max_sell_duration=8 pueden dar al precio la oportunidad de recuperarse antes de vender. Si hay una caída repentina en el precio, se supone que se recuperará y la venta se retrasará. Compense el riesgo utilizando --sell_stop_pct=5.
  • En un mercado alcista con inmersiones y recuperaciones de precios regulares, --oversold_rsi=25 intentará comprar cuando el precio se sumerja.
  • En un mercado con aumentos y correcciones de precios predecibles, --profit_stop_enable_pct=10 intentará vender cuando la última compra alcance el 10% de ganancia y luego caiga al 9%.
  • a partir de la versión 4.0.2, --neutral_rate=auto está activado de forma predeterminada, lo que demostró en simulaciones ser efectivo para prevenir señales débiles (whipsaw). Sin embargo, a veces --neutral_rate=0 funciona mejor para baja volatilidad, como BTC-USD a 1h.

Herramientas de comercio manual

El motor de ejecución de órdenes de Zenbot también se puede usar para operaciones manuales. Los beneficios incluyen:

  • Evita las tarifas de las órdenes de mercado mediante el uso de una orden de límite a corto plazo
  • Puede determinar automáticamente el tamaño de la orden a partir del saldo de la cuenta
  • Ajusta la orden cada 30 segundos (si es necesario) para garantizar una ejecución rápida
  • Si una orden se llena parcialmente, intenta volver a ordenar con el tamaño restante

El comando para comprar es:

zenbot buy <selector> 

Por ejemplo, para usar su saldo de USD restante en GDAX para comprar Bitcoin:

zenbot buy gdax.BTC-USD

O para vender el 10% de su BTC,

zenbot sell gdax.BTC-USD --pct=10

Registro de actualización

  • v4.0.3 (Último)
    • arreglo para error de host mongo de docker
    • enlace para nuevo chat de Discordia!
    • arreglar el bloqueo de polo en el resultado extraño de getOrder
    • arreglar el disparador de oversold_rsi mientras se está en preroll
    • arreglar polo «no es suficiente…»errores
    • colores elegantes para el informe de precios
    • mostrar el id del producto en el informe
    • corregir los lotes de relleno de poloniex demasiado grandes, los tiempos de espera de mongo
    • corregir el bloqueo de cursorTo() en algunas instalaciones de nodos
    • memDump para la depuración de errores de pedido
    • corregir el espaciado de columnas en el informe de progreso
  • v4.0.2
    • revisión menor a trend_ema strat-se agregó filtrado de sierra giratoria a través de std. desviación (--neutral_rate=auto)
    • recortar el preroll del gráfico de resultados de sim
  • v4.0.1
    • Añadido.dockerignore (gracias @sulphur)
    • arreglar el bloqueo en el tiempo de espera de mongo durante el relleno
    • arreglar los huecos en el relleno de poloniex
    • días de relleno predeterminados 90 -> 14

TODO

  • revisión de relaciones públicas para Bitfinex
  • más soporte de intercambio
  • interfaz de usuario web con gráficos y registros
  • «reaper» para recortar automáticamente la colección de operaciones a una duración determinada
  • «modo lite» para trader, una opción para ejecutarse sin MongoDB

Donar

P.D., algunos han preguntado cómo donar a Zenbot development. Acepto donaciones en mi dirección Bitcoin a continuación:

carlos8f del BTC

187rmNSkSvehgcKpBunre6a5wA5hQQop6W

Gracias!

Licencia: MIT

  • Copyright (C) 2017 Carlos Rodriguez
  • Copyright (C) 2017 Terra Eclipse, Inc. (http://www.terraeclipse.com/)

Por la presente se concede permiso, de forma gratuita, a cualquier persona que obtenga una copia de este software y los archivos de documentación asociados (el «Software»), para tratar el Software sin restricciones, incluidos, entre otros, los derechos de uso, copia, modificación, fusión, publicación, distribución, sublicencia y / o copias vendidas del Software, y para permitir que las personas a las que se suministra el Software lo hagan, condiciones siguientes:

El aviso de derechos de autor anterior y este aviso de permiso se incluirán en todas las copias o partes sustanciales del Software.

EL SOFTWARE SE PROPORCIONA «TAL CUAL», SIN GARANTÍA DE NINGÚN TIPO, NI SE APLICA EXPRESAMENTE, INCLUIDAS, ENTRE OTRAS, LAS GARANTÍAS DE COMERCIABILIDAD, IDONEIDAD PARA UN PROPÓSITO PARTICULAR Y NO INFRACCIÓN. EN NINGÚN CASO, LOS AUTORES O TITULARES DE DERECHOS DE AUTOR SERÁN RESPONSABLES DE NINGUNA RECLAMACIÓN, DAÑO U OTRA RESPONSABILIDAD, YA SEA EN UNA ACCIÓN CONTRACTUAL, EXTRACONTRACTUAL O DE OTRO TIPO, QUE SURJA DE,O ESTÉ RELACIONADA CON EL SOFTWARE O EL USO U OTRAS TRANSACCIONES EN EL SOFTWARE.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.