| | |
| | | # print(f"没有在概念缓存列表中找到:{symbol_to_search}。") |
| | | |
| | | # 声明要检查过滤不可用的概念板块名称常量 【代表着 是否有无概念及跟随概念的可能性(有明显个股独特增长特性的不可跟随,因为概念本身是宽泛的,许多不同概念的个股都有这个概念)】 |
| | | # check_plate_list = constant.check_plate_list | set(ForbiddenPlatesManager().list_plates()) |
| | | check_plate_list = constant.check_plate_list |
| | | # set(ForbiddenPlatesManager().list_plates() 将GUI上手动添加的拉黑概念也并入其中 |
| | | check_plate_list = constant.check_plate_list | set(ForbiddenPlatesManager().list_plates()) |
| | | # check_plate_list = constant.check_plate_list |
| | | |
| | | # 查询当前个股的代码是否在板块强度个股列表中(低吸优选目标) |
| | | strength_list_have_it = False # 是否有强度赋初值 |
| | |
| | | async_log_util.info(logger, |
| | | f"单一板块内瞬时拉升数为:{len(values)},分别为===={values}") |
| | | # 如果子列表长度大于1且第二个元素包含 当前进入涨幅视界的symbol_code |
| | | # 有强度视界 |
| | | strength_list_have_it = True |
| | | strength_plate = correlation_plate_list |
| | | if stock_list[6] >= 1: |
| | |
| | | ''' |
| | | 有概念视界 |
| | | ''' |
| | | if len(limit_up_plate_included) != 0 and limit_up_plate_included.issubset( |
| | | check_plate_list) is False: |
| | | if len(limit_up_plate_included) != 0 and limit_up_plate_included.issubset(constant.check_plate_list) is False: |
| | | logger_info( |
| | | f"【{k_line_data[0]['sec_name']}】--------------------------------------------------------------------------------------------------------[有概念视界]") |
| | | logger_info(f"包含涨停概念:{limit_up_plate_included}") |
| | |
| | | f"最新价: {current_price}, 当日最高价:{current_high},瞬时涨幅: {tick_growth:.2f}%,瞬时量幅比:{last_volume_to_growth_ratio:.2f}%,当日当时涨幅:{today_growth}%,公司名称:{k_line_data[0]['sec_name']},当前时间:{current_created_at},低于水位线:{deep_low:.2f},交易量今日与昨日的比例{round(current_volume / k_line_data[0]['volume'], 2)}") |
| | | logger_info( |
| | | f"大盘综合强度分数:{data_cache.real_time_market_strong},理想交易行情分数==={data_cache.ideal_trading_market_score}分,设想的下单金额:{get_order_money()}") |
| | | |
| | | # 传给GUI显示 |
| | | purchased_stock_details = { |
| | | "name": k_line_data[0]['sec_name'], |
| | | "policy_name": "有概念有强度策略分支", |
| | | "plate_name": list(limit_up_plate_included), |
| | | "buy_time_trading_volume_ratio": ( |
| | | current_volume / k_line_data[0]['volume']), |
| | | } |
| | | # 如果个股的所属概念板块在GUI手动添加后的拉黑版块里则不跳出不下单 |
| | | if limit_up_plate_included.issubset(check_plate_list) is True: |
| | | logger_info( |
| | | f"【不利】有概念板块在GUI手动添加后的拉黑板块里!不买了!!公司名称:{k_line_data[0]['sec_name']},GUI手动添加后的拉黑板块=={check_plate_list}") |
| | | return |
| | | # 调用下单方法下单 |
| | | order_methods.buy_order_by_value(symbol, |
| | | get_order_money(), |
| | | k_line_data[0]['sec_name'], |
| | | current_price) |
| | | data_cache.purchased_stocks_details_list.append(purchased_stock_details) |
| | | |
| | | logger_info(f"已成交股票详情列表:{data_cache.purchased_stocks_details_list} ") |
| | | # 检测持仓代码集合中有无下单个股,才认为交易成功 |
| | | if symbol_code not in data_cache.position_symbols_set: |
| | | logger_info( |
| | |
| | | data_cache.bought_plate.extend(limit_up_plate_included_list) |
| | | logger_info( |
| | | f"【{k_line_data[0]['sec_name']}】交易成功!持仓集合:{data_cache.position_symbols_set}") |
| | | # 传给GUI显示 |
| | | purchased_stock_details = { |
| | | "name": k_line_data[0]['sec_name'], |
| | | "policy_name": "有概念有强度策略分支", |
| | | "plate_name": limit_up_plate_included, |
| | | "buy_time_trading_volume_ratio": (current_volume / k_line_data[0]['volume']), |
| | | } |
| | | data_cache.purchased_stocks_details_list.append(purchased_stock_details) |
| | | logger_info(f"已成交股票详情列表:{data_cache.purchased_stocks_details_list} ") |
| | | |
| | | # 有概念无强度视界 |
| | | if strength_list_have_it is False: |
| | | logger_info( |
| | |
| | | f"************************************************【有概念无强度指标下单】************************************************") |
| | | logger_info( |
| | | f"最新价: {current_price}, 当日最高价:{current_high},瞬时涨幅: {tick_growth:.2f}%,瞬时量幅比:{last_volume_to_growth_ratio:.2f}%,当日当时涨幅:{today_growth}%,公司名称:{k_line_data[0]['sec_name']},当前时间:{current_created_at},低于水位线:{deep_low:.2f},交易量今日与昨日的比例{round(current_volume / k_line_data[0]['volume'], 2)}") |
| | | # 传给GUI显示 |
| | | purchased_stock_details = { |
| | | "name": k_line_data[0]['sec_name'], |
| | | "policy_name": "有概念无强度策略分支", |
| | | "plate_name": list(limit_up_plate_included), |
| | | "buy_time_trading_volume_ratio": ( |
| | | current_volume / k_line_data[0]['volume']), |
| | | } |
| | | data_cache.purchased_stocks_details_list.append(purchased_stock_details) |
| | | logger_info( |
| | | f"已成交股票详情列表:{data_cache.purchased_stocks_details_list} ") |
| | | # 检测持仓代码集合中有无下单个股,才认为交易成功 |
| | | if symbol_code not in data_cache.position_symbols_set: |
| | | logger_info( |
| | |
| | | data_cache.bought_plate.extend(limit_up_plate_included_list) |
| | | logger_info( |
| | | f"【{k_line_data[0]['sec_name']}】交易成功!持仓集合:{data_cache.position_symbols_set}") |
| | | # 传给GUI显示 |
| | | purchased_stock_details = { |
| | | "name": k_line_data[0]['sec_name'], |
| | | "policy_name": "有概念无强度策略分支", |
| | | "plate_name": limit_up_plate_included, |
| | | "buy_time_trading_volume_ratio": ( |
| | | current_volume / k_line_data[0]['volume']), |
| | | } |
| | | data_cache.purchased_stocks_details_list.append(purchased_stock_details) |
| | | logger_info( |
| | | f"已成交股票详情列表:{data_cache.purchased_stocks_details_list} ") |
| | | |
| | | ''' |
| | | 无概念 有强度视界 |
| | | ''' |
| | |
| | | get_order_money(), |
| | | k_line_data[0]['sec_name'], |
| | | current_price) |
| | | # 传给GUI显示 |
| | | purchased_stock_details = { |
| | | "name": k_line_data[0]['sec_name'], |
| | | "policy_name": "无概念有强度策略分支", |
| | | "plate_name": list(strength_plate), |
| | | "buy_time_trading_volume_ratio": ( |
| | | current_volume / k_line_data[0]['volume']), |
| | | } |
| | | data_cache.purchased_stocks_details_list.append( |
| | | purchased_stock_details) |
| | | logger_info( |
| | | f"已成交股票详情列表:{data_cache.purchased_stocks_details_list} ") |
| | | # 检测持仓代码集合中有无下单个股,才认为交易成功 |
| | | if symbol_code not in data_cache.position_symbols_set: |
| | | logger_info( |
| | |
| | | data_cache.bought_plate.extend(strength_plate) |
| | | logger_info( |
| | | f"【{k_line_data[0]['sec_name']}】交易成功!持仓集合:{data_cache.position_symbols_set}") |
| | | # 传给GUI显示 |
| | | purchased_stock_details = { |
| | | "name": k_line_data[0]['sec_name'], |
| | | "policy_name": "无概念有强度策略分支", |
| | | "plate_name": strength_plate, |
| | | "buy_time_trading_volume_ratio": ( |
| | | current_volume / k_line_data[0]['volume']), |
| | | } |
| | | data_cache.purchased_stocks_details_list.append( |
| | | purchased_stock_details) |
| | | logger_info( |
| | | f"已成交股票详情列表:{data_cache.purchased_stocks_details_list} ") |
| | | |
| | | ''' |
| | | 无概念无强度 有小量换大涨幅度视界 |
| | | ''' |
| | |
| | | ''' |
| | | if k_line_data[0]['attribute'] in data_cache.limit_up_type: |
| | | # logger_info(f"昨日涨停") |
| | | if k_line_data[1]['attribute'] not in data_cache.limit_up_type and k_line_data[2][ |
| | | 'attribute'] not in data_cache.limit_up_type: |
| | | if k_line_data[1]['attribute'] not in data_cache.limit_up_type and k_line_data[2]['attribute'] not in data_cache.limit_up_type: |
| | | # logger_info(f"前日大前日未涨停") |
| | | if today_open_growth > 1: |
| | | logger_info( |
| | |
| | | logger_info(f"昨日首板涨停,当日中等以上高开 {today_open_growth}% !") |
| | | if limit_up_day > 6 and any( |
| | | 'attribute' in d and d['attribute'] in data_cache.limit_up_type for |
| | | d in k_line_data[1:3]) and current_volume <= k_line_data[0][ |
| | | 'volume'] * 1.5: |
| | | d in k_line_data[1:3]) and current_volume <= k_line_data[0]['volume'] * 1.5: |
| | | logger_info( |
| | | f"【不利】过于显著票 且 前日或上前日涨停板 当日量还不足昨日量的1.5倍!不买!! 今日当时成交量为昨日等比量的{round(current_volume / k_line_data[0]['volume'], 2)}倍,90天内涨停天数:{limit_up_day}") |
| | | elif len(TodayBuyCodeManager().get_buy_codes()) >= 3: |
| | |
| | | # 以下部分主要计算整体的花费时间 |
| | | # 将current_created_at转换为datetime对象,这里假设是今天的日期 |
| | | # 注意:这里使用了datetime.now()来获取当前日期,但你可以根据需要调整 |
| | | created_at = datetime.datetime.strptime(tool.get_now_date_str() + " " + current_created_at, |
| | | created_at = datetime.datetime.strptime(data_cache.DataCache().today_date + " " + current_created_at, |
| | | "%Y-%m-%d %H:%M:%S").timestamp() |
| | | # print(f"created_at===={created_at}") |
| | | # print(f"created_at type===={type(created_at)}") |