Пример #1
0
def get_process_name(data):
    process_names = get_dict_of_process_controls(data)
    menu_of_options = dict(list(enumerate(process_names)))
    print("Process name?")
    option = print_menu_and_get_response(menu_of_options, default_option=1)
    ans = menu_of_options[option]
    return ans
def print_capital_and_get_user_input(data: dataBlob):
    data_capital = dataCapital(data)

    all_calcs = data_capital.get_series_of_all_global_capital()
    print("\n")
    if all_calcs is missing_data:
        # No capital
        no_capital_setup = True
        print("No capital setup yet")
    else:
        no_capital_setup = False
        print(all_calcs.tail(10))

    print("\n")


    if no_capital_setup:
        possible_options = {
            1: "Setup initial capital parameters"}
    else:
        possible_options = {
            2: "Update capital from IB account value",
            3: "Adjust account value for withdrawal or deposit",
            4: "Modify any/all values",
            5: "Delete values of capital since time T",
            6: "Delete everything and start again"}

    user_option_int = print_menu_and_get_response(possible_options, default_option=0,
                                                  default_str="EXIT")

    return user_option_int
Пример #3
0
def view_errors(data):
    diag_logs = diagLogs(data)
    msg_levels = diag_logs.get_possible_log_level_mapping()
    print("This will get all log messages with a given level of criticality")
    print("Use view logs to filter by log attributes")
    lookback_days = get_and_convert("How many days?", type_expected=int, default_value=7)
    print("Which level of error/message?")
    log_level = print_menu_and_get_response(msg_levels)
    log_item_list = diag_logs.get_log_items_with_level(log_level, attribute_dict=dict(), lookback_days=lookback_days)
    print_log_items(log_item_list)
Пример #4
0
def get_valid_status_for_process():
    status_int = print_menu_and_get_response(
        {
            1: "Go",
            2: "Do not run (don't stop if already running)",
            3: "Stop (and don't run if not started)",
        },
        default_option=0,
        default_str="<CANCEL>",
    )
    return status_int
Пример #5
0
def change_process_control_status(data):
    data_process = dataControlProcess(data)
    process_name = get_process_name(data)
    status_int = print_menu_and_get_response({1:"Go", 2:"Do not run (don't stop if already running)", 3:"Stop (and don't run if not started)"}, default_option=0, default_str="<CANCEL>")
    if status_int==1:
        data_process.change_status_to_go(process_name)
    if status_int==2:
        data_process.change_status_to_no_run(process_name)
    if status_int==3:
        data_process.change_status_to_stop(process_name)

    return None
Пример #6
0
def enter_manual_contract_order(data, instrument_order):
    strategy_name = instrument_order.strategy_name
    instrument_code = instrument_order.instrument_code
    qty = instrument_order.trade

    leg_count = get_and_convert("How many legs?",
                                type_expected=int,
                                default_value=1)
    contract_id_list = []
    for leg_idx in range(leg_count):
        print("Choose contract for leg %d" % leg_idx)
        _, contract_date = get_valid_instrument_code_and_contractid_from_user(
            data, instrument_code=instrument_code)
        contract_id_list.append(contract_date)

    trade_qty_list = []
    for trade_idx in range(leg_count):
        trade_qty = get_and_convert("Enter quantity for leg %d" % trade_idx,
                                    type_expected=int,
                                    allow_default=False)
        trade_qty_list.append(trade_qty)

    if sum(trade_qty_list) != sum(qty):
        print(
            "Sum of instrument quantity %s is different from sum of contract quantity %s"
            % (str(qty), str(trade_qty_list)))
        print("It's unlikely you meant to do this...")

    menu_of_options = dict(enumerate(list_of_algos))
    algo_idx = print_menu_and_get_response(menu_of_options)

    algo_to_use = list_of_algos[algo_idx]

    limit_price = get_and_convert(
        "Limit price? (will override instrument order limit price, will be ignored by some algo types",
        type_expected=float,
        default_str="None",
        default_value=None)

    contract_order = contractOrder(
        strategy_name,
        instrument_code,
        contract_id_list,
        trade_qty_list,
        algo_to_use=algo_to_use,
        reference_price=None,
        limit_price=limit_price,
        manual_trade=True,
    )

    return contract_order
Пример #7
0
def update_order_stack():
    with dataBlob(log_name="Update-Order-Stack") as data:

        stack_handler = instrument_to_contract_stack_handler(data)

        still_running = True
        while still_running:
            option_chosen = print_menu_and_get_response(menu_of_options,
                                                        default_option=-1,
                                                        default_str="EXIT")
            if option_chosen == -1:
                print("FINISHED")
                return None

            method_chosen = dict_of_functions[option_chosen]
            method_chosen(stack_handler)