import os import sys import configparser import psycopg2 import argparse from datetime import datetime import portfolio, market parser = argparse.ArgumentParser( description="Run the trade bot") parser.add_argument("-c", "--config", default="config.ini", required=False, help="Config file to load (default: config.ini)") parser.add_argument("--before", default=False, action='store_const', const=True, help="Run the steps before the cryptoportfolio update") parser.add_argument("--after", default=False, action='store_const', const=True, help="Run the steps after the cryptoportfolio update") parser.add_argument("--debug", default=False, action='store_const', const=True, help="Run in debug mode") args = parser.parse_args() if not os.path.exists(args.config): print("no config file found, exiting") sys.exit(1) config = configparser.ConfigParser() config.read(args.config) pg_config = config["postgresql"] connection = psycopg2.connect(**pg_config) cursor = connection.cursor() cursor.execute("SELECT config,user_id FROM market_configs") report_path = config["app"]["report_path"] if not os.path.exists(report_path): os.makedirs(report_path) for row in cursor: market_config, user_id = row try: user_market = market.get_market(market_config) if args.before: portfolio.h.process_sell_all__1_all_sell(user_market, debug=args.debug) if args.after: portfolio.Portfolio.wait_for_recent() portfolio.h.process_sell_all__2_all_buy(user_market, debug=args.debug) except Exception as e: print(e) pass finally: report_file = "{}/{}_{}.json".format(report_path, datetime.now().isoformat(), user_id) with open(report_file, "w") as f: f.write(portfolio.ReportStore.to_json()) portfolio.h.reset_all()