i = """
Install instructions:
run "pip install requests python-bittrex tweepy"
edit config below
run script
"""
# config - change this
twitter_access_token = "" # from https://apps.twitter.com/app/new
twitter_secret = "" # from https://apps.twitter.com/app/new
twitter_consumer_key = "" # twitter -> Keys and Access Tokens -> Your Access Token
twitter_consumer_secret = "" # twitter -> Keys and Access Tokens -> Your Access Token
bittrex_key = "" # from bittres
bittrex_secret = "" # from bittrex
target_user = 961445378 # mcafee. probably shouldn't change.
# end config - don't change below this
import json
import time
import sys
from bittrex.bittrex import Bittrex
from tweepy import OAuthHandler
from tweepy import Stream
from tweepy.streaming import StreamListener
if True in [not x for x in [twitter_access_token, twitter_secret, twitter_consumer_key, twitter_consumer_secret, bittrex_key, bittrex_secret, target_user]]:
print "Please edit config"
print i
sys.exit(1)
bapi = Bittrex(bittrex_key, bittrex_secret)
markets = dict([(m['MarketCurrency'], m['MarketCurrencyLong']) for m in bapi.get_markets()['result'] if
m['BaseCurrency'] == u'BTC'])
print markets
balance = 0
def updateBalance():
global balance
balance = bapi.get_balance("BTC")['result']['Available']
print balance, "BTC"
updateBalance()
def doOrder(abbr):
print "DoOrder", abbr
global balance
buffer = balance * 0.01
balance -= buffer
market = "BTC-%s" % (abbr)
print "Market", market
time.sleep(1) # Avoid cloudflare caching responses
ask = float(bapi.get_ticker(market)['result']['Ask'])
limit = ask * 1.1
print "BUY", float(balance) / float(limit), abbr, "@", limit
time.sleep(1) # Avoid cloudflare caching responses
o = bapi.buy_limit(market, float(balance) / float(limit), limit)
print o
orderuuid = o['result']['uuid']
print "created order", orderuuid
class CryptocurrencyListener(StreamListener):
def on_data(self, data):
data = json.loads(data)
if int(data['user']['id']) == int(target_user):
text = data['text']
for abbr, name in markets.iteritems():
if abbr in text:
print "Found coin mention", abbr
doOrder(abbr)
return True
def on_error(self, status):
print status
if __name__ == '__main__':
# This handles Twitter authentication and connection to Twitter Streaming API
l = CryptocurrencyListener()
auth = OAuthHandler(twitter_consumer_key, twitter_consumer_secret)
auth.set_access_token(twitter_access_token, twitter_secret)
stream = Stream(auth, l)
print "Waiting for tweets from", target_user
stream.filter(follow=[unicode(target_user)])