返回介绍

第一部分 新手入门

第二部分 股票量化相关

第三部分 基金、利率互换、固定收益类

第四部分 衍生品相关

CMO策略模仿练习2

发布于 2022-02-20 22:26:15 字数 1697 浏览 815 评论 0 收藏 0

import numpy as np

start='2010-01-01'
end='2015-06-20'
benchmark='SH50'
universe=set_universe('SH50')
capital_base=1000000
window=35   # 参数,CMO指标计算周期
def initialize(account):
    pass
def handle_data(account):
    clp=account.get_attribute_history("closePrice",window)
    prc=account.get_attribute_history("preClosePrice",window)
    p=account.referencePrice
    # 计算CMO
    CMO= {}
    for s in account.universe:
        diff=clp[s]-prc[s]
        u=sum(n for n in diff if n>0)
        d=sum(-n for n in diff if n<0)
        if u+d==0: continue
        CMO[s]=(u-d)/(u+d)*100
    # 根据CMO卖出目前持有股票 
    v=account.cash
    for s,a in account.valid_secpos.items():
        if CMO.get(s,0)<0 and s in account.universe:
            order_to(s,0)
            v+=a*p[s]
    # 根据CMO确定买入列表
    buylist= []
    for s in account.universe:
        if CMO.get(s,0)<0 and not np.isnan(p[s]) and s not in account.valid_secpos:
            buylist.append(s) 
    if v > account.referencePortfolioValue * 0.33: # 为了避免调仓过于频繁,仅当可用现金超过账户市值1/3时买入
        for s in buylist:
            order(s, v/len(buylist)/ p[s])

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文