python基础代码_Python量化交易基础入门Numpy学习代码示例

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

  • 引入相关的包

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

import numpy as npimport matplotlib.pyplot as pltimport 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_2print("============")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()

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

7974189c5dfc0e0a911823e20dfeb756.png

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

附源码:

import numpy as npimport matplotlib.pyplot as pltimport 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_2print("============")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()

如果觉得文章好的话,帮忙点【在看】分享给更多想学习量化交易的朋友哦。关注我,jeevan老师每天带你学习一点量化交易知识。

b83aa0b9638184b4808c99a279486dbb.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值