Python量化交易基础入门Numpy学习完整代码看这篇就够了

本章内容是我们视频教程中的代码示例,包含代码块的详细说明,完整代码附在文章最后面,大家可以用电脑版的微信打开并且复制下来。

  • 引入相关的包

使用numpy之前,我们需要先将numpy的包引进来,这里我们还引入了matplotlib的包,这个是用来画图用的。

import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
  • 定义计算N日移动均线计算函数
  • 方法名为moving_average,括号里面的为参数,a为自定义的行情数组,n为要计算的移动均线的个数,默认为5表示默认计算5日移动均线。

    # 计算n日移动均线def moving_average(a, n=5):
        ret = np.cumsum(a, dtype=float)
        ret[n:] = ret[n:] - ret[:-n]
        return ret[n - 1:] / n
  • 利用随机方法生成模拟行情数据
  • 我们这里直接先用python自带的随机数生成,我们生成一段模拟行情数据。后续我们学习tushare后,我们将使用实盘的行情数据。

    # 生成随机小数数组np.set_printoptions(precision=1)
    data_1 = np.random.rand(50)
    print(data_1)
    print("============")
    # 生成随机的整数数组data_2 = np.random.randint(15, 20, size=50)
    print(data_2)
    data_3 = data_1 + data_2
    print("============")
    print(data_3)
  • 利用Numpy获取行情指定的最大值与最小值,并计算移动均线
  • # 计算最大的数的索引位置max_index = np.argmax(data_3)
    print("最大值元素索引%d" % max_index)
    min_index = np.argmin(data_3)
    print("最小值元素索引%d" % min_index)
    
    # 移动均线数组print("移动均线")
    print(moving_average(data_3))
    • 以下是画图部分,画图没什么技巧,直接copy即可,因为后续画图的步骤大体都一样的。这里,我们主要是在图上打点,画出最大与最小值,并且画出一条移动均线。
    x = np.arange(0, 50, 1)
    plt.plot(x, data_3, "--*r")
    # 瞄最大点show_max = '[key=' + str(max_index) + ' value:' + str(round(data_3[max_index], 1)) + ']'plt.annotate(show_max, xytext=(max_index, data_3[max_index]), xy=(max_index, data_3[max_index]))
    # 瞄最小点show_min = '[key=' + str(min_index) + ' value:' + str(round(data_3[min_index], 1)) + ']'plt.annotate(show_min, xytext=(min_index, data_3[min_index]), xy=(min_index, data_3[min_index]))
    # 移动均线x_average = np.arange(4, 50, 1)
    plt.plot(x_average, moving_average(data_3))
    
    # 保存图mpl.rcParams['font.sans-serif'] = ["SimHei"]
    plt.title("行情及五日均线")
    plt.savefig("./20200423.png", dpi=300)
    plt.show()

    最后画出的行情效果图,如下图所示。

    Python量化交易基础入门Numpy学习完整代码看这篇就够了

    完整的源代码如下,使用pycharm打开,并且安装好numpy和matplotlib依赖包,直接ctrl+shift+F10即可运行,不懂得安装依赖包的,可以关注头条号【大操手量化投资】观看视频学习。

    """
    @Author: dacaoshou
    @微信公众号: 大操手量化投资
    @Site: http://dacaoshou.com
    @Software: pycharm
    @File:__init__.py.py
    @Time:2020/4/21 22:18
    @Description: 
    """
    
    import numpy as np
    import matplotlib.pyplot as plt
    import matplotlib as mpl
    
    
    # 计算n日移动均线
    def moving_average(a, n=5):
        ret = np.cumsum(a, dtype=float)
        ret[n:] = ret[n:] - ret[:-n]
        return ret[n - 1:] / n
    
    
    # 生成随机小数数组
    np.set_printoptions(precision=1)
    data_1 = np.random.rand(50)
    print(data_1)
    print("============")
    # 生成随机的整数数组
    data_2 = np.random.randint(15, 20, size=50)
    print(data_2)
    data_3 = data_1 + data_2
    print("============")
    print(data_3)
    
    # 计算最大的数的索引位置
    max_index = np.argmax(data_3)
    print("最大值元素索引%d" % max_index)
    min_index = np.argmin(data_3)
    print("最小值元素索引%d" % min_index)
    
    # 移动均线数组
    print("移动均线")
    print(moving_average(data_3))
    
    # 画图
    x = np.arange(0, 50, 1)
    plt.plot(x, data_3, "--*r")
    # 瞄最大点
    show_max = '[key=' + str(max_index) + ' value:' + str(round(data_3[max_index], 1)) + ']'
    plt.annotate(show_max, xytext=(max_index, data_3[max_index]), xy=(max_index, data_3[max_index]))
    # 瞄最小点
    show_min = '[key=' + str(min_index) + ' value:' + str(round(data_3[min_index], 1)) + ']'
    plt.annotate(show_min, xytext=(min_index, data_3[min_index]), xy=(min_index, data_3[min_index]))
    # 移动均线
    x_average = np.arange(4, 50, 1)
    plt.plot(x_average, moving_average(data_3))
    
    # 保存图
    mpl.rcParams['font.sans-serif'] = ["SimHei"]
    plt.title("行情及五日均线")
    plt.savefig("./20200423.png", dpi=300)
    plt.show()

    发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/76857
    站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

    (0)
    股市刺客的头像股市刺客
    上一篇 2024 年 7 月 12 日
    下一篇 2024 年 7 月 12 日

    相关推荐

    发表回复

    您的电子邮箱地址不会被公开。 必填项已用 * 标注