金字塔决策交易系统

用户名  找回密码
 

微信登录

微信扫一扫,快速登录

帖子
查看: 3259|回复: 2

【Python策略】PE band

[复制链接]

44

主题

1万

帖子

1万

积分

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
回复

举报

44

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

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

代码如下:

[Python] 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
[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, 2025-7-25 22:07 , Processed in 0.170954 second(s), 31 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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