Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
wiseplat
GitHub Repository: wiseplat/python-code
Path: blob/master/ invest-robot-contest_sirius-master/prod_control.py
5925 views
1
from api_calls.get_info import get_share_by_ticker
2
from api_calls.prod_account import *
3
from services.instruments_info_cache import get_instrument_info
4
from strategy.buy_sell_utils import place_order_and_wait_for_finish
5
6
7
def prod_control():
8
help_str = """
9
Вспомогательный режим для управления prod-аккаунтом.
10
В примерах - 2000012345 - это account_id, который можно получить с помощью
11
команды info
12
Основные команды (вводить без кавычек):
13
'info' - вывести информацию по аккаунту
14
'portfolio 2000012345' - вывести подробное портфолио по счёту
15
'positions 2000012345' - вывести список позиций по счёту
16
'buy 2000012345 MOEX ORUP' - купить акцию ORUP на бирже MOEX
17
'sell 2000012345 SPB VEON' - продать акцию VEON на бирже SPB
18
'q' или 'quit' - выход
19
"""
20
logging.info(help_str)
21
22
while True:
23
line = input('')
24
if len(line) == 0:
25
continue
26
if line.lower() in ['q', 'quit']:
27
break
28
else:
29
do_operation(line)
30
31
32
def do_operation(line):
33
command = line.split()[0]
34
args = line.split()[1:]
35
36
if command == 'info':
37
logging.info("Prod accounts = {}\n".format(pretty_dict(get_prod_accounts())))
38
elif command == 'portfolio':
39
logging.info("Prod portfolio = {}\n".format(pretty_dict(get_prod_portfolio(args[0]))))
40
elif command == 'positions':
41
logging.info("Prod positions = {}\n".format(pretty_dict(get_prod_positions(args[0]))))
42
elif command == 'buy':
43
do_operation_deal(account_id=args[0], exchange=args[1], ticker=args[2], deal_type=command)
44
elif command == 'sell':
45
do_operation_deal(account_id=args[0], exchange=args[1], ticker=args[2], deal_type=command)
46
else:
47
logging.warning("Unknown command '{}'".format(command))
48
49
50
def do_operation_deal(account_id, exchange, ticker, deal_type):
51
instrument_info = get_instrument_info(exchange, ticker)
52
place_order_and_wait_for_finish({'account_id': account_id}, instrument_info, deal_type, False)
53
54
55