金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 2522|回复: 2

【Python策略】PE band

[复制链接]

30

主题

7075

帖子

7085

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2021-6-22 10:58 | 显示全部楼层 |阅读模式
本帖最后由 技术008 于 2021-8-25 13:08 编辑

PE-Bands就是在原始股价行情图上叠加多条每股收益乘以指定倍数的趋势线
1)是不是“好公司”:估值曲线朝上,表明公司的净利润/净资产持续增上,是好公司。反之为差公司。
2)是不是“好价格”:如果真实的股价线落在曲线上面,表面PE在历史高位。反之为估值历史低位。



注意事项:需提前补充好历史日线数据,以及基础财务数据,然后执行策略回测。在回测结束后就能得到如下的曲线图,合约选择在回测时候基准合约处进行选择
截图202106231625418459..png
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

30

主题

7075

帖子

7085

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
 楼主| 发表于 2021-6-23 16:25 | 显示全部楼层
本帖最后由 技术008 于 2021-8-25 13:07 编辑

代码如下:

[Python] 复制代码
[mw_shl_code=python,true]import numpy as npimport matplotlib.pyplot as plt
from PythonApi import *
def init(context):
    # 标的品种
    context.s1 = context.run_info.base_book_id  
    # 估值倍数 
    context.gz = {'40':[],'60':[],'80':[]}
    context.close = []
    context.date = []

# before_trading此函数会在每天基准合约的策略交易开始前被调用,当天只会被调用一次。--(选择实现)
def before_trading(context):
    pass


# 你选择的品种的数据更新将会触发此段逻辑,例如日或分钟历史数据切片或者是实时数据切片更新。--(必须实现)
def handle_bar(context):
    close = history_bars(context.s1,1,'1d','CLOSE')
    context.close.append(close[-1])
    context.date.append(context.now)
    get_fin = get_finance(context.s1,33,5,0,0)
    month = get_fin[-1].date_val.month
    if month == 3:    
        for i in context.gz.keys():
            context.gz[i].append(get_fin[-1].values*float(i)+get_fin[-2].values*float(i)-get_fin[0].values*float(i))
    if month == 6:
        for i in context.gz.keys():
            context.gz[i].append(get_fin[-1].values*float(i)+get_fin[-3].values*float(i)-get_fin[0].values*float(i))           
    if month == 9:
        for i in context.gz.keys():
            context.gz[i].append(get_fin[-1].values*float(i)+get_fin[-4].values*float(i)-get_fin[0].values*float(i)) 
    if month == 12:
        for i in context.gz.keys():
            context.gz[i].append(get_fin[-1].values*float(i))                            
# exit函数会在测评结束或者停止策略运行时会被调用。---(选择实现)
def exit(context):
    test_report_none()
    plt_show(context)

def plt_show(context):
    plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
    plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
    fig = plt.figure(figsize=(20,8))
    X = context.date
    Y = [context.close]
    labels = ['close']
    for i in context.gz.keys():
        Y.append(context.gz[i])
        labels.append(i+'倍动态PE估值')
    for i in range(len(Y)):
        plt.plot(X,Y[i],label=labels[i])
    #plt.xticks(X,color='blue',rotation=45)
    plt.title(context.s1)
    plt.xlabel('日期')
    plt.ylabel('价格',rotation=90)
    plt.legend(loc='best')
    plt.show()
[/mw_shl_code]

金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

0

主题

2

帖子

2

积分

Rank: 1

等级: 新手上路

注册:
2021-8-25
曾用名:
发表于 2021-8-25 16:01 | 显示全部楼层
更改的非常及时[赞][赞][赞]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 微信登录

本版积分规则

手机版|小黑屋|上海金之塔信息技术有限公司 ( 沪ICP备13035422号 )

GMT+8, 2024-11-16 02:47 , Processed in 0.337237 second(s), 31 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表