| | |
| | | from third_data import kpl_data_manager |
| | | from trade.buy_money_count_setting import RadicalBuyBlockCodeCountManager |
| | | from trade.trade_data_manager import RadicalBuyDealCodesManager |
| | | from utils import tool |
| | | from utils import tool, global_util |
| | | |
| | | |
| | | class RedicalBuyDataManager(): |
| | |
| | | 是否可以买 |
| | | @param code: 代码 |
| | | @param total_sell_volume: 总卖量 |
| | | @return: |
| | | @return: 是否可以买, 原因 |
| | | """ |
| | | k_format = code_nature_analyse.CodeNatureRecordManager().get_k_format_cache(code) |
| | | if k_format: |
| | |
| | | volume_rate = code_volumn_manager.get_volume_rate(code, total_sell_volume=total_sell_volume) |
| | | if volume_rate < 0.6: |
| | | return False, f"昨日炸板,量比({volume_rate})<0.6" |
| | | |
| | | # MAX_CODE_PRICE = 50 |
| | | # MIN_CODE_PRICE = 2 |
| | | # 获取涨停价 |
| | | price = gpcode_manager.get_limit_up_price_as_num(code) |
| | | if not price: |
| | | # 获取现价 |
| | | price = L1DataManager.get_l1_current_price(code) |
| | | if price: |
| | | if price < constant.MIN_CODE_PRICE or price > constant.MAX_CODE_PRICE: |
| | | if price < constant.MIN_CODE_RADICAL_BUY_PRICE or price > constant.MAX_CODE_RADICAL_BUY_PRICE: |
| | | return False, "价格不满足需求" |
| | | # 判断自由流通股本 |
| | | zyltgb = global_util.zyltgb_map.get(code) |
| | | if zyltgb: |
| | | zyltgb_as_yi = round(zyltgb / 100000000, 2) |
| | | if zyltgb_as_yi > 80: |
| | | return False, "自由流通市值过大" |
| | | if gpcode_manager.BlackListCodeManager().is_in_cache(code): |
| | | if deal_codes is not None and code in deal_codes: |
| | | pass |
| | |
| | | gpcode_manager.MustBuyCodesManager().add_code(code) |
| | | |
| | | |
| | | class EveryLimitupBigDealOrderManager: |
| | | """ |
| | | 每次上板的大单管理 |
| | | """ |
| | | # 成交大单的订单号:{"code":{"order_no",...}} |
| | | __deal_big_order_nos_dict = {} |
| | | |
| | | @classmethod |
| | | def open_limit_up(cls, code): |
| | | if code in cls.__deal_big_order_nos_dict: |
| | | cls.__deal_big_order_nos_dict[code].clear() |
| | | |
| | | @classmethod |
| | | def add_big_buy_order_deal(cls, code, order_nos:list): |
| | | if code not in cls.__deal_big_order_nos_dict: |
| | | cls.__deal_big_order_nos_dict[code] = set() |
| | | for order_no in order_nos: |
| | | cls.__deal_big_order_nos_dict[code].add(order_no) |
| | | |
| | | @classmethod |
| | | def get_big_buy_deal_order_count(cls, code): |
| | | if code in cls.__deal_big_order_nos_dict: |
| | | return len(cls.__deal_big_order_nos_dict[code]) |
| | | return 0 |
| | | |
| | | |
| | | def is_block_can_radical_buy(code, radical_buy_blocks, deal_codes): |
| | | # 原因下面的代码个数 |
| | | deal_reason_codes = {} |