Path: blob/master/ invest-robot-contest_sirius-master/strategy/robot_engine.py
5932 views
import logging1import threading23from services.account_info import prepare_account_info, has_enough_money4from services.history_test_data import test_get_stop5from services.trading_info import load_trading_info, print_trading_info, save_trading_info6from strategy.robot_thread import start_robot_thread7from utils.settings import settings8from utils.util import read_dict_from_file, pretty_dict910stop_thread = False111213def should_stop_callback():14if stop_thread:15return True16if settings()['MAIN']['mode'] == 'history_test':17return test_get_stop()18return False192021# инструменты, по которым робот будет вести торговлю22def load_trading_instruments():23instruments = None2425if settings()['MAIN']['mode'] == 'history_test':26instruments = read_dict_from_file('instruments_history_test')27elif settings()['MAIN']['mode'] == 'sandbox':28instruments = read_dict_from_file('instruments_sandbox')29elif settings()['MAIN']['mode'] == 'prod':30instruments = read_dict_from_file('instruments_prod')3132return instruments333435def start_trade():36account_info = prepare_account_info()3738has_enough_money(account_info)3940trading_info = load_trading_info()41logging.info("Trading info loaded = {}\n".format(pretty_dict(trading_info)))42instruments = load_trading_instruments()43logging.info("Trading instruments loaded = {}\n".format(pretty_dict(instruments)))4445robot_thread = threading.Thread(target=start_robot_thread,46args=(account_info, trading_info, instruments, should_stop_callback))47robot_thread.start()4849while robot_thread.is_alive():50global stop_thread5152if settings()['MAIN']['mode'] != 'history_test':53command = input('')54if command in ['q', 'quit']:55stop_thread = True56elif command == 'trading_info':57print_trading_info(trading_info)58else:59logging.warning("Unknown command '{}'".format(command))6061print_trading_info(trading_info)62636465