| | |
| | | from trade.huaxin import huaxin_trade_api, huaxin_trade_data_update, \ |
| | | huaxin_trade_record_manager, huaxin_trade_order_processor, huaxin_sell_util |
| | | from trade.huaxin.huaxin_trade_record_manager import PositionManager, DealRecordManager, DelegateRecordManager |
| | | from trade.buy_radical.radical_buy_data_manager import RadicalBuyBlockManager |
| | | from trade.buy_radical.radical_buy_data_manager import RadicalBuyBlockManager, BeforeSubDealBigOrderManager |
| | | from trade.sell import sell_manager |
| | | from trade.sell.sell_rule_manager import TradeRuleManager, SellRule |
| | | from trade.trade_data_manager import RadicalBuyDealCodesManager |
| | |
| | | bigger_money = l2_data_util_old.get_big_money_val(gpcode_manager.get_limit_up_price_as_num(code), |
| | | tool.is_ge_code(code)) |
| | | fdatas = [] |
| | | # 加载订阅之前的大单 |
| | | pre_deals = BeforeSubDealBigOrderManager().get_deal_big_order_money_list(code) |
| | | if pre_deals: |
| | | for d in pre_deals: |
| | | if d[0] < bigger_money: |
| | | continue |
| | | fdatas.append(d[0]) |
| | | for d in data_list: |
| | | if d < bigger_money: |
| | | continue |
| | |
| | | if index > real_place_order_index: |
| | | # L后后段已经囊括 |
| | | return False |
| | | # 下单位置之后数10笔卖单 |
| | | # 下单位置之后数10笔买单 |
| | | watch_indexes = set() |
| | | total_datas = local_today_datas.get(code) |
| | | MIN_NUM = int(5000 / gpcode_manager.get_limit_up_price_as_num(code)) |
| | |
| | | ########华鑫配置######## |
| | | if not is_windows() or True: |
| | | # 下单1手 |
| | | BUY_MONEY_PER_CODE = 500 if constant.IS_A else 20000 |
| | | BUY_MONEY_PER_CODE = 500 if constant.IS_A else 30000 |
| | | L2_SOURCE_TYPE = L2_SOURCE_TYPE_HUAXIN |
| | | JUEJIN_LOCAL_API = False |
| | | TRADE_WAY = TRADE_WAY_HUAXIN |
| | |
| | | L2_DATA_IS_LOADED = False |
| | | |
| | | # 可买入的金额 |
| | | AVAILABLE_BUY_MONEYS = [5000, 20000, 30000, 40000, 50000] |
| | | AVAILABLE_BUY_MONEYS = [5000, 30000, 35000, 40000, 45000, 50000] |
| | | |
| | | # 板上放量是否可扫入 |
| | | CAN_RADICAL_BUY_AT_LIMIT_UP = False |
| | |
| | | RADICAL_BUY_TOP_IN_COUNT_BY_MARKET_STRONG = [(0, 60, 20), (60, 70, 25), (70, 80, 30), (80, 90, 35), (90, 101, 40)] |
| | | # 辨识度的票板块最低流入前几 |
| | | RADICAL_BUY_TOP_IN_INDEX_WITH_SPECIAL = 20 |
| | | |
| | |
| | | from trade.huaxin.huaxin_trade_record_manager import DelegateRecordManager |
| | | from trade.order_statistic import DealAndDelegateWithBuyModeDataManager |
| | | from trade.buy_radical.radical_buy_data_manager import RadicalBuyDataManager, RadicalBuyBlockManager, \ |
| | | EveryLimitupBigDealOrderManager, RadicalCodeMarketInfoManager, RadicalBigOrderThresholdManager |
| | | EveryLimitupBigDealOrderManager, RadicalCodeMarketInfoManager, BeforeSubDealBigOrderManager |
| | | from trade.sell.sell_rule_manager import TradeRuleManager |
| | | from trade.trade_data_manager import RadicalBuyDealCodesManager |
| | | from trade.trade_manager import CodesTradeStateManager |
| | | from utils import socket_util, middle_api_protocol, tool, huaxin_util, global_util, trade_util, init_data_util |
| | | from utils import socket_util, middle_api_protocol, tool, huaxin_util, global_util, trade_util, init_data_util, \ |
| | | output_util |
| | | |
| | | trade_data_request_queue = queue.Queue(maxsize=1000) |
| | | |
| | |
| | | fresults = [] |
| | | if codes: |
| | | for code in codes: |
| | | try: |
| | | # 获取成交大单:(参考大单金额,已成交大单金额,大单要求金额) |
| | | th = BeforeSubDealBigOrderManager().get_big_order_threshold(code) |
| | | deal_big_money_info = radical_buy_data_manager.get_total_deal_big_order_info( |
| | | 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])) |
| | | except: |
| | | deal_big_order_info = None |
| | | code_name = gpcode_manager.get_code_name(code) |
| | | fresults.append((code, code_name)) |
| | | fresults.append((code, code_name, deal_big_order_info)) |
| | | |
| | | fdata = middle_api_protocol.load_l2_subscript_codes(fresults) |
| | | middle_api_protocol.request(fdata) |
| | |
| | | kpl_data_manager.KPLLimitUpDataRecordManager.total_datas, |
| | | latest_current_limit_up_records, |
| | | block_info.get_before_blocks_dict(), |
| | | kpl_data_manager.KPLLimitUpDataRecordManager.get_current_limit_up_reason_codes_dict(),codes_delegate, codes_success) |
| | | kpl_data_manager.KPLLimitUpDataRecordManager.get_current_limit_up_reason_codes_dict(), |
| | | codes_delegate, codes_success) |
| | | finally: |
| | | cls.__updating_jx_blocks_codes.discard(code_) |
| | | |
| | | |
| | | time_str = f"{data['dataTimeStamp']}" |
| | | if time_str.startswith("9"): |
| | |
| | | data["totalAskVolume"], sell_1_info, data.get("sell")) |
| | | # 炸板 |
| | | if sell_1_info and sell_1_info[1] > 0: |
| | | if RadicalBigOrderThresholdManager().is_need_update(code): |
| | | if BeforeSubDealBigOrderManager().is_need_update(code): |
| | | # 炸板更新数据 |
| | | cls.__sell_thread_pool.submit( |
| | | lambda: radical_buy_data_manager.pull_pre_deal_big_orders(code)) |
| | |
| | | if data["sell"] and len(data["sell"]) > 1 and data["sell"][1][1] > 0: |
| | | # 出现卖二 |
| | | radical_buy_strategy.clear_data(code, force=True) |
| | | |
| | | |
| | | # 设置扫入数据 |
| | | RadicalCodeMarketInfoManager().set_market_info(code, time_str, round(float(limit_up_price), 2), data["buy"][0], |
| | |
| | | @return: |
| | | """ |
| | | # 流入阈值 |
| | | THRESHOLD_MONEY = 100 * (tool.trade_time_sub(tool.get_now_time_str(), "09:30:00") // 60) + 1000 |
| | | THRESHOLD_MONEY = 50 * (tool.trade_time_sub(tool.get_now_time_str(), "09:30:00") // 60) + 1000 |
| | | THRESHOLD_MONEY = min(THRESHOLD_MONEY, 10000) |
| | | THRESHOLD_MONEY = max(THRESHOLD_MONEY, 1000) |
| | | THRESHOLD_MONEY = THRESHOLD_MONEY * 10000 |
| | |
| | | from utils import tool, global_util |
| | | |
| | | |
| | | # RadicalBigOrderThresholdManager |
| | | @tool.singleton |
| | | class RadicalBigOrderThresholdManager: |
| | | class BeforeSubDealBigOrderManager: |
| | | """ |
| | | 大单阈值管理 |
| | | 订阅之前的大单管理 |
| | | """ |
| | | __db = 3 |
| | | __big_order_threshold = {} |
| | |
| | | @param threshold_money: |
| | | @return: |
| | | """ |
| | | if code in self.__big_order_threshold: |
| | | return |
| | | async_log_util.info(logger_l2_radical_buy_data, f"大单阈值数据:{code}-{threshold_money}") |
| | | if threshold_money < 299e4: |
| | | # 小于299w的不保存 |
| | |
| | | total_deal_money = 0 |
| | | total_deal_money_info_list = [] |
| | | limit_up_price_money_list = [] |
| | | pre_limit_up_price_money_list = [] |
| | | deal_order_ids = BigOrderDealManager().get_total_buy_order_ids(code) |
| | | for info in money_list: |
| | | if info[1] != limit_up_price: |
| | |
| | | limit_up_price_money_list.append(info[0]) |
| | | if info[2] in deal_order_ids: |
| | | continue |
| | | pre_limit_up_price_money_list.append((info[0], info[2])) |
| | | total_deal_money += info[0] |
| | | total_deal_money_info_list.append(info) |
| | | if limit_up_price_money_list: |
| | | average_money = sum(limit_up_price_money_list) // len(limit_up_price_money_list) |
| | | self.set_big_order_threshold(code, average_money) |
| | | self.__already_total_deal_big_order_money[code] = total_deal_money |
| | | self.__already_total_deal_big_order_money[code] = (total_deal_money, pre_limit_up_price_money_list) |
| | | async_log_util.info(logger_l2_radical_buy_data, f"之前的大单:{code}-{total_deal_money}-{total_deal_money_info_list}") |
| | | |
| | | def get_big_order_threshold(self, code): |
| | |
| | | @return: |
| | | """ |
| | | if code in self.__already_total_deal_big_order_money: |
| | | return self.__already_total_deal_big_order_money[code] |
| | | return self.__already_total_deal_big_order_money[code][0] |
| | | return 0 |
| | | |
| | | def get_deal_big_order_money_list(self, code): |
| | | """ |
| | | 获取大单成交列表 |
| | | @param code: |
| | | @return: [(金额, 订单号)] |
| | | """ |
| | | if code in self.__already_total_deal_big_order_money: |
| | | return self.__already_total_deal_big_order_money[code][1] |
| | | return [] |
| | | |
| | | def is_need_update(self, code): |
| | | """ |
| | |
| | | @param code: |
| | | @return:(缺少的资金,总成交金额, 要求的大单金额) |
| | | """ |
| | | THRESHOLD_MONEY = RadicalBigOrderThresholdManager().get_big_order_threshold(code) |
| | | THRESHOLD_MONEY = BeforeSubDealBigOrderManager().get_big_order_threshold(code) |
| | | TOTAL_BIG_DEAL_MONEY_THRESHOLD_COUNT = round( |
| | | code_volumn_manager.CodeVolumeManager().get_max_volume_in_5days(code) * limit_up_price / 1e8, 2) |
| | | if tool.is_ge_code(code): |
| | |
| | | TOTAL_BIG_DEAL_MONEY_THRESHOLD_MONEY = TOTAL_BIG_DEAL_MONEY_THRESHOLD_COUNT * THRESHOLD_MONEY |
| | | deal_big_order_money = BigOrderDealManager().get_total_buy_money(code) |
| | | # 添加订阅之前缺失的大单 |
| | | deal_big_order_money += RadicalBigOrderThresholdManager().get_deal_big_order_money(code) |
| | | deal_big_order_money += BeforeSubDealBigOrderManager().get_deal_big_order_money(code) |
| | | try: |
| | | # 获取正在成交的订单 |
| | | dealing_order_info = HuaXinBuyOrderManager().get_dealing_order_info(code) |
| | |
| | | if before_time: |
| | | current_threshold_count = int(round(0.4 * money_y * 1.5)) |
| | | |
| | | THRESHOLD_MONEY = RadicalBigOrderThresholdManager().get_big_order_threshold(code) |
| | | THRESHOLD_MONEY = BeforeSubDealBigOrderManager().get_big_order_threshold(code) |
| | | |
| | | current_threshold_money = current_threshold_count * THRESHOLD_MONEY |
| | | |
| | |
| | | if response_data["code"] == 0: |
| | | datas = response_data["data"] |
| | | if datas: |
| | | RadicalBigOrderThresholdManager().set_big_deal_order_list(code_, datas, |
| | | BeforeSubDealBigOrderManager().set_big_deal_order_list(code_, datas, |
| | | gpcode_manager.get_limit_up_price_as_num(code_)) |
| | | |
| | | |