| | |
| | | import datetime |
| | | import decimal |
| | | import json |
| | | import time |
| | | |
| | | import requests |
| | | |
| | | import constant |
| | | from db.redis_manager_delegate import RedisUtils |
| | | from log_module.log import logger_request_api |
| | | from utils import tool, middle_api_protocol |
| | | from db import redis_manager_delegate as redis_manager |
| | | |
| | |
| | | fdata = None |
| | | if DELEGATE: |
| | | fdata = middle_api_protocol.load_juejin(path_str, data_json) |
| | | fdata = middle_api_protocol.request(fdata) |
| | | __start_time = time.time() |
| | | try: |
| | | fdata = middle_api_protocol.request(fdata) |
| | | finally: |
| | | __use_time = time.time() - __start_time |
| | | if __use_time > 5: |
| | | logger_request_api.info(f"掘金API请求时间:{path_str}-{int(__use_time)}") |
| | | |
| | | else: |
| | | url = f'{cls.__BASE_URL}{path_str}' |
| | | # 发送POST请求 |
| | |
| | | "skip_st": skip_st, "fields": fields}) |
| | | |
| | | @classmethod |
| | | def get_history_instruments(cls, symbols, start_date, end_date, fields): |
| | | return cls.__request("get_history_instruments", |
| | | {"symbols": symbols, "start_date": start_date, "end_date": end_date, "fields": fields}) |
| | | |
| | | @classmethod |
| | | def get_previous_trading_date(cls, exchange, date): |
| | | return cls.__request("get_previous_trading_date", {"exchange": exchange, "date": date}) |
| | | |
| | |
| | | def get_juejin_code_list_with_prefix(cls, codes): |
| | | list = [] |
| | | for d in codes: |
| | | if d[0:2] == '00': |
| | | if tool.is_sz_code(d): |
| | | list.append("SZSE.{}".format(d)) |
| | | elif d[0:2] == '60': |
| | | elif tool.is_sh_code(d): |
| | | list.append("SHSE.{}".format(d)) |
| | | return list |
| | | |
| | |
| | | return results |
| | | |
| | | @classmethod |
| | | def get_gp_current_info(cls, codes): |
| | | def get_gp_current_info(cls, codes, fields=None): |
| | | if not codes: |
| | | return [] |
| | | symbols = cls.get_juejin_code_list_with_prefix(codes) |
| | |
| | | data = gmapi.current(symbols=",".join(symbols)) |
| | | return data |
| | | else: |
| | | data = JueJinHttpApi.current(symbols=",".join(symbols), fields='') |
| | | data = JueJinHttpApi.current(symbols=",".join(symbols), fields=fields) |
| | | return data |
| | | # 返回指定日期的上个交易日 |
| | | |
| | | # 获取交易所的代码 |
| | | @classmethod |
| | | def get_exchanges_codes(cls, exchanges): |
| | | def get_exchanges_codes(cls, exchanges, skip_suspended=True, skip_st=True): |
| | | if constant.JUEJIN_LOCAL_API: |
| | | account_id, s_id, token = cls.getJueJinAccountInfo() |
| | | gmapi.set_token(token) |
| | | return gmapi.get_instruments(exchanges=exchanges, sec_types=[1], skip_suspended=True, skip_st=True, |
| | | return gmapi.get_instruments(exchanges=exchanges, sec_types=[1], skip_suspended=skip_suspended, |
| | | skip_st=skip_st, |
| | | fields="symbol,sec_type,sec_id,sec_name,listed_date,sec_level,is_suspended,pre_close") |
| | | else: |
| | | return JueJinHttpApi.get_exchanges_codes(exchanges=exchanges, sec_types=[1], skip_suspended=True, |
| | | skip_st=True, |
| | | return JueJinHttpApi.get_exchanges_codes(exchanges=exchanges, sec_types=[1], skip_suspended=skip_suspended, |
| | | skip_st=skip_st, |
| | | fields="symbol,sec_type,sec_id,sec_name,listed_date,sec_level,is_suspended,pre_close") |
| | | |
| | | @classmethod |
| | | def get_history_instruments(cls, symbols, start_date, end_date, fields=None): |
| | | if constant.JUEJIN_LOCAL_API: |
| | | account_id, s_id, token = cls.getJueJinAccountInfo() |
| | | gmapi.set_token(token) |
| | | return gmapi.get_history_instruments(symbols=symbols, start_date=start_date, end_date=end_date, |
| | | fields="symbol,sec_type,sec_id,sec_name,listed_date,sec_level,is_suspended,pre_close") |
| | | else: |
| | | return JueJinHttpApi.get_history_instruments(symbols, start_date, end_date, fields) |
| | | |
| | | @classmethod |
| | | def get_previous_trading_date(cls, date): |
| | |
| | | |
| | | |
| | | if __name__ == "__main__": |
| | | results = HistoryKDatasUtils.get_codes_limit_rate(list({"000422", "600610"})) |
| | | print(results) |
| | | now_day = tool.get_now_date_str() |
| | | results = JueJinApi.get_history_instruments(JueJinApi.get_juejin_code_list_with_prefix(["600265"]), |
| | | tool.date_sub(now_day, 30), tool.date_sub(now_day, 1)) |
| | | results = results[-5:] |
| | | normal = True |
| | | for r in results: |
| | | if r["sec_level"] != 1: |
| | | normal = False |
| | | break |
| | | print(normal) |