python股票分析源码_用python开发股票自动技术分析的软件

一、配置环境

python是个强大的工具,还有很多插件包可以用,所以完全可以考虑用python来编程实现股票的自动技术分析。

第一步就是实现股票历史数据的获取,这个有安装包TuShare可以用。首先是安装TuShare,直接在cmd中pip

install tushare。如果想确认安装成功,可以新建个python文件,输入

import tushare as ts

print ts.__version__

然后F5,肯定报错,提示缺少什么模块就到cmd中pip install 模块名字就行。

TuShare的教程

但是到了pandas会有问题,pip install搞不定,这个需要

matplotllib,openpyxl,setuptools,numpy,six,python-dateutil作为前置安装包。

我已经装了numpy和matplotlib,就少个python-dateutil,其他的可以pip search

包名字,如果不报错就说明已经安装了。

注意一下dateutil的安装应该是pip install

python-dateutil(不能光输入dateutil)

最后安装pandas,需要到http://www.lfd.uci.edu/~gohlke/pythonlibs/下载whl文件,然后在cmd模式中切换到解压缩文件夹中,pip

install 包名字.whl ,然后就ok了。

对于技术分析,可以用TA-lib的模块包,也是到上个url处下载whl文件,安装即可。

windows下安装:下载ta-lib-0.4.0-msvc.zip,然后解压到C:\ta-lib,然后执行pip

install ta-lib

二、大致的思路

大致的思路是

一、准备一个沪深股市的股票代码和简称的对照表,存在csv文件或者txt文件中。

二、读取这个文件,循环将所有股票的历史数据都下载到本地,保存为名字为股票代码的csv文件。

三、逐个读取所有这些csv文件,然后将数据转存为数组。

这里用MACD的例子来坐下分析。

首先是用TA-lib的macd函数计算macd值,函数输出3个值,macd(对应diff),macdsignal(对应dea),macdhist(对应macd)。然后按照下面的原则判断买入还是卖出。

1.DIFF、DEA均为正,DIFF向上突破DEA,买入信号。

2.DIFF、DEA均为负,DIFF向下跌破DEA,卖出信号。

3.DEA线与K线发生背离,行情反转信号。

4.分析MACD柱状线,由正变负,卖出信号;由负变正,买入信号。

四、将股票代码和卖出买入的判断写到本地文件中。

五、参考的网址

MACD函数介绍

pandas的使用举例

三、源码

#coding=utf-8

import tushare as ts

import talib as ta

import numpy as np

import pandas as pd

import os,time,sys,re,datetime

import csv

import scipy

import smtplib

from email.mime.text import MIMEText

from email.MIMEMultipart import

MIMEMultipart

#首先是获取沪深两市的股票列表

#这里得到是对应的dataframe数据结构,它是类似于excel中一片数据的数据结构,有这些列:code,代码 name,名称

industry,所属行业 area,地区 pe,市盈率 outstanding,流通股本 totals,总股本(万)

totalAssets,总资产(万)liquidAssets,流动资产 fixedAssets,固定资产

reserved,公积金 reservedPerShare,每股公积金 eps,每股收益 bvps,每股净资 pb,市净率

timeToMarket,上市日期

def Get_Stock_List():

df

= ts.get_stock_basics()

return

df

#然后定义通过MACD判断买入卖出

def Get_MACD(df_Code):

operate_array=[]

for

code in df_Code.index:

# 获取每只股票的历史价格和成交量 对应的列有index列,0 - 6列是 date:日期 open:开盘价 high:最高价

close:收盘价 low:最低价 volume:成交量 price_change:价格变动 p_change:涨跌幅

# 7-12列是 ma5:5日均价 ma10:10日均价 ma20:20日均价 v_ma5:5日均量v_ma10:10日均量

v_ma20:20日均量

df

= ts.get_hist_data(code,start='2014-11-20')

dflen

= df.shape[0]

operate

= 0

if

dflen>35:

macd,

macdsignal, macdhist = ta.MACD(np.array(df['close']),

fastperiod=12, slowperiod=26, signalperiod=9)

SignalMA5

= ta.MA(macdsignal, timeperiod=5, matype=0)

SignalMA10

= ta.MA(macdsignal, timeperiod=10, matype=0)

SignalMA20

= ta.MA(macdsignal, timeperiod=20, matype=0)

#在后面增加3列,分别是13-15列,对应的是

DIFF DEA DIFF-DEA df['macd']=pd.Series(macd,index=df.index)

#DIFF

df['macdsignal']=pd.Series(macdsignal,index=df.index)#DEA

df['macdhist']=pd.Series(macdhist,index=df.index)#DIFF-DEA

MAlen

= len(SignalMA5)

#2个数组

1.DIFF、DEA均为正,DIFF向上突破DEA,买入信号。

2.DIFF、DEA均为负,DIFF向下跌破DEA,卖出信号。

if

df.iat[(dflen-1),13]>0:

if

df.iat[(dflen-1),14]>0:

if

df.iat[(dflen-1),13]>df.iat[(dflen-1),14]:

operate

= operate + 1#买入

else:

if

df.iat[(dflen-1),14]<0:

if

df.iat[(dflen-1),13]]

operate

= operate - 1#卖出

#3.DEA线与K线发生背离,行情反转信号。

if

df.iat[(dflen-1),7]>=df.iat[(dflen-1),8] and

df.iat[(dflen-1),8]>=df.iat[(dflen-1),9]:#K线上涨

if

SignalMA5[MAlen-1]<=SignalMA10[MAlen-1] and

SignalMA10[MAlen-1]<=SignalMA20[MAlen-1]: #DEA下降

operate

= operate - 1

elif

df.iat[(dflen-1),7]<=df.iat[(dflen-1),8] and

df.iat[(dflen-1),8]<=df.iat[(dflen-1),9]:#K线下降

if

SignalMA5[MAlen-1]>=SignalMA10[MAlen-1] and

SignalMA10[MAlen-1]>=SignalMA20[MAlen-1]: #DEA上涨

你可能感兴趣的:(python股票分析源码)