学习视频来源B站:[link] https://www.bilibili.com/video/av55456917?t=566&p=17
Python机器学习与量化交易

——————————————————

照着视频码出来的原代码是这样的:

# 可以自己import我们平台支持的第三方python模块,比如pandas、numpy等。
# 在HS300,选出市值比较小的10只股票。


# 在这个方法中编写任何的初始化逻辑。context对象将会在你的算法策略的任何方法之间做传递。
def init(context):
    context.hs300 = index_components("000300.XSHG")

# before_trading此函数会在每天交易开始前被调用,当天只会被调用一次
def before_trading(context):
    # 获取过滤的股票
    q = query(
        fundamentals.eod_derivative_indicator.market_cap
        ).order_by(
            fundamentals.eod_derivative_indicator.market_cap
            ).filter(
                fundamentals.stockcode.in_(context.hs300)
                ).limit(20)

    fund = get_fundamentals()

    # 获得10只股票的名字
    context.stock_list = fund.T.index


# 你选择的证券的数据更新将会触发此段逻辑,例如日或分钟历史数据切片或者是实时数据切片更新
def handle_bar(context, bar_dict):
    # # 开始编写你的主要的算法逻辑
    # # bar_dict[order_book_id] 可以拿到某个证券的bar信息
    # # context.portfolio 可以拿到现在总的投资组合信息
    # # TODO: 开始编写你的算法吧!


    # 卖出
    # 去positions里面获取仓位
    for stock in context.portfolio.positions.keys():
        if stock not in context.stock_list:
            order_target_percent(stock,0)

    # 买入
    for stock in context.stock_list:
        order_target_percent(stock,1.0/20)



# after_trading函数会在每天交易结束后被调用,当天只会被调用一次
def after_trading(context):
    pass

“编译策略”运行,报错(下图):
在这里插入图片描述
提示line26,就去看了下。
发现前面定义了 q = query(…),却没赋值进 fund。所以,把

fund = get_fundamentals()

改成了

fund = get_fundamentals(q)

再编译一次。这次就编译出来了(下图)。
在这里插入图片描述
比较顺利。完。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐