Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
wiseplat
GitHub Repository: wiseplat/python-code
Path: blob/master/ invest-robot-contest_sirius-master/strategy/robot_engine.py
5932 views
1
import logging
2
import threading
3
4
from services.account_info import prepare_account_info, has_enough_money
5
from services.history_test_data import test_get_stop
6
from services.trading_info import load_trading_info, print_trading_info, save_trading_info
7
from strategy.robot_thread import start_robot_thread
8
from utils.settings import settings
9
from utils.util import read_dict_from_file, pretty_dict
10
11
stop_thread = False
12
13
14
def should_stop_callback():
15
if stop_thread:
16
return True
17
if settings()['MAIN']['mode'] == 'history_test':
18
return test_get_stop()
19
return False
20
21
22
# инструменты, по которым робот будет вести торговлю
23
def load_trading_instruments():
24
instruments = None
25
26
if settings()['MAIN']['mode'] == 'history_test':
27
instruments = read_dict_from_file('instruments_history_test')
28
elif settings()['MAIN']['mode'] == 'sandbox':
29
instruments = read_dict_from_file('instruments_sandbox')
30
elif settings()['MAIN']['mode'] == 'prod':
31
instruments = read_dict_from_file('instruments_prod')
32
33
return instruments
34
35
36
def start_trade():
37
account_info = prepare_account_info()
38
39
has_enough_money(account_info)
40
41
trading_info = load_trading_info()
42
logging.info("Trading info loaded = {}\n".format(pretty_dict(trading_info)))
43
instruments = load_trading_instruments()
44
logging.info("Trading instruments loaded = {}\n".format(pretty_dict(instruments)))
45
46
robot_thread = threading.Thread(target=start_robot_thread,
47
args=(account_info, trading_info, instruments, should_stop_callback))
48
robot_thread.start()
49
50
while robot_thread.is_alive():
51
global stop_thread
52
53
if settings()['MAIN']['mode'] != 'history_test':
54
command = input('')
55
if command in ['q', 'quit']:
56
stop_thread = True
57
elif command == 'trading_info':
58
print_trading_info(trading_info)
59
else:
60
logging.warning("Unknown command '{}'".format(command))
61
62
print_trading_info(trading_info)
63
64
65