| | |
| | | from code_attribute.code_l1_data_manager import L1DataManager |
| | | from code_attribute.gpcode_manager import CodePrePriceManager, CodesNameManager, \ |
| | | WantBuyCodesManager |
| | | from huaxin_client import l2_data_transform_protocol |
| | | from huaxin_client import l2_data_transform_protocol, l1_subscript_codes_manager |
| | | from huaxin_client.trade_transform_protocol import TradeResponse |
| | | from l2 import l2_data_manager_new, l2_log, code_price_manager, l2_data_util, transaction_progress, \ |
| | | l2_data_source_util, l2_data_log, data_callback |
| | |
| | | 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, logger_l2_trade |
| | | from third_data import block_info, kpl_data_manager, history_k_data_manager, huaxin_l1_data_manager, kpl_api, kpl_util |
| | | from third_data import block_info, kpl_data_manager, history_k_data_manager, huaxin_l1_data_manager, kpl_api, kpl_util, \ |
| | | third_blocks_manager |
| | | from third_data.code_plate_key_manager import KPLCodeJXBlockManager, RealTimeKplMarketData, \ |
| | | KPLPlateForbiddenManager |
| | | from third_data.history_k_data_manager import HistoryKDataManager |
| | | 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 |
| | |
| | | EveryLimitupBigDelegateOrderManager |
| | | from trade.sell.sell_rule_manager import TradeRuleManager |
| | | from trade.trade_data_manager import RadicalBuyDealCodesManager |
| | | from trade.trade_manager import CodesTradeStateManager |
| | | from trade.trade_manager import CodesTradeStateManager, CodesContinueBuyMoneyManager |
| | | from utils import socket_util, middle_api_protocol, tool, huaxin_util, global_util, trade_util, init_data_util, \ |
| | | output_util |
| | | |
| | |
| | | code, gpcode_manager.get_limit_up_price_as_num(code)) |
| | | deal_big_order_info = ( |
| | | output_util.money_desc(th), output_util.money_desc(deal_big_money_info[1]), |
| | | output_util.money_desc(deal_big_money_info[2])) |
| | | output_util.money_desc(deal_big_money_info[2]), deal_big_money_info[0] <= 0) |
| | | except: |
| | | deal_big_order_info = None |
| | | code_name = gpcode_manager.get_code_name(code) |
| | |
| | | code, gpcode_manager.get_limit_up_price_as_num(code)) |
| | | deal_big_order_info = ( |
| | | output_util.money_desc(th), output_util.money_desc(deal_big_money_info[1]), |
| | | output_util.money_desc(deal_big_money_info[2])) |
| | | output_util.money_desc(deal_big_money_info[2]), deal_big_money_info[0] <= 0) |
| | | except: |
| | | deal_big_order_info = None |
| | | code_name = gpcode_manager.get_code_name(code) |
| | |
| | | # if d["pre_close"] * tool.get_limit_up_rate(d["sec_id"]) > constant.MAX_SUBSCRIPT_CODE_PRICE: |
| | | # continue |
| | | if (d["listed_date"] + datetime.timedelta( |
| | | days=100)).timestamp() > datetime.datetime.now().timestamp(): |
| | | days=20)).timestamp() > datetime.datetime.now().timestamp(): |
| | | continue |
| | | fdatas.append(d["sec_id"]) |
| | | code_name_map[d["sec_id"]] = d["sec_name"] |
| | |
| | | huaxin_trade_record_manager.DelegateRecordManager.add([data]) |
| | | if huaxin_util.is_deal(order_status): |
| | | if int(str(data["direction"])) == huaxin_util.TORA_TSTP_D_Buy: |
| | | # 订单成交回调,移除续买金额+拉黑 |
| | | CodesContinueBuyMoneyManager().remove_continue_buy_money(data["securityID"]) |
| | | l2_trade_util.forbidden_trade(data["securityID"], msg="已成交", force=True) |
| | | if TradePointManager.get_latest_place_order_mode( |
| | | data["securityID"]) == OrderBeginPosInfo.MODE_RADICAL: |
| | |
| | | |
| | | radical_buy_data_manager.ExcludeIndexComputeCodesManager.remove_code(code) |
| | | |
| | | if result_by_volume[0] == radical_buy_strategy.BUY_MODE_DIRECT and not tool.is_sh_code(code): |
| | | if result_by_volume[0] == radical_buy_strategy.BUY_MODE_DIRECT: |
| | | # 上证不能根据成交买入 |
| | | latest_deal_time = l2_huaxin_util.convert_time(transaction_datas[-1][3]) |
| | | refer_sell_data = L2MarketSellManager().get_refer_sell_data(code, latest_deal_time) |
| | |
| | | threshold_money = 0 |
| | | every_deal_orders = EveryLimitupBigDealOrderManager.list_big_buy_deal_orders(code) |
| | | if every_deal_orders: |
| | | min_order_no = min(every_deal_orders, lambda x: x[0])[0] |
| | | min_order_no_info = min(every_deal_orders, key=lambda x: x[0]) |
| | | min_order_no = min_order_no_info[0] |
| | | else: |
| | | min_order_no = transaction_datas[-1][6] |
| | | |
| | |
| | | mode_desc=f"扫入买入:{buy_blocks}, 大单成交最小订单号:{min_order_no}", |
| | | sell_info=sell_info, |
| | | threshold_money=threshold_money, |
| | | min_order_no= min_order_no |
| | | min_order_no=min_order_no |
| | | ) |
| | | L2TradeDataProcessor.save_order_begin_data(code, order_begin_pos_info) |
| | | buy_result = L2TradeDataProcessor.start_buy(code, total_datas[-1], total_datas[-1]["index"], |
| | |
| | | # 下单成功 |
| | | radical_buy_data_manager.BlockPlaceOrderRecordManager().add_record(code, buy_blocks) |
| | | radical_buy_strategy.clear_data(code, force=True) |
| | | RDCancelBigNumComputer().clear_data(code) |
| | | # RDCancelBigNumComputer().clear_data(code) |
| | | # 大单成交足够 |
| | | RadicalBuyDataManager().big_order_deal_enough(code) |
| | | # RadicalBuyDataManager().big_order_deal_enough(code) |
| | | return True |
| | | else: |
| | | if transaction_datas: |
| | |
| | | logger_debug.info("更新昨日开盘啦实时涨停数据") |
| | | |
| | | |
| | | def __update_l1_target_codes(): |
| | | try: |
| | | codes_sh, codes_sz = l1_subscript_codes_manager.request_l1_subscript_target_codes() |
| | | if codes_sh and codes_sz: |
| | | l1_subscript_codes_manager.save_codes(codes_sh, codes_sz) |
| | | # 拉取三方板块 |
| | | codes = [] |
| | | codes.extend(codes_sh) |
| | | codes.extend(codes_sz) |
| | | third_blocks_manager.load_if_less(codes) |
| | | except Exception as e: |
| | | logger_debug.error(e) |
| | | |
| | | |
| | | # 做一些初始化的操作 |
| | | def __init(): |
| | | def run_pending(): |
| | |
| | | # 更新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:02:01").do(lambda: history_k_data_manager.update_history_k_bars(force=True)) |
| | | # 更新账户信息 |
| | | 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) |
| | | # 更新代码 |
| | | schedule.every().day.at("15:58:00").do(__update_l1_target_codes) |
| | | # 更新K线 |
| | | schedule.every().day.at("16:30:00").do(history_k_data_manager.update_history_k_bars) |
| | | |
| | | while True: |
| | | try: |
| | |
| | | # 初始化数据 |
| | | BuyMoneyAndCountSetting() |
| | | gpcode_manager.WantBuyCodesManager() |
| | | # 加载历史K线数据 |
| | | HistoryKDataManager().load_data() |
| | | # 队列持久化 |
| | | threading.Thread(target=lambda: DelegateRecordManager().run(), daemon=True).start() |
| | | |
| | | |
| | | def run(queue_strategy_r_trade_w, queue_strategy_w_trade_r, queue_strategy_w_trade_r_for_read, trade_ipc_addr): |