def generate_pairs_filter_xml(maxpairs=None): lock = threading.Lock() exchanges = u.getExchangesFromXml('exchanges.xml') assets = u.getAssetsFromXml('assets.xml') logger = loggerHandler('generate_pairs_filter_xml',log_path='log/') u.initExchangesConcurrency(exchanges,assets,logger) pairs = u.getMostQuotedPairs(exchanges,logger) root = etree.Element('PairsFilter') if maxpairs: if maxpairs>len(pairs): maxpairs = len(pairs) else: maxpairs = len(pairs) for pair in pairs[:maxpairs]: node = etree.SubElement(root,'Pair',name=pair[1]) str_xml = etree.tostring(root,pretty_print=True) outFile = open('pairs_filter.xml','w') outFile.write(str_xml.decode()) outFile.close() logger.close()
#test if an exchange name exists in list of exchanges def ExchangeExists(exchange_name,exchanges): for exchange in exchanges: if exchange.name.lower() == exchange_name.lower(): return True return False if __name__=="__main__": threads = [] time_start = time.time() exchanges = u.getExchangesFromXml('exchanges.xml') assets = u.getAssetsFromXml('assets.xml') pairs_filter = u.getPairsFilterFromXml('pairs_filter.xml') logger = loggerHandler('exchange_listener',log_path='log/') loggerExchangeInfo = loggerHandler('exchange_info',log_path='log/') loggerArbitrage = loggerHandler('exchange_arbitrage',log_path='log/') #init exchanges u.initExchangesConcurrency(exchanges,assets,logger) #delete pair we are not listening u.deletePairsUnlistened(exchanges,pairs_filter) #listen to exchanges threads = u.launchExchangeListenersWithPairsFilter(exchanges,pairs_filter,logger) time.sleep(3) print('Launching shell....') print('****************************************************************')
try: import exchange_utils as u from exchange import Exchange from logger_handler import loggerHandler from worker import PriceListenerWorker except ImportError: pass import threading import time #test if __name__=="__main__": logger = loggerHandler('test',log_path='log/') lock = threading.Lock() #getHttpResponse print('test getHttpResponse: ') print(u.getHttpResponse('https://btc-e.com/api/3/depth/btc_usd')) print('--------------------------------------') #getExchangesFromXml print('test getExchangesFromXml: ') exchanges = u.getExchangesFromXml('exchanges.xml') expected_len = 6 for exchange in exchanges: print(exchange) if len(exchanges)!=expected_len: raise Exception('Expected # exchanges is ' + str(expected_len) + ', only ' + str(len(exchanges)) + ' in the list')
msg = 'Arbitrages stats:\n' for arb in listArb: prct,pair,avg_profit,listExchCouple = arb msg += pair + ': ' + str(round(prct*100,2)) + '% of total arbs for $' + str(avg_profit) + ' avg profit ' for exchCouple in listExchCouple: exchFrom,exchTo = getExchFromCouple(exchCouple[1]) msg += '[$' + str(exchCouple[0]) + ' ' + exchFrom + ' to ' + exchTo + ']' msg += '\n' s = '\n########################################################\n' logger.info(s + msg + s,bPrint=False) return msg if __name__=='__main__': logger = loggerHandler('test_arbitrages_stats',log_path='log/') arbitrages = [[484.91,'btc-usd',[(444.3,'btc-e%%%okcoin'),(36.84,'btc-e%%%hitbtc'),(3.77,'btc-e%%%bter')]], [484.91,'ltc-usd',[(444.3,'btc-e%%%okcoin'),(36.84,'btc-e%%%hitbtc'),(3.77,'btc-e%%%bter')]], [384.91,'btc-usd',[(344.3,'btc-e%%%okcoin'),(36.84,'btc-e%%%hitbtc'),(3.77,'btc-e%%%bter')]], [384.91,'ltc-usd',[(344.3,'btc-e%%%okcoin'),(36.84,'btc-e%%%hitbtc'),(3.77,'btc-e%%%bter')]], [284.91,'btc-usd',[(184.91,'btc-e%%%okcoin'),(100.0,'btc-e%%%bter')]], [284.91,'ltc-usd',[(184.91,'btc-e%%%okcoin'),(100.0,'btc-e%%%bter')]]] log_arbitrages_stats(arbitrages,logger) logger.close()