循序渐进:用python做金融量化分析(二)一条移动平均线策略系统建立

在前言中我们讲了些基础知识,这一节正式开始从最简单的移动平均线讲起,移动平均线是在趋势行情中应用最广泛的策略,移动平均线有简单算术平均线,指数平均线,加权平均线,还可以分为一条均线,两条均线,三条均线策略等等,在这里我们从最简单的一条移动算术平均线开始,因为这个最简单,最好理解。策略的触发条件是当价格在移动平均线之上的时候,此时如果移动平均线趋势是向上的(即当日移动平均线价格大于上一日移动平均线价格),哪么就发出买入开仓信号,同理,当价格在移动平均线之下的时候,此时如果移动平均线是向下的,哪么就卖出平仓,另外还要加一个判断是否持仓的信号(即程序中的a==0),因为不加这个信号,系统按照前两个条件,就会不停的发出买入信号。感兴趣的朋友可试试if条件中去掉a==0这个条件看看结果有什么不同。
下面一段就是全部程序,很简单吧,懂点编程的应该都能看懂了,可以直接复制下来在spyder中直接运行,hs300.xls数据文件和运行文件放在同一个目录下就行了。这个系统可以算是量化系统的雏形了,要让它更加的自动化,智能化,后面还要进行优化完善,在后面的学习中,我们会逐步的增加新功能。

 

import xlrd
import matplotlib.pyplot as plt
buy=[]
sell=[]
a=0 #用于判断是否持仓,0代表空仓
xls = xlrd.open_workbook('hs300.xls')#打开文件
sheet = xls.sheets()[0]#打开表1
col = sheet.col_values(0)#打开第一列
ret=0
nrows = sheet.nrows #行数
Sma=[0.0 for i in range(nrows)]

for j in range(19,nrows):#计算20日均线数值
    Sma[j]=sum(col[(j-19):(j+1)])/20
for k in range(19,nrows): #收盘价在20日均线之上,且均线是向上的,空仓的时候买入
    if Sma[k-1]Sma[k] and a==0:
        buy.append(col[k])
        a=1
    elif col[k]


 

你可能感兴趣的:(python,量化,投资,均线)