策略選股跑完之後,卻找不到策略選股這個選項

用户头像mx_**805n6l
2026-04-21 发布

問下,已經寫好了程式碼,也完成了策略編輯,並完成回測了.但想使跑完的策略進行選股.這步驟該怎麼操作呢

评论

用户头像
2026-04-21 13:20:51

根据您提供的信息,您已经完成了策略的编写和回测,但找不到“策略选股”的选项。在SuperMind平台中,策略选股功能通常与组合优化器相关联,您可以通过组合优化器来实现策略选股。根据您提供的示例代码,您已经正确地使用了组合优化器来优化股票组合。为了进一步实现策略选股,您可以参考以下步骤:

  1. 确保策略中使用了组合优化器:您已经在optmize函数中使用了组合优化器来优化股票组合。这一步是正确的。

  2. 获取优化后的股票组合:在优化完成后,您可以通过调用optimized_weight()方法来获取优化后的股票权重。这一步您也已经完成了。

  3. 根据优化后的权重进行选股:在获取到优化后的权重后,您可以根据这些权重来决定哪些股票应该被选入组合。例如,您可以选择权重大于某个阈值的股票作为选中的股票。

  4. 将选中的股票列表输出或使用:您可以将选中的股票列表输出到日志中,或者将其用于后续的交易操作。

以下是根据您的示例代码,进一步实现策略选股的示例:

import random

def init(context):
    # 设置基准收益:中证500指数
    set_benchmark('000905.SH')
    # 打印日志
    log.info('策略开始运行,初始化函数全局只运行一次')
    # 设置股票每笔交易的手续费为万分之二(手续费在买卖成交后扣除,不包括税费,税费在卖出成交后扣除)
    set_commission(PerShare(type='stock', cost=0.0002))
    # 设置股票交易滑点0.5%,表示买入价为实际价格乘1.005,卖出价为实际价格乘0.995
    set_slippage(PriceSlippage(0.002))
    # 设置日级最大成交比例25%,分钟级最大成交比例50%
    # 日频运行时,下单数量超过当天真实成交量25%,则全部不成交
    # 分钟频运行时,下单数量超过当前分钟真实成交量50%,则全部不成交
    set_volume_limit(0.25, 0.5)
    # 从中证500中随机选取50股票
    stocks = random.sample(list(get_index_stocks('000905.SH', '2017-12-21')), 50)
    # 构建股票列表,形式为dict,以便后续使用组合优化器
    context.security = {ia: 0 for ia in stocks}
    # 构建初始股票权重
    context.hold = {ia: 0 for ia in stocks}
    # 股票权重限制
    context.weight = {ia: [0.0, 100.0] for ia in stocks}
    # 周频调仓
    run_weekly(func=optmize, date_rule=1, reference_security='000001.SZ')

def optmize(context, bar_dict):
    time = get_datetime().strftime('%Y%m%d')
    # 构造组合优化器,优化目标设置为最大化效用,使用历史收益率作为预期收益率
    opt = OptimizePort(context.security, '2017-12-21', True, opt_focus='UI', benchmark='000905.SH', period='w', holds=context.hold, long_short='long-only')
    opt.add_constraint('stock_weight', context.weight)
    # 添加跟踪误差约束
    opt.add_constraint('tracking_error', (-0.02, 0.02))
    # 使用组合优化器进行求解
    stock_weight = opt.optimized_weight()
    # 根据优化后的权重进行选股
    selected_stocks = {stock: weight for stock, weight in stock_weight.items() if weight > 0.01}
    # 将选中的股票列表输出到日志中
    log.info(f'选中的股票: {selected_stocks}')
    # 根据组合优化器结果进行权重调整
    for ia in stock_weight.keys():
        order_target_percent(ia, stock_weight[ia] / 100)

在这个示例中,我们通过设置一个权重阈值(例如0.01)来选择那些权重大于该阈值的股票,并将这些股票输出到日志中。您可以根据实际需求调整这个阈值。这样,您就可以实现策略选股的功能了。

评论