Path: blob/master/ invest-robot-contest_sirius-master/sandbox_control.py
5925 views
import logging12from api_calls.get_info import get_share_by_ticker3from api_calls.sandbox_account import *4from services.instruments_info_cache import get_instrument_info5from strategy.buy_sell_utils import place_order_and_wait_for_finish678def sandbox_control():9help_str = """10Вспомогательный режим для управления sandbox-аккаунтом.11В примерах - 1eb65a36-8ecb-4bd8-b186-056547277f18 - это account_id счёта, который можно получить с помощью12команды info13Основные команды (вводить без кавычек):14'open_account' - открыть новый sandbox-счёт15'close_account 1eb65a36-8ecb-4bd8-b186-056547277f18' - закрыть sandbox-счёт16'info' - вывести информацию по аккаунту17'portfolio 1eb65a36-8ecb-4bd8-b186-056547277f18' - вывести портфолио по счёту18'positions 1eb65a36-8ecb-4bd8-b186-056547277f18' - вывести список позиций по счёту19'buy 1eb65a36-8ecb-4bd8-b186-056547277f18 MOEX ORUP' - купить акцию ORUP на бирже MOEX20'sell 1eb65a36-8ecb-4bd8-b186-056547277f18 SPB VEON' - продать акцию VEON на бирже SPB21'pay 1eb65a36-8ecb-4bd8-b186-056547277f18 USD 10000 35' - пополнить счёт на 10000 долларов и 35 центов22'pay 1eb65a36-8ecb-4bd8-b186-056547277f18 RUB 29999 0' - пополнить счёт на 29999 рублей23'q' или 'quit' - выход24"""25logging.info(help_str)2627while True:28line = input('')29if len(line) == 0:30continue31if line.lower() in ['q', 'quit']:32break33else:34do_operation(line)353637def do_operation(line):38command = line.split()[0]39args = line.split()[1:]4041if command == 'info':42logging.info("Sandbox accounts = {}\n".format(pretty_dict(get_sandbox_accounts())))43elif command == 'portfolio':44logging.info("Sandbox portfolio = {}\n".format(pretty_dict(get_sandbox_portfolio(args[0]))))45elif command == 'positions':46logging.info("Sandbox positions = {}\n".format(pretty_dict(get_sandbox_positions(args[0]))))47elif command == 'close_account':48logging.info("Sandbox close account = {}\n".format(pretty_dict(close_sandbox_account(args[0]))))49elif command == 'open_account':50logging.info("Sandbox open account = {}\n".format(pretty_dict(open_sandbox_account())))51elif command == 'pay':52logging.info("Sandbox pay for account = {}\n".format(53pretty_dict(pay_sandbox_account(account_id=args[0], currency=args[1], units=args[2], nano=args[3]))))54elif command == 'buy':55do_operation_deal(account_id=args[0], exchange=args[1], ticker=args[2], deal_type=command)56elif command == 'sell':57do_operation_deal(account_id=args[0], exchange=args[1], ticker=args[2], deal_type=command)58else:59logging.warning("Unknown command '{}'".format(command))606162def do_operation_deal(account_id, exchange, ticker, deal_type):63instrument_info = get_instrument_info(exchange, ticker)64place_order_and_wait_for_finish({'account_id': account_id}, instrument_info, deal_type, True)656667