代码的板块不包含历史炸板过的数据/更新开盘啦前一天的实时涨停数据
| | |
| | | from log_module.log import hx_logger_contact_debug, hx_logger_trade_callback, \ |
| | | hx_logger_l2_orderdetail, hx_logger_l2_market_data, logger_l2_g_cancel, logger_debug, \ |
| | | logger_system, logger_trade, logger_l2_radical_buy |
| | | from third_data import block_info, kpl_data_manager, history_k_data_manager, huaxin_l1_data_manager |
| | | from third_data import block_info, kpl_data_manager, history_k_data_manager, huaxin_l1_data_manager, kpl_api, kpl_util |
| | | from third_data.code_plate_key_manager import KPLCodeJXBlockManager, CodePlateKeyBuyManager, RealTimeKplMarketData |
| | | from third_data.history_k_data_util import JueJinApi |
| | | from third_data.history_k_data_util import JueJinApi, HistoryKDatasUtils |
| | | from trade import l2_trade_util, \ |
| | | trade_data_manager, trade_constant, buy_open_limit_up_strategy |
| | | from trade.buy_radical import radical_buy_data_manager, radical_buy_strategy |
| | |
| | | huaxin_target_codes_manager.HuaXinL2SubscriptCodesManager.push(add_datas, 0) |
| | | |
| | | |
| | | def __update_yesterday_kpl_limit_up_datas(): |
| | | day = tool.get_now_date_str() |
| | | day = HistoryKDatasUtils.get_previous_trading_date(day) |
| | | results = kpl_api.getHistoryLimitUpInfo(day) |
| | | result_list = kpl_util.parseDaBanData(json.dumps({"list": results, "errcode": 0}), kpl_util.DABAN_TYPE_LIMIT_UP) |
| | | kpl_data_manager.KPLLimitUpDataRecordManager.save_record(day, result_list, set_not_open=True) |
| | | logger_debug.info("更新昨日开盘啦实时涨停数据") |
| | | |
| | | |
| | | # 做一些初始化的操作 |
| | | def __init(): |
| | | def run_pending(): |
| | | # 更新自由流通市值 |
| | | schedule.every().day.at("15:10:00").do(zyltgb_util.update_all_zylt_volumes) |
| | | # 测试下单 |
| | | schedule.every().day.at("01:02:00").do(__test_pre_place_order) |
| | | # 订阅固定的代码 |
| | | schedule.every().day.at("09:10:00").do(__subscript_fixed_codes_l2) |
| | | # 更新K线 |
| | | schedule.every().day.at("08:00:01").do(history_k_data_manager.update_history_k_bars) |
| | | schedule.every().day.at("08:30:01").do(history_k_data_manager.update_history_k_bars) |
| | | schedule.every().day.at("09:00:01").do(history_k_data_manager.update_history_k_bars) |
| | | # 更新账户信息 |
| | | schedule.every().day.at("09:00:01").do(huaxin_trade_data_update.add_money_list) |
| | | schedule.every().day.at("09:15:20").do(huaxin_trade_data_update.add_money_list) |
| | | schedule.every().day.at("09:15:20").do(huaxin_trade_data_update.add_money_list) |
| | | # 更新昨日实时涨停数据 |
| | | schedule.every().day.at("07:58:00").do(__update_yesterday_kpl_limit_up_datas) |
| | | |
| | | while True: |
| | | try: |
| | | schedule.run_pending() |
| | |
| | | |
| | | |
| | | if __name__ == "__main__": |
| | | result = getMarketStrong() |
| | | result =getHistoryLimitUpInfo("2024-02-19") |
| | | print(result) |
| | |
| | | max_day=cls.__day) |
| | | kpl_block_dict = {} |
| | | for r in kpl_results: |
| | | # 当日炸板的不计算原因 |
| | | if r[4] == 1: |
| | | continue |
| | | code = r[0] |
| | | if code not in kpl_block_dict: |
| | | kpl_block_dict[code] = [] |
| | |
| | | pass |
| | | |
| | | @classmethod |
| | | def save_record(cls, day, records): |
| | | def save_record(cls, day, records, set_not_open=False): |
| | | """ |
| | | @param day: |
| | | @param records: |
| | | @param set_not_open: 是否需要设置炸板与否 |
| | | @return: |
| | | """ |
| | | # 统计炸板 |
| | | try: |
| | | last_codes = set() |
| | |
| | | mysqldb.execute( |
| | | f"update kpl_limit_up_record set _latest_limit_up_time='{d[3]}',_limit_up_time='{d[2]}',_hot_block_code_count={d[10]},_limit_up_high_info='{d[4]}' ,_update_time=now() where _id='{_id}'") |
| | | cls.latest_datas[_id] = d |
| | | if set_not_open: |
| | | # 需要设置不炸板 |
| | | mysqldb.execute(f"update kpl_limit_up_record set _open = 0, _update_time = now() where _id='{_id}'") |
| | | |
| | | cls.latest_datas[_id] = d |
| | | |
| | | # 获取原来的代码所属板块,删除之前错误的板块 |
| | |
| | | @param code: 代码 |
| | | @return: 最近的涨停板块信息 |
| | | """ |
| | | sql = f"SELECT r.`_code`, r.`_day`, r.`_hot_block_name`, r.`_blocks` FROM `kpl_limit_up_record` r WHERE r.`_day`>='{min_day}' and r.`_day` <'{max_day}'" |
| | | sql = f"SELECT r.`_code`, r.`_day`, r.`_hot_block_name`, r.`_blocks`, r.`_open` FROM `kpl_limit_up_record` r WHERE r.`_day`>='{min_day}' and r.`_day` <'{max_day}'" |
| | | |
| | | if code: |
| | | sql += f" AND _code='{code}'" |
| | |
| | | return results |
| | | |
| | | |
| | | |
| | | if __name__ == '__main__': |
| | | # 删除不是交易日期的数据 |
| | | days = HistoryKDatasUtils.get_latest_trading_date(300) |
| | | for day in days: |
| | | pass |
| | | print(days) |
| | | mysqldb = Mysqldb() |
| | | results = mysqldb.select_all(f"SELECT _id, _day from kpl_limit_up_record r where r._day>='{days[-1]}'") |
| | | ids = [] |
| | | for result in results: |
| | | if result[1] not in days: |
| | | ids.append(result[0]) |
| | | # print("删除:", result) |
| | | if len(ids) > 10: |
| | | sql = f"delete from kpl_limit_up_record where " + ' or '.join([f"_id='{x}'" for x in ids]) |
| | | mysqldb.execute(sql) |
| | | ids.clear() |
| | | pass |
| | | datas = KPLLimitUpDataUtil.get_latest_block_infos() |
| | | len(datas) |