GithubHelp home page GithubHelp logo

cryptosignal / crypto-signal Goto Github PK

View Code? Open in Web Editor NEW
4.7K 306.0 1.2K 7.45 MB

Github.com/CryptoSignal - Trading & Technical Analysis Bot - 4,100+ stars, 1,100+ forks

Home Page: https://www.linkedin.com/in/AbenezerMamo

License: MIT License

Python 98.72% Makefile 0.52% Dockerfile 0.76%
technical-analysis bittrex-api crypto bitcoin ethereum trading trading-bot crypto-signal gdax binance

crypto-signal's Introduction

CryptoSignal - #1 Quant Trading & Technical Analysis Bot - 4,100+ stars & 1,000+ forks https://github.com/CryptoSignal/Crypto-Signal

Development state: Beta (Code is stable, documentation is often lagging)

Join our community Discord channel! (2,100+ members)

Crypto Signals is a command line tool that automates your crypto currency Technical Analysis (TA). It is maintained by a community of traders, engineers, data scientists, PMs, & countless generous individuals who wish to democratize the equal & open access to the greatest wealth re-distribution experiment in human and monetary policy history - Bitcoin

Track over 500 coins across Bittrex, Binance, Bittrex, Bitfinex, Coinbase, Gemini and more!

(Subject to local financial regulations under the jurisdiction you and your financial activities are under. Marketing or enabling does not imply nor justify the facilitation or condoning of any activity - financial or otherwise. You assume and bare all risk. Be careful & act wisely.)

Technical Analysis Automated:

  • Momentum
  • Relative Strength Index (RSI)
  • Ichimoku Cloud (Leading Span A, Leading Span B, Conversion Line, Base Line)
  • Simple Moving Average
  • Exponential Moving Average
  • MACD
  • MFI
  • OBV
  • VWAP

Alerts:

  • SMS via Twilio
  • Email
  • Slack
  • Telegram
  • Discord

Features:

  • Modular code for easy trading strategy implementation
  • Easy install with Docker

You can build on top of this tool and implement algorithm trading and some machine learning models to experiment with predictive analysis.

Founded by Abenezer Mamo @ www.Mamo.io & www.linkedin.com/in/AbenezerMamo

Installing And Running

The commands listed below are intended to be run in a terminal.

  1. Install docker CE

  2. Create a config.yml file in your current directory. See the Configuring config.yml section below for customizing settings.

  3. In a terminal run the application. docker run --rm -v $PWD/config.yml:/app/config.yml shadowreaver/crypto-signal:master.

  4. When you want to update the application run docker pull shadowreaver/crypto-signal:master

Configuring config.yml

For a list of all possible options for config.yml and some example configurations look here

FAQ

Common Questions

Why does Tradingview show me different information than crypto-signal?

There are a number of reasons why the information crypto-signal provides could be different from tradingview and the truth is we have no way to be 100% certain of why the differences exist. Below are some things that affect the indicators that may differ between crypto-signal and tradingview.

  • tradingview will have more historical data and for some indicators this can make a big difference.

  • tradingview uses a rolling 15 minute timeframe which means that the data they are analyzing can be more recent than ours by a factor of minutes or hours depending on what candlestick timeframe you are using.

  • tradingview may collect data in a way that means the timeperiods we have may not line up with theirs, which can have an effect on the analysis. This seems unlikely to us, but stranger things have happened.

So if it doesn't match Tradingview how do you know your information is accurate?

Underpinning crypto-signal for most of our technical analysis is TA-Lib which is an open source technical analysis project started in 1999. This project has been used in a rather large number of technical analysis projects over the last two decades and is one of the most trusted open source libraries for analyzing candlestick data.

Liability

I am not your financial adviser, nor is this tool. Use this program as an educational tool, and nothing more. None of the contributors to this project are liable for any losses you may incur. Be wise and always do your own research.

We recommend you begin by learning the core principles used in traditional asset classes since they are less volatile & apply your knowledge in simulated trading before liquidating your dreams.

crypto-signal's People

Contributors

andreilys avatar aneesv avatar arjenbrandenburgh avatar cgmckeever avatar cristian-codorean avatar december-soul avatar decharel avatar derblub avatar jpstrydom avatar jrbartola avatar laliux avatar lukemilby avatar mkondel avatar randomshinichi avatar szollo avatar toastedtoast avatar tommuhm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

crypto-signal's Issues

Mail notifier not always working.

Traceback (most recent call last):
File "app.py", line 83, in
main()
File "app.py", line 61, in main
get_signal(coin_pairs, strategy_analyzer, notifier)
File "app.py", line 70, in get_signal
notifier.notify_all(message="{} is breaking out!".format(coin_pair))
File "/app/notification.py", line 53, in notify_all
self.notify_gmail(message)
File "/app/notification.py", line 75, in notify_gmail
self.gmail_client.notify(message)
File "/app/notifiers/gmail.py", line 31, in notify
self.smtp_handler.starttls()
File "/usr/local/lib/python3.6/smtplib.py", line 749, in starttls
self.ehlo_or_helo_if_needed()
File "/usr/local/lib/python3.6/smtplib.py", line 600, in ehlo_or_helo_if_needed
if not (200 <= self.ehlo()[0] <= 299):
File "/usr/local/lib/python3.6/smtplib.py", line 440, in ehlo
self.putcmd(self.ehlo_msg, name or self.local_hostname)
File "/usr/local/lib/python3.6/smtplib.py", line 367, in putcmd
self.send(str)
File "/usr/local/lib/python3.6/smtplib.py", line 359, in send
raise SMTPServerDisconnected('please run connect() first')
smtplib.SMTPServerDisconnected: please run connect() first

install issues

after make build which gives no errors I try to run the app using 'make run', unfortunately theres no .env folder generated, how can I do this / whats wrong with the install process?

docker run -it --rm --env-file .env crypto-signal
docker: open .env: no such file or directory.

cannot run

hello I get this error in terminal then I try to run:

Traceback (most recent call last): File "app.py", line 1, in <module> from bittrex import Bittrex File "/Users/deniz/Downloads/crypto-signal-master/bittrex.py", line 18, in <module> import requests ImportError: No module named requests

Multiple Issues

First of all thanks, this is a cool application, if only i could get it to work reliably!

every time i run the app i get different errors, is there something i am doing wrong?

Thanks,


BTC-ETH:        Breakout: None  RSI: 18.419935880075528
BTC-OMG:        Breakout: None  RSI: 21.50681271707181
BTC-GNT:        Breakout: None  RSI: 21.246537396121866
BTC-CVC:        Breakout: None  RSI: 46.46287403029179
Traceback (most recent call last):
  File "app.py", line 145, in <module>
    get_signal()
  File "app.py", line 140, in get_signal
    breakout = findBreakout(coin_pair=i, period=5, unit="fiveMin")
  File "app.py", line 132, in findBreakout
    historical_data = my_bittrex.getHistoricalData(coin_pair, period, unit)
  File "C:\PROJECTS\crypto-signal-master\bittrex.py", line 134, in getHistoricalData
    headers={"apisign": hmac.new(self.api_secret.encode(), request_url.encode(), hashlib.sha512).hexdigest()}
  File "C:\Program Files\Anaconda3\lib\site-packages\requests\models.py", line 885, in json
    return complexjson.loads(self.text, **kwargs)
  File "C:\Program Files\Anaconda3\lib\json\__init__.py", line 319, in loads
    return _default_decoder.decode(s)
  File "C:\Program Files\Anaconda3\lib\json\decoder.py", line 339, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Program Files\Anaconda3\lib\json\decoder.py", line 357, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

second time..


BTC-ETH:        Breakout: None  RSI: 53.86451742552738
BTC-OMG:        Breakout: None  RSI: 21.589990345141373
Traceback (most recent call last):
  File "app.py", line 145, in <module>
    get_signal()
  File "app.py", line 140, in get_signal
    breakout = findBreakout(coin_pair=i, period=5, unit="fiveMin")
  File "app.py", line 132, in findBreakout
    historical_data = my_bittrex.getHistoricalData(coin_pair, period, unit)
  File "C:\PROJECTS\crypto-signal-master\bittrex.py", line 137, in getHistoricalData
    return historicalData['result'][-period:]
TypeError: 'NoneType' object is not subscriptable

third time...

Traceback (most recent call last):
  File "app.py", line 145, in <module>
    get_signal()
  File "app.py", line 141, in get_signal
    rsi = calculateRSI(coin_pair=i, period=14, unit="thirtyMin")
  File "app.py", line 77, in calculateRSI
    relative_strength = (average_gain / average_loss)
ZeroDivisionError: float division by zero

Invalid market symbol - Bittrex

Trying to figure out why get_historical_data Is returning this error:

bittrex does not have market symbol BTC-XRP

historical_data = self.exchange_interface.get_historical_data( market_pair='BTC-XRP', period_count=period_count, time_unit=time_unit )

Their platform does indeed have that symbol. Am I missing something here?

bittrex does not have market symbol

Hi,

I am getting this error: What should I do ?

Details:

#Make sure that this matches bittrex format of BTC-XXX
MARKET_PAIRS=BTC-LTC, BTC-ETH
Successfully built f3e1d05ed345
Successfully tagged cryptosignal_app:latest
Creating cryptosignal_app_1 ...
Creating cryptosignal_app_1 ... done
Attaching to cryptosignal_app_1
app_1  | Traceback (most recent call last):
app_1  |   File "app.py", line 83, in <module>
app_1  |     main()
app_1  |   File "app.py", line 61, in main
app_1  |     get_signal(coin_pairs, strategy_analyzer, notifier)
app_1  |   File "app.py", line 65, in get_signal
app_1  |     rsi_value = strategy_analyzer.analyze_rsi(coin_pair)
app_1  |   File "/app/analysis.py", line 35, in analyze_rsi
app_1  |     time_unit=time_unit
app_1  |   File "/app/exchange.py", line 33, in get_historical_data
app_1  |     limit=period_count))
app_1  |   File "/usr/local/lib/python3.6/site-packages/ccxt/bittrex.py", line 384, in fetch_ohlcv
app_1  |     market = self.market(symbol)
app_1  |   File "/usr/local/lib/python3.6/site-packages/ccxt/base/exchange.py", line 1011, in market
app_1  |     raise ExchangeError(self.id + ' does not have market symbol ' + str(symbol))
app_1  | ccxt.base.errors.ExchangeError: bittrex does not have market symbol BTC-LTC

No module named pathlip.

C:\Python27\signal\app>python app.py
t File "app.py", line 8, in
from pathlib import Path
ImportError: No module named pathlib

Hey. Can you help.?
What is the problem ?

calculateSMA errors

Hi,
first of all thank you for giving this code to public.

I have converted your code to PHP because I'm expirienced on PHP coding.

I found some issues on calculateEMA function
a) constant = (2 / (period + 1)) not used in the function, have you missed to included it on summaring variables?

b) closing_prices[-1] is underfined, do you mean closing_prices[1]?

Also I have a question about getHistoricalData function, you return historicalData['result'][-period:]

I don't actually understand in PY what you mean (minus-) period and : . I have found that is substracting a part of array, can you explain the minus?
I have "transcoded" to PHP to return return array_slice(historicalData['result'],$period);

Raw Result of historicalData['result']

Array
(
    [0] => Array
        (
            [O] => 0.051085
            [H] => 0.05120246
            [L] => 0.051005
            [C] => 0.05120246
            [V] => 478.1481531
            [T] => 2017-10-27T21:30:00
            [BV] => 24.42278885
        )

    [1] => Array
        (
            [O] => 0.05120201
            [H] => 0.05144221
            [L] => 0.051202
            [C] => 0.05143804
            [V] => 649.60716864
            [T] => 2017-10-27T22:00:00
            [BV] => 33.28065136
        )

    [2] => Array
        (
            [O] => 0.05139
            [H] => 0.05151505
            [L] => 0.05128999
            [C] => 0.051295
            [V] => 404.79272826
            [T] => 2017-10-27T22:30:00
            [BV] => 20.8108504
        )
)

LinkedIn won't let me message you!

Apparently without a pro account, LinkedIn won't let me friend request or message you.

This is Dan, from ConsenSys & MetaMask, we met at CalHacks on Friday night. I hope you had fun at the hackathon. Maybe you won?

Anyways, send me an email or something, so we have a communication channel. [email protected]

secret.json

where is that secret.json file??
where can i get BITTREX_API_KEY,BITTREX_SECRET,TWILIO_API_KEY,TWILIO_SECRET??
{
"bittrex_key" : "BITTREX_API_KEY",
"bittrex_secret" : "BITTREX_SECRET",
"twilio_key": "TWILIO_API_KEY",
"twilio_secret": "TWILIO_SECRET",
"twilio_number": "TWILIO_PHONE_NUMBER",
"my_number": "YOUR_PHONE_NUMBER"
}

Getting the RSI curve

Hello, I would like to ask you all if you have any ideas on how we can use the calculateRSI function to calculate the RSI of a few minutes ago. For example, I want to get the 30 min RSI of 5mins earlier and get the RSI of now, to find out if it is curving up or down.

socket.timeout: The read operation timed out

Hi guys,

I'm getting alot of time-out and then de app stops:

Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/urllib3/connectionpool.py", line 387, in _make_request
six.raise_from(e, None)
File "", line 2, in raise_from
File "/usr/local/lib/python3.6/site-packages/urllib3/connectionpool.py", line 383, in _make_request
httplib_response = conn.getresponse()
File "/usr/local/lib/python3.6/http/client.py", line 1331, in getresponse
response.begin()
File "/usr/local/lib/python3.6/http/client.py", line 297, in begin
version, status, reason = self._read_status()
File "/usr/local/lib/python3.6/http/client.py", line 258, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "/usr/local/lib/python3.6/socket.py", line 586, in readinto
return self._sock.recv_into(b)
File "/usr/local/lib/python3.6/site-packages/urllib3/contrib/pyopenssl.py", line 294, in recv_into
raise timeout('The read operation timed out')
socket.timeout: The read operation timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/requests/adapters.py", line 440, in send
timeout=timeout
File "/usr/local/lib/python3.6/site-packages/urllib3/connectionpool.py", line 639, in urlopen
_stacktrace=sys.exc_info()[2])
File "/usr/local/lib/python3.6/site-packages/urllib3/util/retry.py", line 357, in increment
raise six.reraise(type(error), error, _stacktrace)
File "/usr/local/lib/python3.6/site-packages/urllib3/packages/six.py", line 686, in reraise
raise value
File "/usr/local/lib/python3.6/site-packages/urllib3/connectionpool.py", line 601, in urlopen
chunked=chunked)
File "/usr/local/lib/python3.6/site-packages/urllib3/connectionpool.py", line 389, in _make_request
self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
File "/usr/local/lib/python3.6/site-packages/urllib3/connectionpool.py", line 309, in _raise_timeout
raise ReadTimeoutError(self, url, "Read timed out. (read timeout=%s)" % timeout_value)
urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='bittrex.com', port=443): Read timed out. (read timeout=10)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/ccxt/base/exchange.py", line 342, in fetch_requests
proxies=self.proxies
File "/usr/local/lib/python3.6/site-packages/requests/sessions.py", line 508, in request
resp = self.send(prep, **send_kwargs)
File "/usr/local/lib/python3.6/site-packages/requests/sessions.py", line 618, in send
r = adapter.send(request, **kwargs)
File "/usr/local/lib/python3.6/site-packages/requests/adapters.py", line 521, in send
raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='bittrex.com', port=443): Read timed out. (read timeout=10)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "app.py", line 83, in
main()
File "app.py", line 61, in main
get_signal(coin_pairs, strategy_analyzer, notifier)
File "app.py", line 68, in get_signal
ichimoku_span_a, ichimoku_span_b = strategy_analyzer.analyze_ichimoku_cloud(coin_pair)
File "/app/analysis.py", line 56, in analyze_ichimoku_cloud
time_unit='1d'
File "/app/exchange.py", line 33, in get_historical_data
limit=period_count))
File "/usr/local/lib/python3.6/site-packages/ccxt/bittrex.py", line 389, in fetch_ohlcv
response = self.v2GetMarketGetTicks(self.extend(request, params))
File "/usr/local/lib/python3.6/site-packages/ccxt/bittrex.py", line 618, in request
response = self.fetch2(path, api, method, params, headers, body)
File "/usr/local/lib/python3.6/site-packages/ccxt/base/exchange.py", line 290, in fetch2
return self.fetch_requests(request['url'], request['method'], request['headers'], request['body'])
File "/usr/local/lib/python3.6/site-packages/ccxt/base/exchange.py", line 348, in fetch_requests
raise RequestTimeout(' '.join([self.id, method, url, 'request timeout']))
ccxt.base.errors.RequestTimeout: bittrex GET https://bittrex.com/api/v2.0/pub/market/GetTicks?tickInterval=day&marketName=BTC-STEEM request timeout

issues

I kind of ran a bot, and he even in the console sends information about the coins. A couple of questions, how many coins does the bot analyze? We run the app.py file, and we do not touch the bittrex.py file, right? The program shows the pairs in the console window, is this correct? In advance, I apologize for the questions. I'm completely new to programming.

Defined market pairs do not seem to work

The updated market_pairs i'd like to monitor within app/default-config.json, does not seem to work.
The line I put in:
"market_pairs": ["BTC/ETH" , "1ST/BTC"]

still all pairs are scanned

please advise

Build Failed on Windows

Any idea why I might be getting this?

PS C:\Users\Username\Documents\cryptosignals\crypto-signal> docker build -t cs .
Sending build context to Docker daemon  3.836MB
Step 1/5 : FROM python:3.6
 ---> c1e459c00dc3
Step 2/5 : ADD app/ /app
 ---> Using cache
 ---> dd3131901afb
Step 3/5 : WORKDIR /app
 ---> Using cache
 ---> d401ea36bbfb
Step 4/5 : RUN pip install -r requirements.txt
 ---> Running in 238d1cd4f7af
Collecting asn1crypto==0.22.0 (from -r requirements.txt (line 1))
  Retrying (Retry(total=4, connect=None, read=None, redirect=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='pypi.python.org', port=443): Read timed out. (read timeout=15)",)': /simple/asn1crypto/
  Retrying (Retry(total=3, connect=None, read=None, redirect=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='pypi.python.org', port=443): Read timed out. (read timeout=15)",)': /simple/asn1crypto/
  Retrying (Retry(total=2, connect=None, read=None, redirect=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='pypi.python.org', port=443): Read timed out. (read timeout=15)",)': /simple/asn1crypto/
  Retrying (Retry(total=1, connect=None, read=None, redirect=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='pypi.python.org', port=443): Read timed out. (read timeout=15)",)': /simple/asn1crypto/
  Retrying (Retry(total=0, connect=None, read=None, redirect=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='pypi.python.org', port=443): Read timed out. (read timeout=15)",)': /simple/asn1crypto/
  Could not find a version that satisfies the requirement asn1crypto==0.22.0 (from -r requirements.txt (line 1)) (from versions: )
No matching distribution found for asn1crypto==0.22.0 (from -r requirements.txt (line 1))
The command '/bin/sh -c pip install -r requirements.txt' returned a non-zero code: 1

Docker is Version 17.12.0-ce-rc4-win44 (14896), running on Windows 10. This is the first time I've ever tried to 'build' an image, but I've pulled and run other images successfully before.

Not able to execute the script

Hi, Thanks for creating such a technical analysis.
I am unable to execute the script. README doesn't have the steps to execute the script.

bin/python ../app.py
Traceback (most recent call last):
File "../app.py", line 5, in
from twilio.rest import Client
ImportError: No module named twilio.rest

bin/pip install twilio
-bash: bin/pip: /Users/Mamo/Desktop/crypto-signal/env/bin/python: bad interpreter: No such file or directory

grep -r Mamo .
./bin/activate:VIRTUAL_ENV="/Users/Mamo/Desktop/crypto-signal/env"
./bin/activate.csh:setenv VIRTUAL_ENV "/Users/Mamo/Desktop/crypto-signal/env"
./bin/activate.fish:set -gx VIRTUAL_ENV "/Users/Mamo/Desktop/crypto-signal/env"
./bin/chardetect:#!/Users/Mamo/Desktop/crypto-signal/env/bin/python
./bin/easy_install:#!/Users/Mamo/Desktop/crypto-signal/env/bin/python
./bin/easy_install-2.7:#!/Users/Mamo/Desktop/crypto-signal/env/bin/python
./bin/pip:#!/Users/Mamo/Desktop/crypto-signal/env/bin/python
./bin/pip2:#!/Users/Mamo/Desktop/crypto-signal/env/bin/python
./bin/pip2.7:#!/Users/Mamo/Desktop/crypto-signal/env/bin/python
./bin/python-config:#!/Users/Mamo/Desktop/crypto-signal/env/bin/python
./bin/wheel:#!/Users/Mamo/Desktop/crypto-signal/env/bin/python
Binary file ./lib/python2.7/distutils/init.pyc matches
Binary file ./lib/python2.7/fnmatch.pyc matches
./lib/python2.7/site-packages/pip-9.0.1.dist-info/RECORD:/Users/Mamo/Desktop/crypto-signal/env/bin/pip,sha256=r13MeYbKxv_jJRBJpEUD1wPa6i5XEM3i2BIkvWFAfbA,237
./lib/python2.7/site-packages/pip-9.0.1.dist-info/RECORD:/Users/Mamo/Desktop/crypto-signal/env/bin/pip2,sha256=r13MeYbKxv_jJRBJpEUD1wPa6i5XEM3i2BIkvWFAfbA,237
./lib/python2.7/site-packages/pip-9.0.1.dist-info/RECORD:/Users/Mamo/Desktop/crypto-signal/env/bin/pip2.7,sha256=r13MeYbKxv_jJRBJpEUD1wPa6i5XEM3i2BIkvWFAfbA,237
./lib/python2.7/site-packages/pip-9.0.1.dist-info/RECORD:/Users/Mamo/Desktop/crypto-signal/env/lib/python2.7/site-packages/pip-9.0.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
./lib/python2.7/site-packages/setuptools-36.5.0.dist-info/RECORD:/Users/Mamo/Desktop/crypto-signal/env/bin/easy_install,sha256=lN7Gzsg-FasNmVvS9uvHjUzwCgKxJ9Q4UEd3a4tU3Hs,265
./lib/python2.7/site-packages/setuptools-36.5.0.dist-info/RECORD:/Users/Mamo/Desktop/crypto-signal/env/bin/easy_install-2.7,sha256=lN7Gzsg-FasNmVvS9uvHjUzwCgKxJ9Q4UEd3a4tU3Hs,265
./lib/python2.7/site-packages/setuptools-36.5.0.dist-info/RECORD:/Users/Mamo/Desktop/crypto-signal/env/lib/python2.7/site-packages/setuptools-36.5.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
./lib/python2.7/site-packages/wheel-0.30.0.dist-info/RECORD:/Users/Mamo/Desktop/crypto-signal/env/bin/wheel,sha256=F7UXKQdMLDVmEBgOF_E_eaGoD2TBlc__eALGxnt0lK0,244
./lib/python2.7/site-packages/wheel-0.30.0.dist-info/RECORD:/Users/Mamo/Desktop/crypto-signal/env/lib/python2.7/site-packages/wheel-0.30.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4

RSI is wrong?

seems to me the RSI displayed is very wrong from bittrex charts. I changed unit to thirtyMin to match it but its still off.

ccxt

Would be cool if ccxt was used, this way you could support most, if not all, exchanges and pair at once.

[Enhancement] Asynchronous ccxt

I have experience writing asynchronous code and was wondering if you guys would allow me to implement asynchronous processing w/ ccxt.

RSI is off on 5M and 30M

RSI is off on every pair, on both the 5m and 30m calculations (haven't checked the other timeframes).

I am comparing the data with TradingView and Cryptowat.ch.

Not working with binance

Traceback (most recent call last):
File "/usr/local/lib/python3.6/dist-packages/ccxt/base/exchange.py", line 345, in fetch_requests
response.raise_for_status()
File "/usr/local/lib/python3.6/dist-packages/requests/models.py", line 935, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 400 Client Error: Bad Request for url: https://api.binance.com/api/v1/klines?symbol=ETHBTC&interval=1d&limit=500&startTime=1507246156330.2341 << Remove decimals and will work!

Help setting a symbol

I changed "market_pairs": [] at "default-config.json" to "market_pairs": ["BSD/BTC"] and a lot of combinations of symbols, with double q and without it, etc.. I can't get it working with just 1 symbol..
The error using the combination above:
Traceback (most recent call last):
File "app.py", line 31, in
main()
File "app.py", line 27, in main
behaviour.run(settings['market_pairs'])
File "/root/Downloads/crypto-signal-master/app/behaviours/default.py", line 16, in run
market_data = self.exchange_interface.get_symbol_markets(market_pairs)
File "/root/Downloads/crypto-signal-master/app/exchange.py", line 106, in get_symbol_markets
market_pair]
KeyError: 'BSD/BTC'

Binance

Does it work with binance? Made a short test and changed bittrex in "exchanges" but I still receive USDT/BTC and such which isn't available on binance. I guess it would have to be implemented first?

Breakout algorithm

Hey,
Great job on the signal. How sure are you of your breakout algo? Seems really simplistic i.e. does not take into consideration channels, triangles, etc. Do you see this being a viable signal? Sorry for the noobish questions.

Coercing Unicode

File "app.py", line 21, in <module> with open(SECRETS_FILE_PATH) as secrets_file: TypeError: coercing to Unicode: need string or buffer, PosixPath found

Fixed by changing to:
with open(str(SECRETS_FILE_PATH)) as secrets_file:

1 Week and 1 Month Timescales Unavailable

Seems like Bittrex API no longer supports 1 week and 1 month historical prices.

Error:

return historicalData['result'][-period:]
TypeError: 'NoneType' object is not subscriptable

Not providing the integram url fails running the app

$ docker-compose up
Starting cryptosignal_app_1 ... done
Attaching to cryptosignal_app_1
app_1  | Traceback (most recent call last):
app_1  |   File "app.py", line 31, in <module>
app_1  |     main()
app_1  |   File "app.py", line 27, in main
app_1  |     behaviour.run(settings['market_pairs'])
app_1  |   File "/app/behaviours/default.py", line 20, in run
app_1  |     self.test_strategies(market_data)
app_1  |   File "/app/behaviours/default.py", line 67, in test_strategies
app_1  |     message="{} is breaking out!".format(market_pair)
app_1  |   File "/app/notification.py", line 61, in notify_all
app_1  |     self.notify_integram(message)
app_1  |   File "/app/notification.py", line 90, in notify_integram
app_1  |     self.integram_client.notify(message)
app_1  |   File "/app/notifiers/integram_client.py", line 18, in notify
app_1  |     req = urllib.request.Request(self.url)
app_1  |   File "/usr/local/lib/python3.6/urllib/request.py", line 329, in __init__
app_1  |     self.full_url = url
app_1  |   File "/usr/local/lib/python3.6/urllib/request.py", line 355, in full_url
app_1  |     self._parse()
app_1  |   File "/usr/local/lib/python3.6/urllib/request.py", line 384, in _parse
app_1  |     raise ValueError("unknown url type: %r" % self.full_url)
app_1  | ValueError: unknown url type: 'INTEGRAM_URL'

FYI I also requested a docker image in the Integram repository so we can use that in our docker-compose setup. requilence/integram#52

Is there any way to run without integram support for now?

Webclient

It would be great if the web client can be built using React. I would be able to contribute. I have seen some great projects already which can do candle graphs etc to visualize things in react.

Can't get it to run

Thanks for creating this.
I'm new to python. What is that I have to do to run it? I've tried the following:

python app.py

Traceback (most recent call last):
  File "crypto-signal-master/app.py", line 1, in <module>
    from bittrex import Bittrex
  File "/Users/bernat/Desktop/crypto-signal-master/bittrex.py", line 18, in <module>
    import requests
ImportError: No module named requests

python crypto-signal-master

/usr/bin/python: can't find '__main__' module in 'crypto-signal-master'

ImportError: No module named request

Hi all

Great project!

I've cloned it to my Windows machine, installed requirements, configured .env (bittrex + integram) and default-config.json and when I try to run it locally, I'll get following error:

Traceback (most recent call last):
  File ".\app.py", line 12, in <module>
    from behaviour import Behaviour
  File "...\app\behaviour.py", line 5, in <module>
    from notification import Notifier
  File "...\app\notification.py", line 10, in <module>
    from notifiers.integram_client import IntegramNotifier
  File "...\app\notifiers\integram_client.py", line 2, in <module>
    import urllib.request
ImportError: No module named request

Thank you!

script keeps crashing, how to fix this error?

This is the message.

Traceback (most recent call last):
File "/home/osboxes/crypto-signal/app.py", line 232, in
get_signal()
File "/home/osboxes/crypto-signal/app.py", line 183, in get_signal
breakout = findBreakout(coin_pair=i, period=5, unit="fiveMin")
File "/home/osboxes/crypto-signal/app.py", line 157, in findBreakout
rsi = calculateRSI(coin_pair=i, period=14, unit="thirtyMin")
File "/home/osboxes/crypto-signal/app.py", line 63, in calculateRSI
closing_prices = getClosingPrices(coin_pair, period * 3, unit)
File "/home/osboxes/crypto-signal/app.py", line 31, in getClosingPrices
historical_data = my_bittrex.getHistoricalData(coin_pair, period, unit)
File "/home/osboxes/crypto-signal/bittrex.py", line 137, in getHistoricalData
return historicalData['result'][-period:]
TypeError: 'NoneType' object has no attribute 'getitem'

Any suggestions? Nice script!

RSI gives different result with Bittrex

I try to put period from Bittrex to 18 to match strategy from the source code but it still gives the different result.

So I make another test is to increase the period to 100 from source code and Bittrex, what I expect is RSI should around 45~55 but it doesn't.

Feature Request: Trailing Stop Losses

Writing feature requests and then connecting them to Github Project cards. This one is for creating stop losses within the bot.

Context:
When entering a position into a coin that's increasing in BTC value, it's hard to not ride the "FOMO" wave and stay in the position for too long.

In some instances, some coins pump really hard and dump with a 50% correction. Being apart of the pump is great - not so much for the dump. This is where stop losses can come in.

Example Use Case:
Imagine you entered a BTC/NEO position at 630k sats and it started increasing to 650k sats. The price will go up and down, so it's best to make sure we leave the position if it gets below 640k sats. Maybe based on previous supports (this can be inferred with Ichmoku Cloud), we can determine that 637k is the best price to leave the position so we're not being prematurely stopped out.

To break that down, imagine the following variables over time

  • Start
    Trade: BTC/NEO
    Entry Position: 650k sats
    Initial Stop Loss (5%): 617.5k sats

  • Increase by 5% from original entry
    Current Position: 682.5k sats
    Current Stop Loss (2.5%): 665.435 sats

  • Decrease by 2% from previous position
    Current Position: 668.85
    Current Stop Loss (taken from previous b/c of drop): 665.435 sats

At this point, we should hold the stop loss to be valid so we're still taking a profit. If we want to re-enter the position, we can enter again at a certain percentage above our previous stop loss (to make sure it's not a fake pump)

The goal of trailing stop losses is to let you lock in your gains instead of just riding the wave like a normal investor #bagolding

Rules:

  • Initial stop loss should be 5% below initial Entry Position
  • As price begins to move up, the trailing stop loss should be 2.5% below the current position
  • Based on how fast the price action is happening, the trailing stop loss can be dynamic +- 1.5%

Significance:
It's difficult to predict price movements in crypto but it's easy to ride the waves, as long as you're able to enter and leave cleanly. Beyond any trading strategy, knowing when to leave a trade before a major loss occurs is critical.

Share feedback/thoughts/questions below!

/env shouldn't be part of the project

Instead of putting your env into the project, you should consider adding a requirements.txt to the project root instead, so people can build their own env with all the required packages.

ImportError: No module named rest

Hi guys,

I tried to run it on a raspberry pi.

following error message

Traceback (most recent call last):
File "app.py", line 14, in
from notification import Notifier
File "/crypto-signal-master/app/notification.py", line 6, in
from notifiers.twilio import TwilioNotifier
File "/crypto-signal-master/app/notifiers/twilio.py", line 7, in
ImportError: No module named rest

I just installed all requirements, it looks like a problem with twilio,
http://twilio-python.readthedocs.io/en/latest/faq.html

Any idea or thoughts?

Many thanks in advance.

Documentation

Hi there, how does this bot exactly work? When i start it, it goes through my currency pairs (i entered all btc/currency pairs that are availabe in bittrex). How do i read the results? It scans every currency and then starts over. Is there supposed to be some extra signal when the bot suggests to take action? Or do i have to read the lines and consider what to make out of it? Also, gmail notification does not work correctly, it only sends 1 mail and then the tool crashes back to command line.

purely Binance user

Hi,

I'm a Binance user, don't have Bittrex account, and seems it's no longer open for register.
Any chance or how to only use Binance API for this Application in .env file?
Also, what's is following?
TWILIO_REQUIRED_KEY=TWILIO_API_KEY
TWILIO_REQUIRED_SECRET=TWILIO_SECRET
TWILIO_REQUIRED_PHONE_NUMBER=TWILIO_PHONE_NUMBER
TWILIO_REQUIRED_MY_NUMBER=YOUR_PHONE_NUMBER

with GMAIL information, I've put in correct value, however, it returns me:
smtplib.SMTPAuthenticationError: (534, b'5.7.14 <https://accounts.google.com/signin/continue?sarp=1&scc=1&plt=AKgnsbsw\n5.7.14 Zevx3WtOnX8Ak3dOIi-3yKnVE07SN5-GW8CtRhLEUh4jAeR5Xz8L8LaaqTQi61VFPUVbFx\n5.7.14 8q6XNQyzyIOb7qX8eHRTaCVRI0cOsDqOQH5R1HJ-bKIpcYNaA8Hq0cMI5EqO77S-WwHxUv\n5.7.14 7dRLFYEL4CPKB2IA0fTcHYdrFCYugKVZkzm43iz1OgHkVfK53L_WESKvE_RVJJQpemXk30\n5.7.14 OIv2H2Ewg2-D_ID59ZiGInARbOjcs> Please log in via your web browser and\n5.7.14 then try again.\n5.7.14 Learn more at\n5.7.14 https://support.google.com/mail/answer/78754 b8sm3600499pgt.14 - gsmtp')

Not too sure how to progress further.

Thanks
River

Doesn't execute

python app.py

Traceback (most recent call last):
File "app.py", line 9, in
secrets = json.load(secrets_file)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/init.py", line 290, in load
**kw)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/init.py", line 338, in loads
return _default_decoder.decode(s)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 365, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 381, in raw_decode
obj, end = self.scan_once(s, idx)
ValueError: Expecting property name: line 4 column 1 (char 117)

Could you please advise, thnx

entering pairs in to the default-config.json

i am trying to enter the pair list in to the json file like this

"settings": {
"app_mode": "user",
"symbol_pairs": "USDT/ETH",
"loglevel": "",
"update_interval": 300,
"selected_task": "default"
},

but when i run with docker i get

Traceback (most recent call last):
File "app.py", line 43, in
main()
File "app.py", line 40, in main
notifier)
File "/app/behaviours/default.py", line 9, in run
market_data = exchange_interface.get_symbol_markets(symbol_pairs)
File "/app/exchange.py", line 70, in get_symbol_markets
symbol_markets[exchange.id][symbol_pair] = exchange.markets[symbol_pair]
KeyError: 'U'

wonder if anyone can see the obvious mistake i am probably making!!!

thanks

email notification

it's running fine for me, thank you.

Can an option be added to send the alerts via email please?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.