print('start @', ut.get_time()) # generated by optimization future_candles_length = 15 min_volume_btc = 0 minutes = 1 datapoints_trailing = 0 drops_to_collect = 2 do_print = True # update symbol list ut.update_symbol_list() symbols = ut.pickle_read( '/home/ec2-user/environment/botfarming/Development/binance_btc_symbols.pklz' ) symbols_filtered, symbol_list = ut2.get_trimmed_symbols( symbols, min_volume_btc) # save latest 24 hr candles for all symbols epoch_now = int(time.time()) readable_date_folder = datetime.datetime.fromtimestamp(epoch_now - 7 * 60 * 60).strftime('%Y%m%d') day_folder = readable_date_folder + '_24' time_of_day = ' 12:00' day_folder = readable_date_folder + '_24_special' time_of_day = ' 20:00' if save_24hr_candle_data: readable_date_start = datetime.datetime.fromtimestamp( epoch_now - 7 * 60 * 60 - 24 * 60 * 60).strftime('%Y-%m-%d')
from binance.client import Client from binance.websockets import BinanceSocketManager api_key = '41EwcPBxLxrwAw4a4W2cMRpXiQwaJ9Vibxt31pOWmWq8Hm3ZX2CBnJ80sIRJtbsI' api_secret = 'pnHoASmoe36q54DZOKsUujQqo4n5Ju25t5G0kBaioZZgGDOQPEHqgDDPA6s5dUiB' client = Client(api_key, api_secret) global bm bm = BinanceSocketManager(client) # get symbols & update if older than 1 hour symbol_path = '/home/ec2-user/environment/botfarming/Development/binance_btc_symbols.pklz' last_modified_stamp = int(os.path.getmtime(symbol_path)) if last_modified_stamp < int(time.time()) - 60 * 60: ut.update_symbol_list() # limit symbols by 24hr volume symbols = ut.pickle_read(symbol_path) total_btc_coins = 0 symbols_trimmed = {} for s in symbols: symbol = symbols[s] if float(symbol['24hourVolume']) > 450: total_btc_coins += 1 symbols_trimmed[s] = symbol global socket_list socket_list = [] symbol_list = [] for s in symbols_trimmed: symbol = symbols_trimmed[s] # reset current_state 'status' to 'monitoring' (not 'buying_and_selling') # state_path = '/home/ec2-user/environment/botfarming/Development/program_state_1m/program_state_1m_1000_' + s + '.pklz'
# start print('start @', time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())) start_time = int(time.time()) minutes = 1 day = '20180122' step_backs = 8 trailing_and_current_candles_array = {} smart_trailing_candles_array = {} symbols = ut.pickle_read('/home/ec2-user/environment/botfarming/Development/binance_btc_symbols.pklz') total_btc_coins = 0 symbols_trimmed = {} for s in symbols: symbol = symbols[s] if float(symbol['24hourVolume']) > 450: total_btc_coins += 1 symbols_trimmed[s] = symbol best_gain = 0 best_price_to_buy_factor = 0 best_bollingers_percentage_increase_factor = 0 best_lower_band_buy_factor = 0
readable_time_now_folder = datetime.datetime.fromtimestamp( epoch_now - 7 * 60 * 60).strftime('%Y%m%d_%H:%M') readable_time_24hrs_ago_folder = datetime.datetime.fromtimestamp( epoch_24hrs_ago - 7 * 60 * 60).strftime('%Y%m%d_%H:%M') day = readable_time_24hrs_ago_folder + '_to_' + readable_time_now_folder print('fetching previous 24hrs of data', day) save_params = [[day, readable_time_24hrs_ago, readable_time_now]] ut2.save_data(save_params, datapoints_trailing, min_volume, minutes) ################################################################################ RUN OPTIMIZER trailing_and_current_candles_array = {} smart_trailing_candles_array = {} symbols = ut.pickle_read( '/home/ec2-user/environment/botfarming/Development/binance_btc_symbols.pklz' ) total_btc_coins = 0 symbols_trimmed = {} for s in symbols: symbol = symbols[s] if float(symbol['24hourVolume']) > 450: total_btc_coins += 1 symbols_trimmed[s] = symbol best_gain = 0 best_price_to_buy_factor = 0 best_bollingers_percentage_increase_factor = 0 best_lower_band_buy_factor = 0
import requests # save symbol list daily since API sometimes fail when getting live symbol_data = requests.get( "https://api.binance.com/api/v1/exchangeInfo").json() ticker_data = requests.get("https://api.binance.com/api/v1/ticker/24hr").json() symbols_for_save = {} for symbol in symbol_data['symbols']: if symbol['quoteAsset'] == 'BTC': symbols_for_save[symbol['symbol']] = symbol for symbol in ticker_data: if 'BTC' in symbol['symbol'] and not 'BTC' in symbol['symbol'][:3]: symbols_for_save[ symbol['symbol']]['24hourVolume'] = symbol['quoteVolume'] symbols_for_save[symbol['symbol']]['24priceChangePercent'] = symbol[ 'priceChangePercent'] print('---------------ETHBTC') pprint(symbols_for_save['ETHBTC']) print('---------------ETHBTC') print('btc symbols found:', len(symbols_for_save)) ut.pickle_write( '/home/ec2-user/environment/botfarming/Development/binance_btc_symbols.pklz', symbols_for_save) symbols_saved = ut.pickle_read( '/home/ec2-user/environment/botfarming/Development/binance_btc_symbols.pklz' ) print('btc symbols saved:', len(symbols_saved))
future_candles_length = 15 # 20180205 buy_trigger_drop_percent_factor = 0.3 # 20180205 sell_trigger_gain_percent_factor = 0.25 # 20180205 btc_tradeable_volume_factor = 3 * 0.1 * 0.3 # multiplier of avg btc volume per minute over 24 hrs that we can buy & sell min_volume_btc = 0 drops_to_collect = 1 print_trades = False #################################################################################### RUN STRATEGY symbols = ut.pickle_read( '/home/ec2-user/environment/botfarming/Development/binance_btc_symbols.pklz' ) symbols_filtered, symbol_list = ut2.get_trimmed_symbols( symbols, min_volume_btc) print('start @', ut.get_time()) #################################################################################### # NOTES # 15min & 25min for future_candles_length had nearly identical results all_day_results = { } # key = param combo, value = array of individual day results saved_outlier_drops = {} # 3 combos takes 20min or so
import sys print 'python', sys.version import requests import time from pprint import pprint import numpy import sys import pickle import gzip import utility as ut import json import math bot_trades_attempts = ut.pickle_read( '/home/ec2-user/environment/botfarming/Development/binance_all_trades_history/binance_all_trades_history_attempts.pklz' ) total_trades_attempts = 0 start_epoch = 1517024439 start_epoch = 1517353200 start_epoch = 1517367600 # jan 30 8pm for bot_trade in bot_trades_attempts: if bot_trade['time_epoch'] >= start_epoch: print(bot_trade['time_epoch'], bot_trade['time_human'], bot_trade['symbol'], bot_trade['look_back'], bot_trade['price_to_buy']) total_trades_attempts += 1 print(total_trades_attempts)
from binance.websockets import BinanceSocketManager api_key = '41EwcPBxLxrwAw4a4W2cMRpXiQwaJ9Vibxt31pOWmWq8Hm3ZX2CBnJ80sIRJtbsI' api_secret = 'pnHoASmoe36q54DZOKsUujQqo4n5Ju25t5G0kBaioZZgGDOQPEHqgDDPA6s5dUiB' client = Client(api_key, api_secret) bm = BinanceSocketManager(client) min_volume_btc = 0 datapoints_trailing = 0 minutes = 1 interval = str(minutes)+'m' # limit symbols by 24hr volume ut.update_symbol_list() symbol_path = '/home/ec2-user/environment/botfarming/Development/binance_btc_symbols.pklz' symbols_dict = ut.pickle_read(symbol_path) symbols_filtered, symbol_list = ut2.get_trimmed_symbols(symbols_dict, min_volume_btc) socket_list = [] for s in symbol_list: socket_list.append(s.lower()+'@ticker') ut.pickle_write('/home/ec2-user/environment/botfarming/Development/recent_tickers/'+s+'.pklz', False) print('symbols with volume > ', min_volume_btc, '=', len(socket_list)) def process_socket_pushes_tickers(msg): # close and restart the socket, if socket can't reconnect itself if 'e' in msg and msg['e'] == 'error': print('restarting socket in process_socket_pushes_tickers()') bm.close() conn_key = bm.start_multiplex_socket(socket_list, process_socket_pushes_tickers) bm.start()
#!/usr/bin/python2.7 import sys print('python', sys.version) import requests import time from pprint import pprint import numpy import sys import pickle import gzip import datetime import utility as ut import functions_financial as fn symbols = ut.pickle_read('/home/ec2-user/environment/botfarming/Development/binance_btc_symbols.pklz') total_btc_coins = 0 symbols_trimmed = {} for s in symbols: symbol = symbols[s] if float(symbol['24hourVolume']) > 450: total_btc_coins += 1 symbols_trimmed[s] = symbol total_data_points = 0 for s in symbols_trimmed: symbol = symbols_trimmed[s] #print symbol['symbol']