示例#1
0
             f"|{' ':68}|\n"
             f"+{'-' * 68}+\n\n")
tq_account = input('天勤量化账号: ')
tq_password = input('天勤量化密码: ')
try:
    api = TqApi(auth=TqAuth(tq_account, tq_password))
except Exception as err:
    print(err, '\n')
    input(f"{'连接失败, 按任意键程序将退出, 请检查后重试'}")
    raise SystemExit()
quotes = []
labels = []
product = input("\n请输入品种代码(例rb/hc): ").lower()
try:
    available_contracts = sorted(
        api.query_quotes(ins_class="FUTURE", product_id=product,
                         expired=False))
    m_contract = api.query_cont_quotes(product_id=product)[0]
except IndexError:
    available_contracts = sorted(
        api.query_quotes(ins_class="FUTURE",
                         product_id=product.upper(),
                         expired=False))
    m_contract = api.query_cont_quotes(product_id=product.upper())[0]
m_contract_index = available_contracts.index(m_contract)


def batch_get_quote(contracts_list):
    for code_full in contracts_list:
        quotes.append(api.get_quote(code_full))
        labels.append(code_full.split(".")[1])
    if product == 'rb' or product == 'hc':
    logger.setLevel(logging.INFO)

    rsp = requests.get(
        url="https://openmd.shinnytech.com/t/md/symbols/latest.json",
        timeout=30)
    old_symbols = {
        k: v
        for k, v in rsp.json().items()
        if v["expired"] is False and v["exchange_id"] in EXCHANGE_LIST
    }

    api = TqApi(auth=AUTH,
                _md_url="wss://api.shinnytech.com/t/nfmd/front/mobile")
    new_symbols_list = []
    for ex in EXCHANGE_LIST:
        symbols = api.query_quotes(exchange_id=ex, expired=False)
        new_symbols_list.extend(symbols)

    assert len(new_symbols_list) == len(old_symbols)

    print("已知问题:")
    print("* expire_datetime 为 null")
    print(
        "* margin commission 部分合约不一致, 组合没有 volume_multiple, 指数、主连符合预期,SPOT 没有 expired product_short_name,"
    )
    print(
        "* 新版合约服务中已经删去的字段",
        ["ins_id", "ins_name", "sort_key", "delivery_year", "delivery_month"])
    print("* 旧版合约服务里行情相关的数据不需要关心",
          ["settlement_price", "open_interest", "last_price", "pre_volume"])