#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
#获取股票列表
#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,KDJ等进行分析
def Get_TA(df_Code,Dist):
operate_array1=[]
operate_array2=[]
operate_array3=[]
count =
0
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]
count = count +
1
if dflen>35:
try:
(df,operate1) = Get_MACD(df)
(df,operate2) = Get_KDJ(df)
(df,operate3) = Get_RSI(df)
except Exception, e:
Write_Blog(e,Dist)
pass
operate_array1.append(operate1)
#round(df.iat[(dflen-1),16],2)
operate_array2.append(operate2)
operate_array3.append(operate3)
if count00 == 0:
Write_Blog(str(count),Dist)
df_Code['MACD']=pd.Series(operate_array1,index=df_Code.index)
df_Code['KDJ']=pd.Series(operate_array2,index=df_Code.index)
df_Code['RSI']=pd.Series(operate_array3,index=df_Code.index)
return
df_Code
#通过MACD判断买入卖出
def Get_MACD(df):
#参数12,26,9
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)
#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
dflen =
df.shape[0]
MAlen =
len(SignalMA5)
operate =
0
#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] and
df.iat[(dflen-2),13]<=df.iat[(dflen-2),14]:
operate = operate + 10#买入
else:
if df.iat[(dflen-1),14]<0:
if df.iat[(dflen-1),13]=df.iat[(dflen-2),14]:
operate = operate - 10#卖出
#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上涨
operate = operate + 1
#4.分析MACD柱状线,由负变正,买入信号。
if
df.iat[(dflen-1),15]>0 and dflen >30 :
for i in range(1,26):
if df.iat[(dflen-1-i),15]<=0:#