python数据分析-价托模型下

1,841 阅读3分钟

「这是我参与 2022 首次更文挑战的第 17 天,活动详情查看:2022 首次更文挑战

君子以遏扬善,顺天休命。

前言

前文讲述了价托选股的模型理论部分,在这篇内容中我们会根据理论进行实际建模,来选择股票,根据模型的结果,找到对应的股票信息进行验证模型的准确性。本文有两个方面的内容,一是图形化展示均线信息,二是建立模型选择价托股票。

均线展示

均线图的展示就是使用简单移动平均计算的结果,计算的结果如下图所示:

均线图形的展示采用 matplotlib.pyplot.plot 方法进行绘图,在图形展示中需要设置以下参数:

import matplotlib.pyplot as plt
import matplotlib as mpl
# 设置字体,避免中文乱码的情况出现
mpl.rcParams['font.sans-serif'] = ["SimHei"]
mpl.rcParams["axes.unicode_minus"] = False
# 设置图片的宽度和高度,单位是inches
plt.rcParams['figure.figsize'] = (20.0, 8.0)

绘制均线图形的核心代码如下图所示:

    # plot 展示图形,展示收盘价和5、10、20日均线
    plt.plot(date_list, cl_list, label="close")
    plt.plot(date_list, m5_list, label="m5")
    plt.plot(date_list, ma10_list, label="m10")
    plt.plot(date_list, ma20_list, label="m20")

    # 设置图片名称和横坐标和纵坐标的名称
    plt.title('均线图', fontsize=20)
    plt.xlabel("时间", fontsize=20)
    plt.ylabel("价格", fontsize=20)
    # 每隔30个单位展示一个坐标,因为日期单位比较占地方,所以jian
    x_major_locator = MultipleLocator(30)
    ax = plt.gca()
    # ax为两条坐标轴的实例
    ax.xaxis.set_major_locator(x_major_locator)
    # 设置 x坐标轴的斜率 和 字体大小
    plt.xticks(rotation=-15, fontsize=15)
    plt.yticks(fontsize=15)

    # 添加网格,可有可无,只是让图像好看点
    plt.grid()
    # 展示图例,也就是 plot 中的 label 图标展示
    plt.legend()
    # 记得加这一句,不然不会显示图像
    plt.show()
    # 指定分辨率保存
    # plt.savefig('plot123_2.png', dpi=300)

绘图展示结果如下图所示:

模型搭建

模型的计算的步骤如下:

  • 1 循环遍历数据,这里将日期、日线数据使用 zip 压缩,这个可以将多个 list 或者 dict 同时进行遍历,并且要保证每个节点数据不能为空。
  • 2 计算当前节点和下一个节点是否满足日线交叉的情况。如果不满足交叉的情况,则返回 0,如果满足交叉的情况根据交叉的情况返回 1 或者-1。
# 如果满足条件,上穿返回1,下穿返回-1,否则返回 0
def line_cross(m1, m1_next, m2, m2_next):
    if m1 < m2 and m1_next > m2_next:
        return 1
    if m1 > m2 and m1_next < m2_next:
        return -1
    return 0
  • 3 交叉的点只能从 1 点到 2 点 ,2 点到 3 点,如果满足了前一个条件后过了 7 次循环依旧不能找到下一个交叉点,则从新进行计算。 最终展示的代码如下图所示: 根据以上的模型,选股的股票为中直股份(600038),输出的结果如下图所示:

结合上图的日线图和股票软件的日线图寻找,我们可以确认寻找的节点是为满足条件的。

总结

搭建模型寻找股票价托技术形态已经完成,示例中是选取的上升形态的数据,当然也可以下降形态的进行验证。至于怎么验证所有的数据,可以根据之前抓取基金数据的方法抓取目前存在的股票信息,逐个遍历获取最近发生价托的数据进行分析。具体的代码已经上传至 github ,欢迎大家关注。