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')
Exemple #2
0
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'
Exemple #3
0
# 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
Exemple #7
0
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']