]>
Commit | Line | Data |
---|---|---|
eb9c92e1 IB |
1 | import os |
2 | import sys | |
3 | import configparser | |
4 | import psycopg2 | |
5 | import argparse | |
6 | from datetime import datetime | |
7 | ||
8 | import portfolio, market | |
9 | ||
10 | parser = argparse.ArgumentParser( | |
11 | description="Run the trade bot") | |
12 | ||
13 | parser.add_argument("-c", "--config", | |
14 | default="config.ini", | |
15 | required=False, | |
16 | help="Config file to load (default: config.ini)") | |
17 | parser.add_argument("--before", | |
18 | default=False, action='store_const', const=True, | |
19 | help="Run the steps before the cryptoportfolio update") | |
20 | parser.add_argument("--after", | |
21 | default=False, action='store_const', const=True, | |
22 | help="Run the steps after the cryptoportfolio update") | |
23 | parser.add_argument("--debug", | |
24 | default=False, action='store_const', const=True, | |
25 | help="Run in debug mode") | |
26 | ||
27 | args = parser.parse_args() | |
28 | ||
29 | if not os.path.exists(args.config): | |
30 | print("no config file found, exiting") | |
31 | sys.exit(1) | |
32 | ||
33 | config = configparser.ConfigParser() | |
34 | config.read(args.config) | |
35 | ||
36 | pg_config = config["postgresql"] | |
37 | ||
38 | connection = psycopg2.connect(**pg_config) | |
39 | cursor = connection.cursor() | |
40 | ||
41 | cursor.execute("SELECT config,user_id FROM market_configs") | |
42 | ||
43 | report_path = config["app"]["report_path"] | |
44 | if not os.path.exists(report_path): | |
45 | os.makedirs(report_path) | |
46 | ||
47 | for row in cursor: | |
48 | market_config, user_id = row | |
49 | try: | |
50 | user_market = market.get_market(market_config) | |
51 | if args.before: | |
52 | portfolio.h.process_sell_all__1_all_sell(user_market, debug=args.debug) | |
53 | if args.after: | |
54 | portfolio.Portfolio.wait_for_recent() | |
55 | portfolio.h.process_sell_all__2_all_buy(user_market, debug=args.debug) | |
56 | except Exception as e: | |
57 | print(e) | |
58 | pass | |
59 | finally: | |
60 | report_file = "{}/{}_{}.json".format(report_path, datetime.now().isoformat(), user_id) | |
61 | with open(report_file, "w") as f: | |
62 | f.write(portfolio.ReportStore.to_json()) | |
63 | portfolio.h.reset_all() | |
64 |