ADA CRYPBOT: es el nombre de mi sistema experto en python, nace de la necesidad de poder tradear siguiendo ciertos parámetros estadísticos cada cierto tiempo, por ejemplo hoy les traigo un pequeño simulador, que nos va a permitir ir generando las reglas o algoritmos con los que queremos que nuestro BOT mueva el dinero entre monedas y así poder obtener algún beneficio...
Simulador
Un simulador es interesante en este tipo de negocios, por que como su nombre lo indica nos permite simular muchos escenarios a la ves, según una cierta información, con lo que nuestro Robot mas adelante lo podemos llenar de Inteligencia Artificial y según algunos datos el mismo sera capaz de cambiar de Inversión ya sea total o parcialmente.
SIMULADOR [ADA CRYPBOT] SISTEMA EXPERTO TODO EN PYTHON:
Ahora mismo este simulador lo he hecho a partir de un algoritmo que me gusto mucho cuando era apostador(Gracias a Dios ya no lo soy) se trata de doblo si pierdo y bueno el algoritmo consiste en lo siguiente:
- Por ejemplo en el Béisbol de las grandes ligas hay 5 equipos por cada Conferencia o Grupo Cardinal por lo que si somos un poco estudiosos de las matemáticas sabemos que los 2 primeros generalmente ganan mas del 50% de sus partidos, por lo que si apostáramos siempre a ganar sabiendo cual sera el que quedara de primero y segundo generalmente ganaríamos algo.
- Pero podemos suponer cuales 2 quedaran de primeros y cuando falten 20 juegos de los 160 nos retiramos, este algoritmo es el mismo que usa la ruleta del Casino para Rojo y Negro.
- Así que si escogemos a A y gana dividimos por 2 y si pierde multiplicamos por 2, ya que soy amante de la progresión aritmética 3n+1 o n/2, es decir usamos el mismo algoritmo en el juego pero si pierde multiplicamos por 3 y si gana dividimos por 2 así las ganancias aumentan ligeramente.
- Ok todo depende de cuando nos bajamos, pero esto aplica al juego, ahora la Bolsa de las Cripto-monedas como me gusta a mi llamarla tiene muchas variables, por lo que comenzaremos con algunos algoritmos a partir de ahora con datos ya pasados...
EJEMPLO 1:
Algoritmo si sube vende el 20% y si baja compra el 10% de lo invertido... Este algoritmo no es muy bueno, mejor dicho nada bueno a menos que esperemos que suba la moneda lentamente y tengamos una idea, ademas podremos agregar mas Algoritmos sobre-protectores de nuestra moneda por lo que la cosa se pone interesante, aquí el algoritmo:
# -*- coding: utf-8 -*-
import requests
from lxml import etree
import os, subprocess, re
from prettytable import PrettyTable
import matplotlib.pyplot as plt
import numpy as np
print "A"
#llamada = "curl -X GET --header 'Accept: application/txt' 'https://min-api.cryptocompare.com/data/histohour?fsym=STEEM&tsym=USD&limit=48&markets=Bittrex' > /home/setroot/conectar_apis/cripto_bittrex.txt"
#codigo_unico1 = subprocess.call(llamada, shell=True)
archivo = "/home/setroot/conectar_apis/cripto_bittrex.txt"
moneda_analizada = open(archivo,'r')
moneda_analizada = moneda_analizada.read().splitlines()
print "C"
for moneda in moneda_analizada:
moneda = moneda.replace("true","True")
moneda = moneda.replace("null","False")
moneda = moneda.replace("false","False")
moneda_eval = eval(moneda)
hh = 0
lista_volumeto = []
list_high = []
list_low = []
list_time = []
list_volumefrom = []
list_close = []
list_open = []
for llave,valor in moneda_eval.items():
if llave == "Data":
for element in valor:
for llave,valor in element.items():
if llave == "volumeto":
lista_volumeto.append(valor)
elif llave == "high":
list_high.append(valor)
elif llave == "low":
list_low.append(valor)
elif llave == "time":
list_time.append(valor)
elif llave == "volumefrom":
list_volumefrom.append(valor)
elif llave == "close":
list_close.append(valor)
elif llave == "open":
list_open.append(valor)
if llave == "TimeFrom":
TIME_FROM = llave
elif llave == "TimeTo":
TIME_TO = llave
balance = 80
invertido_dolares = 20
hrs_last_buy = 0
aumenta_10porc = 0.10
vende_20porc = 0.20
total_coin= invertido_dolares /list_open[0]
list_balance = []
list_invertido_dolares = []
list_total_coin = []
list_PORCENTAJE = [0]
list_total_invertido = []
list_opens_f = []
list_status = []
for analizando in lista_volumeto:
if hrs_last_buy > 0:
if list_open[hrs_last_buy - 1] < list_open[hrs_last_buy]:
open_lista = list_open[hrs_last_buy]
PORCENTAJE = (list_open[hrs_last_buy] /precio_open)
total_invertido = invertido_dolares+(invertido_dolares*(list_open[hrs_last_buy] - precio_open))
ganamos = (invertido_dolares*( list_open[hrs_last_buy] - list_open[hrs_last_buy-1]))
list_status.append(ganamos)
total_coin = total_coin - (total_invertido*vende_20porc/list_open[hrs_last_buy])
invertido_dolares = total_invertido -(total_invertido*vende_20porc)
balance = balance + (total_invertido*vende_20porc)
list_opens_f.append(open_lista)
list_balance.append(balance)
list_invertido_dolares.append(invertido_dolares)
list_total_coin.append(total_coin)
list_PORCENTAJE.append(PORCENTAJE)
list_total_invertido.append(total_invertido)
elif list_open[hrs_last_buy - 1] > list_open[hrs_last_buy]:
open_lista = list_open[hrs_last_buy]
PORCENTAJE = (list_open[hrs_last_buy] /precio_open)
total_invertido = invertido_dolares-(invertido_dolares*( precio_open - list_open[hrs_last_buy]))
perdimos = -(invertido_dolares*( list_open[hrs_last_buy-1] - list_open[hrs_last_buy]))
list_status.append(perdimos)
total_coin = total_coin + (total_invertido*aumenta_10porc/list_open[hrs_last_buy])
invertido_dolares = (total_invertido*aumenta_10porc)+total_invertido
balance = balance - (total_invertido*aumenta_10porc)
list_opens_f.append(open_lista)
list_balance.append(balance)
list_invertido_dolares.append(invertido_dolares)
list_total_coin.append(total_coin)
list_PORCENTAJE.append(PORCENTAJE)
list_total_invertido.append(total_invertido)
else:
print precio_open, "PRECIO OPEN"
hrs_last_buy += 1
tabla_add = PrettyTable([u'Invertido', u'Open', u'Balance', "Status", "Total Coins"])
list_currency = []
ooo = 0
print len(list_total_invertido)
for currency_currency in list_opens_f:
print list_status[ooo], ooo
tabla_add.add_row([
list_total_invertido[ooo],
list_opens_f[ooo],
list_balance[ooo],
list_status[ooo],
list_total_coin[ooo],
])
ooo += 1
print tabla_add
Me fue muy grato hacer el sistema, solo decir que no nos generara ganancias por si solo, pero precisamente un Simulador hace esto; simula condiciones ideales para un mercado o proceso... aquí la salida:
+-----------------+------+---------------+--------------------+---------------+
| Invertido | Open | Balance | Status | Total Coins |
+-----------------+------+---------------+--------------------+---------------+
| 19.6 | 1.84 | 78.04 | -0.4 | 11.8179055633 |
| 20.9132 | 1.83 | 75.94868 | -0.2156 | 12.9607033776 |
| 22.0843392 | 1.82 | 73.74024608 | -0.2300452 | 14.1741286083 |
| 22.5922790016 | 1.79 | 71.4810181798 | -0.7287831936 | 15.4362671 |
| 22.6148712806 | 1.77 | 69.2195310518 | -0.497030138035 | 16.7139434436 |
| 22.886249736 | 1.78 | 73.796780999 | 0.248763584087 | 14.1424547092 |
| 16.6611898078 | 1.77 | 72.1306620182 | -0.183089997888 | 15.0837648678 |
| 15.9447586461 | 1.73 | 70.5361861536 | -0.733092351543 | 16.0054272173 |
| 15.7853110596 | 1.76 | 73.6932483655 | 0.52617703532 | 14.2116418696 |
| 11.112858986 | 1.74 | 72.5819624669 | -0.252564976953 | 14.8503119263 |
| 11.1239718449 | 1.77 | 74.8067568359 | 0.366724346536 | 13.5933659551 |
| 8.27623505263 | 1.79 | 76.4620038464 | 0.177983549519 | 12.6686469548 |
| 6.02509911832 | 1.77 | 75.8594939346 | -0.132419760842 | 13.0090480349 |
| 5.96484812713 | 1.76 | 75.2630091219 | -0.0662760903015 | 13.3479598604 |
| 5.97081297526 | 1.77 | 76.4571717169 | 0.0656133293985 | 12.6732917276 |
| 4.29898534219 | 1.76 | 76.0272731827 | -0.0477665038021 | 12.9175522584 |
| 4.20870665 | 1.75 | 75.6064025177 | -0.0472888387641 | 13.1580497812 |
| 4.1666195835 | 1.76 | 76.4397264344 | 0.04629577315 | 12.6845702831 |
| 2.96663314345 | 1.75 | 76.1430631201 | -0.033332956668 | 12.854092177 |
| 2.87170088286 | 1.74 | 75.8558930318 | -0.032632964578 | 13.0191324576 |
| 2.68504032548 | 1.71 | 75.5873889992 | -0.0947661291345 | 13.1761523597 |
| 2.42190637358 | 1.68 | 75.3451983619 | -0.0886063307407 | 13.3203134534 |
| 2.15791857886 | 1.67 | 75.129406504 | -0.0266409701094 | 13.4495301347 |
| 1.94644255813 | 1.68 | 75.5186950156 | 0.0237371043675 | 13.2178107826 |
| 1.21458015627 | 1.64 | 75.397237 | -0.0622861618602 | 13.2918705482 |
| 1.02874939236 | 1.63 | 75.2943620608 | -0.013360381719 | 13.3549840079 |
| 0.916615708596 | 1.67 | 75.4776852025 | 0.045264973264 | 13.2452096715 |
| 0.564635276495 | 1.63 | 75.4212216748 | -0.0293317026751 | 13.2798498725 |
| 0.496879043316 | 1.66 | 75.5205974835 | 0.0186329641243 | 13.2199849275 |
| 0.321977620069 | 1.67 | 75.5849930075 | 0.00397503234653 | 13.1814247335 |
| 0.211217318765 | 1.68 | 75.6272364713 | 0.00257582096055 | 13.1562798146 |
| 0.14193803821 | 1.7 | 75.6556240789 | 0.00337947710024 | 13.1395812219 |
| 0.0931113530659 | 1.68 | 75.6463129436 | -0.00227100861136 | 13.1451235643 |
| 0.081937990698 | 1.66 | 75.6381191445 | -0.00204844976745 | 13.1500595879 |
| 0.0694014781212 | 1.63 | 75.6311789967 | -0.00270395369303 | 13.1543173473 |
| 0.0580196357093 | 1.62 | 75.6253770331 | -0.000763416259333 | 13.1578988063 |
| 0.0497808474386 | 1.64 | 75.6353332026 | 0.0012764319856 | 13.1518279712 |
| 0.0294702616836 | 1.6 | 75.6323861765 | -0.00159298711803 | 13.1536698626 |
| 0.0233404472534 | 1.58 | 75.6300521317 | -0.00064834575704 | 13.1551471061 |
+-----------------+------+---------------+--------------------+---------------+
Hay mas salidas pero por ahora vamos a dejar el simulador hasta aquí en las próximas entradas iré agregando mas algoritmos y pasaremos por ejemplo este a POO, o programación orientada a objeto para Reutilizarlo...
Que Dios les Bendiga, nos vemos en otra entrada :D
Hi! I like the content, I`ve upvoted this post. Cheers!:)
thank you very much, friend
Mi Buen colega votado y reesteemed
Con tu contenido me divierto y aprendo aún más :) un abrazo sigue así .
Es bueno Saberlo amigo, Saludos y gracias :D