]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Trader.git/blob - main.py
Add main running file and fetch information from database
[perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Trader.git] / main.py
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