admin
2025-04-16 ddb27ef9f3d8da5edca359d14c469e12dffbe213
取消实盘
3个文件已修改
78 ■■■■■ 已修改文件
strategy/buying_strategy.py 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
strategy/data_cache.py 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
strategy/market_sentiment_analysis.py 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
strategy/buying_strategy.py
@@ -109,6 +109,22 @@
    async_log_util.info(logger, content)
# 获取具体的下单金额【具体选用哪一个参数作为下单金额,判断依据有优先级】
def get_order_money():
    """
    获取下单金额
    :return:
    """
    if data_cache.BUY_MONEY_PER_CODE > 0:
        logger.info(f"采用GUI设置方式=》今日计划下单金额:{data_cache.BUY_MONEY_PER_CODE}")
        return data_cache.BUY_MONEY_PER_CODE
    if data_cache.today_first_planned_order_amount > 0:
        logger.info(f"采用开仓策略首次计算结果=》今日计划下单金额:{data_cache.today_first_planned_order_amount}")
        return data_cache.today_first_planned_order_amount
    logger.info(f"采用开仓策略实时计算方式=》今日计划下单金额:{data_cache.today_planned_order_amount}")
    return data_cache.today_planned_order_amount
# 涨幅视界策略【根据涨幅进入视界为起始的策略】
def growth_view_strategy(current_info):
    symbol_code = current_info[0]  # 券商接口为纯数字编号
@@ -349,10 +365,10 @@
                                            logger_info(
                                                f"最新价: {current_price}, 当日最高价:{current_high},瞬时涨幅: {tick_growth:.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.index_trend_expectation_score}分,设想的下单金额:{data_cache.today_planned_order_amount}")
                                                f"大盘综合强度分数:{data_cache.real_time_market_strong},大盘指数情绪预期分数==={data_cache.index_trend_expectation_score}分,设想的下单金额:{get_order_money()}")
                                            # 调用下单方法下单
                                            order_methods.buy_order_by_value(symbol,
                                                                             data_cache.today_planned_order_amount,
                                                                             get_order_money(),
                                                                             k_line_data[0]['sec_name'],
                                                                             current_price)
                                            # 查看一下该股有无大单
@@ -535,10 +551,10 @@
                                                    logger_info(
                                                        f"最新价: {current_price}, 当日最高价:{current_high},瞬时涨幅: {tick_growth:.2f}%,当日当时涨幅:{today_growth}%,公司名称:{k_line_data[0]['sec_name']},当前时间:{current_created_at},低于水位线:{deep_low:.2f},交易量今日与昨日的比例{round(current_volume / k_line_data[0]['volume'], 2)}")  # 输出当前价格和3秒涨幅信息
                                                    logger_info(
                                                        f"大盘综合强度分数:{data_cache.real_time_market_strong},大盘指数情绪预期分数==={data_cache.index_trend_expectation_score}分,设想的下单金额:{data_cache.today_planned_order_amount}")
                                                        f"大盘综合强度分数:{data_cache.real_time_market_strong},大盘指数情绪预期分数==={data_cache.index_trend_expectation_score}分,设想的下单金额:{get_order_money()}")
                                                    # 调用下单方法下单
                                                    order_methods.buy_order_by_value(symbol,
                                                                                     data_cache.today_planned_order_amount,
                                                                                     get_order_money(),
                                                                                     k_line_data[0]['sec_name'],
                                                                                     current_price)
                                                    # # 将有强度买入次数自加1
strategy/data_cache.py
@@ -216,10 +216,16 @@
bought_plate = []
# 持仓金额自动管理开关
position_automatic_management_switch = True
# GUI手动设置的每次买入的金额
BUY_MONEY_PER_CODE = -1
# 初始化有概念买入金额
have_plate_buy_money = 3000
# 初始化有强度买入金额
have_strength_buy_money = 3000
# 开仓策略计算金额
opening_strategy_results = 0
# 今日第一次下单的金额
today_first_planned_order_amount = 0
# 今日计划下单金额
today_planned_order_amount = 0
@@ -254,8 +260,7 @@
# 大盘指数情绪预期分数
index_trend_expectation_score = 0
# 每次买入的金额
BUY_MONEY_PER_CODE = -1
# 可以板上盯卖的代码
LIMIT_UP_SELL_CODES = set()
strategy/market_sentiment_analysis.py
@@ -661,8 +661,6 @@
                    if data_cache.real_time_market_strong < 30:
                        # 如果大盘综合强度分数小于30,将低迷情绪分数比例设置为0.01,可用资金缩小一百倍
                        ideal_trading_market_score = 0.01
                        if data_cache.real_time_market_strong <= 10:
                            ideal_trading_market_score = 0
                    logger.info(f"理想交易行情分数===={ideal_trading_market_score * 100}%")
                    data_cache.index_trend_expectation_score = index_trend_expectation()
@@ -678,22 +676,33 @@
                    logger.info(f"今日的剩余新增持仓数量==={Unfinished_opening_plan_number}")
                    usefulMoney = data_cache.account_finance_dict[0].get('usefulMoney', 0)
                    logger.info(f"账户可用资金==={usefulMoney}元")
                    # 如果一日三仓的计划还未完成 且 未设置过开仓计划金额
                    if Unfinished_opening_plan_number != 0 and data_cache.today_planned_order_amount <= 0:
                        # 如果GUI看盘手动设置了具体的下单金额【ata_cache.BUY_MONEY_PER_CODE 中默认值为-1,只有当GUI看盘手动设置了并提交才会>=0】,就按照GUI设置的金额下单。否则就按照评分策略的金额下单,
                        if data_cache.BUY_MONEY_PER_CODE >= 0:
                            data_cache.today_planned_order_amount = data_cache.BUY_MONEY_PER_CODE
                            logger.info(f"采用GUI设置方式=》今日计划下单金额:{data_cache.today_planned_order_amount}")
                        else:
                            # 如果今日还没有一个新增仓位,就不停计算更新计划金额
                            if addition_position_number <= 0:
                                # 根据账户可用金额 计算今日计划下单金额
                                # 账户可用金额 默认乘以0.95,永远留一点钱,一方面也冗余一些计算误差
                                #  ((大盘综合强度分数 + 大盘指数情绪预期分数) * 0.01) * (账户可用金额 * 0.9 * 极端低迷情绪比例 / 今日最大新增持仓票数)
                                # data_cache.today_planned_order_amount = ((data_cache.real_time_market_strong + data_cache.index_trend_expectation_score) * 0.01) * (
                                #                                                 usefulMoney * 0.9 * low_emotion_mood_ratio / Unfinished_opening_plan_number)
                                data_cache.today_planned_order_amount = usefulMoney * 0.95 * ideal_trading_market_score / Unfinished_opening_plan_number
                                logger.info(f"采用开仓策略计算方式=》今日计划下单金额:{data_cache.today_planned_order_amount}")
                    # 开仓策略计算结果
                    # 根据账户可用金额 计算今日计划下单金额
                    # 账户可用金额 默认乘以0.95,永远留一点钱,一方面也冗余一些计算误差
                    #  ((大盘综合强度分数 + 大盘指数情绪预期分数) * 0.01) * (账户可用金额 * 0.9 * 极端低迷情绪比例 / 今日最大新增持仓票数)
                    # data_cache.today_planned_order_amount = ((data_cache.real_time_market_strong + data_cache.index_trend_expectation_score) * 0.01) * (
                    #                                                 usefulMoney * 0.9 * low_emotion_mood_ratio / Unfinished_opening_plan_number)
                    # 除以3应该是一个常量,如果以Unfinished_opening_plan_number,会出现float division by zero 错误
                    data_cache.today_planned_order_amount = usefulMoney * 0.95 * ideal_trading_market_score / 3
                    # 开仓计划运行时间段
                    if data_cache.OPENING_TIME < now_time < data_cache.NOON_MARKET_TIME:
                        # # 如果一日三仓的计划还未完成 且 首次开仓金额为0
                        if Unfinished_opening_plan_number != 0 and data_cache.today_first_planned_order_amount <= 0:
                            # 如果GUI看盘手动设置了具体的下单金额【data_cache.BUY_MONEY_PER_CODE 中默认值为-1,只有当GUI看盘手动设置了并提交才会>=0】,就按照GUI设置的金额下单。否则就按照评分策略的金额下单,
                            # if data_cache.BUY_MONEY_PER_CODE >= 0:
                            #     data_cache.today_planned_order_amount = data_cache.BUY_MONEY_PER_CODE
                            #     logger.info(f"采用GUI设置方式=》今日计划下单金额:{data_cache.today_planned_order_amount}")
                            # else:
                            #     # 如果今日还没有一个新增仓位,就不停计算更新计划金额
                            #     if addition_position_number > 0:
                            #         data_cache.today_planned_order_amount = data_cache.opening_strategy_results
                            #         logger.info(f"采用开仓策略计算方式=》今日计划下单金额:{data_cache.today_planned_order_amount}")
                            if addition_position_number > 0:
                                # 下过一次单过后再计算动态下单金额
                                data_cache.today_first_planned_order_amount = float(data_cache.today_planned_order_amount)
                                logger.info(
                                    f"采用开仓策略计算方式--》今日(首个)新增持仓产生,将实时计算金额赋值给首笔持仓金额=》今日计划下单金额:{data_cache.today_planned_order_amount}")
        except Exception as error:
            logger_debug.exception(error)
            logger.error(f"实时设置计划持仓数量 函数报错: {error}")