Estoy haciendo un bot

SrRabo
ForoCoches: Miembro
#1
Soy nuevo en criptos pero me considero el puto amo de la programación, y aunque ya hace mucho tiempo que amortice este conocimiento, os cuento lo que estoy haciendo y me contáis si le veis futuro o no.

Cada hora estoy recogiendo el valor de todas las criptos de binance y guardándolo en un CSV.

Con esos datos cálculo el máximo, mínimo y media de los últimos 5 días.

Cada hora el bot analiza si hay algo 'interesante' para comprar o para vender. Entiende que es interesante si:

1. Mínimo/Máximo > 0.2 . Esa división da un valor entre 0 y 1
2. El valor de la cripto está aproximado al mínimo (para comprar) o al máximo (para vender).

El bot invierte hasta un 20% del USTD que dispone para comprar o un 20% de la crypto que quiere vender. Digo 'hasta' porque es variable en función del ratio mínimo/máximo.

Llevo una semana recopilando datos cada hora y he corrido un test con esos datos. Empezaba con 500 USDT y ha terminado con el equivalente a 567 USDT (y tiene en cuenta que al comprar se llevan una comisión del 2%).

Aún no lo tengo en producción, voy a esperar algunas semanas más para tener más datos y si todo va bien lo pondré a trabajar próximamente.


EDIT 28/05/2021


Aqui van algunas simulaciones. He hecho otro programa con la que pinto graficas y estas se convierten en un CSV. Asi que ojo, no son reales, pero me permiten ver puntos fuertes y puntos debiles. En rojo es el valor de la crypto, y en azul la media.


En todos los ejemplos empiezo con una wallet que contiene 100 USDT y 100 SYMBOL (esto es una cripto moneda inventada, imaginaos que son Bitcoins). Os pongo el valor estimado en USDT en el ultimo dia.



Ejemplo 1: Un x10


Sin bot: 97100.0 USDT -> {SYMBOL=100.0, USDT=100.0}
Con bot: 1052045.8919377292 USDT -> {SYMBOL=713.2485815952698, USDT=360194.7677903175}







Ejemplo 2: Un x4



Sin bot: 127400.0 USDT -> {SYMBOL=100.0, USDT=100.0}
Con bot: 498181.9241898482 USDT -> {SYMBOL=1.961457539575555, USDT=495684.9887419685}






Ejemplo 3: El bot lo hace peor!. Si no haces nada ganas x3



Sin bot: 138100.0 USDT -> {SYMBOL=100.0, USDT=100.0}

Con bot: 53423.48493605778 USDT -> {SYMBOL=1.6786922531497744E-4, USDT=53423.25327652685}





Ejemplo 4: x0.4



Sin bot: 62800.0 USDT -> {SYMBOL=100.0, USDT=100.0}
Con bot: 80973.79317567745 USDT -> {SYMBOL=114.47647262962533, USDT=9197.044836902358}




Ejemplo 5: x2


Sin bot: 48200.0 USDT -> {SYMBOL=100.0, USDT=100.0}

Con bot: 104861.4050417898 USDT -> {SYMBOL=2.531687615194065, USDT=103643.66329888145}




Ejemplo 6: Casi x3



Sin bot: 52800.0 USDT -> {SYMBOL=100.0, USDT=100.0}
Con bot: 145068.16395201124 USDT -> {SYMBOL=4.269145719819581, USDT=142818.32415766633}





EDIT 3 30/05/2021. Con datos REALES desde 2021-05-08 08:33:48 hasta 2021-05-29 09:30:03



Las graficas son mas descriptivas ahora. En estos tests empiezo teniendo solo USDT. En las graficas se ve el valor de la wallet en cada momento, asi como cuanto se compra y cuanto se vende.


La wallet empieza con un dinero que depende de la cripto moneda. Por hacer que las graficas se vean bien, mas o menos empiezo con el valor en USDT de UNA cripto moneda del test. Por ejemplo, si es ETH empieza con 3600.



Los beneficios no son espectaculares, pero tened en cuenta que las criptos han ido en picado estos dias. Asi que me doy por satisfecho si mi wallet se mantiene.


BAKE, esta lo hace bien, saca un x1.26







BNB, beneficios para una bolsa de pipas x1.016




Ya no comento mas, podeis sacar conclusiones mirando graficas.





Tambien pierdo en alguna:


Aqui esta el resultado de todos los tests con datos reales:
TestResult [csv=/ADAUSDT.csv, trader=1.7597267884209442, holder=1.65, absoluteBenefit=0.1097267884209443, multiplier=1.0665010838914815, success=true],
TestResult [csv=/BNBUSDT.csv, trader=648.6620087339717, holder=638.0, absoluteBenefit=10.662008733971675, multiplier=1.0167116124356923, success=true],
TestResult [csv=/BTCUSDT.csv, trader=58807.4990616845, holder=59000.0, absoluteBenefit=-192.50093831549748, multiplier=0.9967372722319408, success=false],
TestResult [csv=/BTTUSDT.csv, trader=0.008289619557511221, holder=0.0079, absoluteBenefit=3.8961955751122025E-4, multiplier=1.0493189313305342, success=true],
TestResult [csv=/CHZUSDT.csv, trader=0.5565868569042276, holder=0.5, absoluteBenefit=0.0565868569042276, multiplier=1.1131737138084552, success=true],
TestResult [csv=/DOTUSDT.csv, trader=34.50234694646801, holder=40.0, absoluteBenefit=-5.497653053531991, multiplier=0.8625586736617002, success=false],
TestResult [csv=/ETHUSDT.csv, trader=3706.7852794731743, holder=3600.0, absoluteBenefit=106.78527947317434, multiplier=1.0296625776314374, success=true],
TestResult [csv=/GRTUSDT.csv, trader=1.7393589311858437, holder=1.6, absoluteBenefit=0.13935893118584364, multiplier=1.0870993319911522, success=true],
TestResult [csv=/SOLUSDT.csv, trader=45.27875995713899, holder=44.0, absoluteBenefit=1.2787599571389876, multiplier=1.0290627262986134, success=true],
TestResult [csv=/XRPUSDT.csv, trader=1.6774057901822632, holder=1.6, absoluteBenefit=0.07740579018226312, multiplier=1.0483786188639144, success=true],
TestResult [csv=/ANKRUSDT.csv, trader=0.17106841933969194, holder=0.17, absoluteBenefit=0.0010684193396919284, multiplier=1.0062848196452467, success=true],
TestResult [csv=/BAKEUSDT.csv, trader=8.505812421218733, holder=6.75, absoluteBenefit=1.7558124212187334, multiplier=1.2601203586990717, success=true],
TestResult [csv=/CAKEUSDT.csv, trader=30.315911341834447, holder=38.0, absoluteBenefit=-7.684088658165553, multiplier=0.7977871405745907, success=false],
TestResult [csv=/DOGEUSDT.csv, trader=0.7566455397878561, holder=0.7, absoluteBenefit=0.056645539787856136, multiplier=1.0809221996969374, success=true],
TestResult [csv=/SHIBUSDT.csv, trader=1.5623999281548455E-5, holder=3.5E-5, absoluteBenefit=-1.9376000718451542E-5, multiplier=0.446399979472813, success=false],
TestResult [csv=/MATICUSDT.csv, trader=0.8753438123056629, holder=0.75, absoluteBenefit=0.12534381230566294, multiplier=1.1671250830742173, success=true],



Ire editando poniendo mas ...


Pa que luego digan que los ingenieros informaticos no somos ingenieros, me cawen dios.
SertoriO-
ForoCoches: Miembro
#2
Gracias, programaré el mismo bot
k17
ForoCoches: Miembro
#3
Me gustaría ver el código, lo piensas publicar?
Chano_CN
ForoCoches: Miembro
#4
el único problema que le veo es que cuando venga el bearmarket, no hay bot que te salve
vzk91
ForoCoches: Miembro
#5
Futuro en cuanto a que ?

Si lo dices por si vemos futuro para que puedas tenerlo en ejecución y sacarle un rendimiento.... ¿Porqué no? Dependerá mucho de la estrategia que sigas.

Si lo dices por si vemos futuro para que puedas monetizarlo por licencias o venta... lo dudo mucho. Ahora mismo hay bots en el mercado con muchas opciones de configuración, diferentes estrategias y que llevan años de backtest y años de ejecución en producción.

Y como consejo (yo programé un bot algo más complejo por 2018), baja la frecuencia de muestreo, una hora es mucho tiempo y vas a dejar pasar muchas oportunidades. Yo miraría cuantas request puedes hacer a la API al día, vería cuantas operaciones puedes mantener a la vez y haría un cálculo de la frecuencia de tiempo mínima con la que no te comerías las request que te ofrecen al día.

Y otra cosa, los exchanges tienen mantenimientos, se colapsan en momentos puntuales, se cae tu propio servidor o internet... vamos que hay diferentes motivos por los que no te puede entrar una orden. Tienes que pensar un plan de contingencia en esas situaciones para no quedarte con operaciones colgadas.
VFoxtTroT
**Ciudadano Estelar**
#6
El problema es que no te puedes basar en máximos y mínimos.
</null>
*AutoBan Spam/Flood/Troll*
#7
Para considerarte un puto amo, no has hecho nada especial, intenta meterle machine learning al menos
yesusrr
ForoCoches: Miembro
#8
Ánimo shur ! A ver en qué queda la cosa
michaelManson
*AutoBan Spam/Flood/Troll*
#9
Cita de SrRabo
Soy nuevo en criptos pero me considero el puto amo de la programación, y aunque ya hace mucho tiempo que amortice este conocimiento, os cuento lo que estoy haciendo y me contáis si le veis futuro o no.

Cada hora estoy recogiendo el valor de todas las criptos de binance y guardándolo en un CSV.

Con esos datos cálculo el máximo, mínimo y media de los últimos 5 días.

Cada hora el bot analiza si hay algo 'interesante' para comprar o para vender. Entiende que es interesante si:

1. Mínimo/Máximo > 0.2 . Esa división da un valor entre 0 y 1
2. El valor de la cripto está aproximado al mínimo (para comprar) o al máximo (para vender).

El bot invierte hasta un 20% del USTD que dispone para comprar o un 20% de la crypto que quiere vender. Digo 'hasta' porque es variable en función del ratio mínimo/máximo.

Llevo una semana recopilando datos cada hora y he corrido un test con esos datos. Empezaba con 500 USDT y ha terminado con el equivalente a 567 USDT (y tiene en cuenta que al comprar se llevan una comisión del 2%).

Aún no lo tengo en producción, voy a esperar algunas semanas más para tener más datos y si todo va bien lo pondré a trabajar próximamente.
Yo tengo el mío que compra y escala. Me falta encontrar la estrategia adecuada. Había pensado usar elliot wave.

Un link que supongo que ha debes tener: https://github.com/binance-exchange/binance-java-api

Por cierto, tendrías que hacerlo todo por websock si lo haces directamente por api rest a las 1200 peticiones por minuto te empieza a dar problemas.
Con USDT una vez descartas las que tienes poca actividad te quedan casi 200 criptos con las que jugar.

Suerte
SrRabo
ForoCoches: Miembro
#10
Cita de k17
Me gustaría ver el código, lo piensas publicar?
Cita de michaelManson
Yo tengo el mío que compra y escala. Me falta encontrar la estrategia adecuada. Había pensado usar elliot wave.

Un link que supongo que ha debes tener: https://github.com/binance-exchange/binance-java-api

Por cierto, tendrías que hacerlo todo por websock si lo haces directamente por api rest a las 1200 peticiones por minuto te empieza a dar problemas.
Con USDT una vez descartas las que tienes poca actividad te quedan casi 200 criptos con las que jugar.

Suerte
Me lo había hecho por mi cuenta las comunicaciones REST, firma y eso. Lo de los websockets lo había visto pero lo tengo en la nube con Google cloud functions y pago por uso. Por el momento estoy haciendo pocas peticiones así que voy bien con rest.

Gracias por el aporte.
SrRabo
ForoCoches: Miembro
#11
Cita de </null>
Para considerarte un puto amo, no has hecho nada especial, intenta meterle machine learning al menos
ESO va a ser para la versión 2. Tensorflow y reinforcement learning.

Le tengo un poco de asco a Python y de momento la versión en java de tensorflow está muy verde.
josecash
ForoCoches: Usuario
#12
Cita de SrRabo
Soy nuevo en criptos pero me considero el puto amo de la programación, y aunque ya hace mucho tiempo que amortice este conocimiento, os cuento lo que estoy haciendo y me contáis si le veis futuro o no.

Cada hora estoy recogiendo el valor de todas las criptos de binance y guardándolo en un CSV.

Con esos datos cálculo el máximo, mínimo y media de los últimos 5 días.

Cada hora el bot analiza si hay algo 'interesante' para comprar o para vender. Entiende que es interesante si:

1. Mínimo/Máximo > 0.2 . Esa división da un valor entre 0 y 1
2. El valor de la cripto está aproximado al mínimo (para comprar) o al máximo (para vender).

El bot invierte hasta un 20% del USTD que dispone para comprar o un 20% de la crypto que quiere vender. Digo 'hasta' porque es variable en función del ratio mínimo/máximo.

Llevo una semana recopilando datos cada hora y he corrido un test con esos datos. Empezaba con 500 USDT y ha terminado con el equivalente a 567 USDT (y tiene en cuenta que al comprar se llevan una comisión del 2%).

Aún no lo tengo en producción, voy a esperar algunas semanas más para tener más datos y si todo va bien lo pondré a trabajar próximamente.

Qué API utilizas para precios? Yo he probado la de coinbase y coinMarket pero están muy limitadas
SrRabo
ForoCoches: Miembro
#13
Cita de vzk91
Futuro en cuanto a que ?

Si lo dices por si vemos futuro para que puedas tenerlo en ejecución y sacarle un rendimiento.... ¿Porqué no? Dependerá mucho de la estrategia que sigas.

Si lo dices por si vemos futuro para que puedas monetizarlo por licencias o venta... lo dudo mucho. Ahora mismo hay bots en el mercado con muchas opciones de configuración, diferentes estrategias y que llevan años de backtest y años de ejecución en producción.

Y como consejo (yo programé un bot algo más complejo por 2018), baja la frecuencia de muestreo, una hora es mucho tiempo y vas a dejar pasar muchas oportunidades. Yo miraría cuantas request puedes hacer a la API al día, vería cuantas operaciones puedes mantener a la vez y haría un cálculo de la frecuencia de tiempo mínima con la que no te comerías las request que te ofrecen al día.

Y otra cosa, los exchanges tienen mantenimientos, se colapsan en momentos puntuales, se cae tu propio servidor o internet... vamos que hay diferentes motivos por los que no te puede entrar una orden. Tienes que pensar un plan de contingencia en esas situaciones para no quedarte con operaciones colgadas.
De momento el bot es bastante rudimentario y me interesa que no haga muchas peticiones, pero ya veremos en un futuro.

Solo tendré downtime si binance está caído, pero no hay nada que pueda hacer para remediar esto. Mi app está en la nube así que no tengo que preocuparme de problemas técnicos propios.

Además pago una ridiculez, unos 2€/mes.
SrRabo
ForoCoches: Miembro
#14
Cita de josecash
Qué API utilizas para precios? Yo he probado la de coinbase y coinMarket pero están muy limitadas

Esto: https://api.binance.com/api/v3/ticker/price


Ademas no requiere ni de autenticacion.
SrRabo
ForoCoches: Miembro
#15
Cita de k17
Me gustaría ver el código, lo piensas publicar?

De momento no, pero se compone de lo siguiente.


Una funcion que recopila datos en CSV cada hora. Guardo datos de:
-Precios en el tiempo

-Mi wallet en el tiempo. Tengo varias ciptomonedas pero guardo los USTD que valen del momento en concreto.



Otra funcion que genera graficos de los CSV anteriores. Sobretodo me interesa ver el USTD en el tiempo de mi wallet para saber como lo esta haciendo el bot.



Y por ultimo el bot, que es otra funcion que de momento se ejecuta cada hora. Lee del CSV de los precios en el tiempo los 5 ultimos dias y si estima que hay algo que hacer, lo hace.


Todo esto lo tengo en Google Cloud como funciones y no tengo base de datos. Si usas base de datos te sale caro.
Soenn
Winter is coming
#16
Cita de josecash
Qué API utilizas para precios? Yo he probado la de coinbase y coinMarket pero están muy limitadas
y por que no hacer scrapping de coinmarketcap por ejemplo?
MerinoPepino
Hinjeniero d Motocultores
#17
Y si le añades la variable de RSI >80 o <25 ?
josecash
ForoCoches: Usuario
#18
Cita de SrRabo
Esto: https://api.binance.com/api/v3/ticker/price


Ademas no requiere ni de autenticacion.
No limita las peticiones?

Cita de Soenn
y por que no hacer scrapping de coinmarketcap por ejemplo?
No es mala idea.
SrRabo
ForoCoches: Miembro
#19
Cita de Soenn
y por que no hacer scrapping de coinmarketcap por ejemplo?
Ni idea de lo que es, puedes explicarlo?
Soenn
Winter is coming
#20
Cita de SrRabo
Ni idea de lo que es, puedes explicarlo?
data scrapping es hacer un bot que extraiga datos de una web de forma automatica.
Mirando el robots.txt de coinmarketcap, permiten hacer scrapping de toda la web asi que puedes legalmente coger los datos que quieras.
Yo uso la libreria beautiful soup, echale un ojo a ver si te vale.
Señor.X
.
#21
Scrapping básicamente es para quedarte con los datos que a ti te interesa de un sitio, ya sea porque la API esté muy limitada o porque directamente no tenga API.

Ya hay algún repo con tu idea, yo de momento prefiero saber en qué me meto y luego ya si eso automatizarlo
michaelManson
*AutoBan Spam/Flood/Troll*
#22
Cita de SrRabo
Me lo había hecho por mi cuenta las comunicaciones REST, firma y eso. Lo de los websockets lo había visto pero lo tengo en la nube con Google cloud functions y pago por uso. Por el momento estoy haciendo pocas peticiones así que voy bien con rest.

Gracias por el aporte.
Te veo perdido. Si realmente quieres analizar todas criptos tienes que tener websocket para recibir velas en tiempo real, oferta y demanda. Evitar usar ficheros csv y procurar tenerlo todo en memoria para que el análisis sea más rápido. Solo volcar a bd lo indispensable.
SrRabo
ForoCoches: Miembro
#23
Cita de michaelManson
Te veo perdido. Si realmente quieres analizar todas criptos tienes que tener websocket para recibir velas en tiempo real, oferta y demanda. Evitar usar ficheros csv y procurar tenerlo todo en memoria para que el análisis sea más rápido. Solo volcar a bd lo indispensable.
De momento funciona a 5 días vista. Simplemente elige momentos que son buenos para comprar o vender, pero no elige los mejores momentos. Para eso tendría que ser un bot muy agresivo.

No pretendo que saque tajada de cada subida y cada bajada que ocurre en minutos por el momento. Para eso tendré que usar machine learning, que es algo que tengo pensado para una segunda versión.
AzaFaixaPreta
ForoCoches: Usuario
#24
Ánimo shur... La idea no es mala y el profit que has expuesto está de locos. Fuerza.
Norrec
ForoCoches: Miembro
#25
Cita de SrRabo
Soy nuevo en criptos pero me considero el puto amo de la programación, y aunque ya hace mucho tiempo que amortice este conocimiento, os cuento lo que estoy haciendo y me contáis si le veis futuro o no.

Cada hora estoy recogiendo el valor de todas las criptos de binance y guardándolo en un CSV.

Con esos datos cálculo el máximo, mínimo y media de los últimos 5 días.

Cada hora el bot analiza si hay algo 'interesante' para comprar o para vender. Entiende que es interesante si:

1. Mínimo/Máximo > 0.2 . Esa división da un valor entre 0 y 1
2. El valor de la cripto está aproximado al mínimo (para comprar) o al máximo (para vender).

El bot invierte hasta un 20% del USTD que dispone para comprar o un 20% de la crypto que quiere vender. Digo 'hasta' porque es variable en función del ratio mínimo/máximo.

Llevo una semana recopilando datos cada hora y he corrido un test con esos datos. Empezaba con 500 USDT y ha terminado con el equivalente a 567 USDT (y tiene en cuenta que al comprar se llevan una comisión del 2%).

Aún no lo tengo en producción, voy a esperar algunas semanas más para tener más datos y si todo va bien lo pondré a trabajar próximamente.
Buena ostia te vas a dar, mira en youtube información referente al trading algoritmico, mínimo el algoritmo se prueba contra datos de 3 4 años para saber que es rentable.
Dellos!
Capo de los Foreti
#26
Cita de Norrec
Buena ostia te vas a dar, mira en youtube información referente al trading algoritmico, mínimo el algoritmo se prueba contra datos de 3 4 años para saber que es rentable.
Eso estaba pensando que haga un back testing comenzando en diciembre del 2018 y terminando en enero de 2020 a ver que le sale


Empresas gastandose millones en desarrollo de bots y el shur se piensa que con el algoritmo mas basico del mundo va a ganarle al mercado.
SrRabo
ForoCoches: Miembro
#27
Cita de Dellos!
Eso estaba pensando que haga un back testing comenzando en diciembre del 2018 y terminando en enero de 2020 a ver que le sale


Empresas gastandose millones en desarrollo de bots y el shur se piensa que con el algoritmo mas basico del mundo va a ganarle al mercado.
Ssbeis de donde puedo sacar los datos de cada hora de los últimos años?.

De momento estoy testeando con pocos datos ciertamente. Desde 2021-08-05 hasta hoy
Kumatetsu
Forocoches: AntiRlyGuy
#28
Yo tambien tengo un bot pero ni de coña le doy la posibilidad de comprar y vender por su propia cuenta, no quiero despertarme y que por un bug en el código o porque el mercado le haya hecho la 13/14 al bot me quede con el 50% porque empiece a hacer cosas extrañas.

Mi bot me avisa por Telegram de los cambios que tu mismo muestra en el OP pero a partir de más información y soy yo quien decide meterle o vender.
SrRabo
ForoCoches: Miembro
#29
Cita de Kumatetsu
Yo tambien tengo un bot pero ni de coña le doy la posibilidad de comprar y vender por su propia cuenta, no quiero despertarme y que por un bug en el código o porque el mercado le haya hecho la 13/14 al bot me quede con el 50% porque empiece a hacer cosas extrañas.

Mi bot me avisa por Telegram de los cambios que tu mismo muestra en el OP pero a partir de más información y soy yo quien decide meterle o vender.
Seguro que gasta menos que mi mujer
Kumatetsu
Forocoches: AntiRlyGuy
#30
Cita de SrRabo
Seguro que gasta menos que mi mujer
← A Criptomonedas