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
|