from cancel_strategy.s_l_h_cancel_strategy import SCancelBigNumComputer from l2.huaxin import l2_huaxin_util from l2.l2_data_manager import OrderBeginPosInfo from l2.l2_transaction_data_manager import HuaXinSellOrderStatisticManager from l2 import l2_data_util from l2.l2_transaction_data_processor import HuaXinTransactionDatasProcessor from log_module import log_export, async_log_util from utils import tool def statistic_buy_order(): code = "002187" data_map = log_export.load_huaxin_transaction_map(date="2024-04-10", with_time=True) datas = data_map.get(code) __latest_buy_order_dict = {} total_money = 0 active_buy = 0 passive_buy = 0 for data in datas: time_str = data[0] for d in data[1]: if d[6] == 990054: if d[7] < 990054: active_buy += d[2] print("主动买:", time_str, d) else: passive_buy += d[2] print("被动买:", time_str, d) if code not in __latest_buy_order_dict: # 格式:[买单号,手数,单价] __latest_buy_order_dict[code] = [d[6], d[2], d[1], (d[3], d[1]), (d[3], d[1])] else: if __latest_buy_order_dict[code][0] == d[6]: __latest_buy_order_dict[code][1] += d[2] __latest_buy_order_dict[code][2] = d[1] __latest_buy_order_dict[code][4] = (d[3], d[1]) else: info = __latest_buy_order_dict[code] # 上个卖单成交完成 # 封存数据,计算新起点 # 大于50w的卖单才会保存 # 大于50w加入卖单 money = info[1] * info[2] # if 101328000 > info[3] > 101324000: if tool.trade_time_sub(l2_huaxin_util.convert_time(info[3][0]), "10:08:30") >= 0 and info[ 2] >= 11.54: total_money += money print(int(total_money), round(money / 10000, 1), info) if money >= 500000: pass __latest_buy_order_dict[code] = [d[6], d[2], d[1], (d[3], d[1]), (d[3], d[1])] print(f"主动买:{active_buy}", f"被动买:{passive_buy}") # 卖单统计 def statistic_sell_order(): def is_active_sell(sell_no, buy_no): return sell_no > buy_no code = "002660" data_map = log_export.load_huaxin_transaction_map(date=tool.get_now_date_str()) datas = data_map.get(code) __latest_sell_order_dict = {} total_money = 0 limit_up_price = 9.2 last_type = -1 for data in datas: for d in data: if d[6] == 24975654: print(d[1] * d[2], d) type = -1 if d[7] > d[6]: type = 0 else: type = 1 if type == 0 and last_type == 1 and d[1] == limit_up_price: print("被动卖变主动卖", d) last_type = type # if d[6] == 21296620: # if d[7] > d[6]: # print("主动卖", d) # else: # print("被动卖", d[1] * d[2], d) if code not in __latest_sell_order_dict: __latest_sell_order_dict[code] = [d[7], d[2], d[1], (d[3], d[6]), (d[3], d[6])] else: if __latest_sell_order_dict[code][0] == d[7]: __latest_sell_order_dict[code][1] += d[2] __latest_sell_order_dict[code][2] = d[1] __latest_sell_order_dict[code][4] = (d[3], d[6]) else: info = __latest_sell_order_dict[code] money = info[1] * info[2] if is_active_sell(info[0], info[3][1]) and 1000 * 10000 > money > 10 * 10000 and 7852775 > info[ 0] > 7807625: total_money += money # print("主动卖:", round(money / 10000), total_money, info) # 上个卖单成交完成 # 封存数据,计算新起点 # 大于50w的卖单才会保存 # 大于50w加入卖单 # if tool.trade_time_sub(l2_huaxin_util.convert_time(info[3][0]), "10:08:30") >= 0: # if info[2] >= 11.54: # total_money += money # print(money, round(total_money), info) # if money >= 500000: # pass __latest_sell_order_dict[code] = [d[7], d[2], d[1], (d[3], d[6]), (d[3], d[6])] def load_sell_info(): date = tool.get_now_date_str() data_map = log_export.load_huaxin_transaction_map(date=date) for code in data_map: if code != '002562': continue datas = data_map[code] for d in datas: big_sell_order_info = HuaXinSellOrderStatisticManager.add_transaction_datas(code, d) async_log_util.run_sync() def test_sell_order_info(): code = "600490" l2_data_util.load_l2_data(code, force=True) date = tool.get_now_date_str() data_map = log_export.load_huaxin_transaction_map(date=date) datas = data_map.get(code) for i in range(len(datas)): d = datas[i] big_sell_order_info = HuaXinSellOrderStatisticManager.add_transaction_datas(code, d) if big_sell_order_info[1] and big_sell_order_info[1][-1][0] == 559018: print(big_sell_order_info) SCancelBigNumComputer().set_real_place_order_index(code, 208, False) SCancelBigNumComputer().set_big_sell_order_info_for_cancel(code, big_sell_order_info, OrderBeginPosInfo( mode=OrderBeginPosInfo.MODE_ACTIVE, buy_single_index=0, buy_exec_index=13)) # if big_sell_order_info[0] < 50 * 10000: # continue # print(i, sum([x[1] * x[2] for x in big_sell_order_info[1]]), big_sell_order_info) def test_process_transaction_datas(): data_map = log_export.load_huaxin_transaction_map(date="2024-04-17") code = "000035" datas = data_map.get(code) l2_data_util.load_l2_data(code) for data in datas: HuaXinTransactionDatasProcessor.statistic_big_order_infos(code, data) async_log_util.run_sync() # L2TradeSingleDataProcessor.add_l2_delegate_limit_up_sell(code, {"val": {"orderNo": 123123}, "index": 123}) # # for data in datas: # L2TradeSingleDataProcessor.process_passive_limit_up_sell_data(code, data, 5.78) if __name__ == '__main__': # s # real_order_time_ms = "09:30:47" + ".{0:0>3}".format(220) # big_sell_order_info = [1809599, [[7351750, 208000, 8.7, (11042670, 527268), (11042670, 527275)]]] # max_money = 0 # for x in big_sell_order_info[1]: # deal_time = l2_huaxin_util.convert_time(x[4][0], with_ms=True) # if real_order_time_ms: # if tool.trade_time_sub_with_ms(deal_time, real_order_time_ms) >= 0: # print("123123") # test_process_transaction_datas() # BigOrderDealManager() pass