diff --git a/Cryptocoin.py b/Cryptocoin.py index 41e4d19..43afe70 100644 --- a/Cryptocoin.py +++ b/Cryptocoin.py @@ -33,6 +33,22 @@ class Cryptocoin(object): b = (sum_y - a * sum_x) / length return a, b + #Relative Strength Index (RSI) + def rsi(self, datapoints): + totalGain = 0.0001 + totalLoss = 0.0001 + n_deltas = len(datapoints)-1 + + for x in range(0, n_deltas): + delta = datapoints[x+1] - datapoints[x] + if delta > 0: + totalGain += delta + else: + totalLoss -= delta #losses should also be positive + + RS = (totalGain / n_deltas) / (totalLoss / n_deltas) + return 100 - ( 100 / (1 + RS) ) + #get the stability based on the standard deviation #the closer to 1, the better. (can be < 0, by the way. sue me.) def getCoinStability(self, history): @@ -206,6 +222,8 @@ class Cryptocoin(object): Of vraag gewoon advies in het algemeen: !coinadvice (Over deze laatste optie moet soms even nagedacht worden) + Stroopwafel en zijn development team nemen geen verantwoordelijkheid voor + eventuele financiele schade en verwoeste levens. """ #Geen specieke coin? Doe random. @@ -215,23 +233,60 @@ class Cryptocoin(object): coinId = coinId.upper() - growPercentage, stability, dummy = self.analyseCoin(coinId) + growPercentage, coinStability, coinHistory = self.analyseCoin(coinId) + coinRsi = self.rsi(coinHistory) + #TODO, get more recent data to feed the RSI - if (growPercentage < -0.1): - yield from ctx.channel.send("Sell! Sell! Sell! " + coinId + " gaat erg slecht.") - elif (growPercentage < -0.03): - yield from ctx.channel.send("Als je " + coinId + " hebt, verkopen die handel.") + message = "" + + if (growPercentage < -0.04): + if (coinRsi > 70): + message = "Sell! Sell! Sell! Aan " + coinId + " heb je niks meer." + elif (coinStability < 0.3): + message = coinId + " takelt op lange termijn af en is instabiel. Net als je moeder." + elif (coinRsi < 30): + message = "Op de lange termijn is " + coinId + " waardeloos, maar wacht nog even met verkopen." + else: + message = "Als je " + coinId + " hebt, verkopen die handel. Daar heb je op de lange termijn niks aan." elif (growPercentage < 0): - yield from ctx.channel.send("Het gaat niet zo goed met " + coinId + ".") - elif (growPercentage < 0.015): - yield from ctx.channel.send(coinId + " lijkt redelijk stabiel.") - elif (growPercentage < 0.035): - yield from ctx.channel.send("Tijd om " + coinId + " te kopen.") - elif (growPercentage < 0.06): - yield from ctx.channel.send(coinId + " groeit snel") - elif (growPercentage < 0.1): - yield from ctx.channel.send("Het gaat heel goed met " + coinId + "!") - else: - yield from ctx.channel.send("To the moon! " + coinId + " is niet meer te stoppen!") - + message = coinId + " gaat geen winnaar worden. " + if (coinRsi > 70): + message += "Ditchen." + elif (coinRsi < 30): + message += "Maar hou hem nog even vast." + elif (growPercentage < 0.025): + if (coinStability > 0.6): + message = coinId + " lijkt redelijk stabiel. " + if (coinRsi < 30): + message += "Bovendien een goed moment om te kopen." + elif (coinRsi > 70): + message = "Ik zou " + coinId + " verkopen." + else: + message = "Niks bijzonders, die " + coinId + elif (growPercentage < 0.08): + if (coinStability > 0.45): + message = coinId + " is een stabiele groeier. " + if (coinRsi < 30): + message += "Nu kopen!" + elif (coinStability < 0.2): + message = coinId + " groeit lekker, maar is instabiel." + else: + message = coinId + " is aan het groeien... " + if (coinRsi > 70): + message += "Hij lijkt overbought, dus je kan nu verkopen." + else: + if (coinRsi < 30 and coinStability > 0.4): + message = "TO THE MOON! Nu " + coinId + " kopen!!" + elif (coinStability > 0.7): + message = coinId + " is op de lange termijn erg sterk en stabiel!" + elif (coinRsi < 30): + message = "Ik raad sterk aan om " + coinId + " te kopen." + elif (coinRsi < 70): + message = coinId + " groeit wel erg hard. Wellicht overbought?" + else: + message = coinId + " gaat toenemen in waarde... " + if (coinStability < 0.3): + message += "Denk ik?" + + yield from ctx.channel.send(message) \ No newline at end of file