一.數據導入
安裝tushare模塊包
pip install tushare
http://tushare.org/
tushare是一個財經數據接口包
import numpy as np import matplotlib as plt import pandas as pd import tushare as ts #獲取股票號為601318的股票信息 df=ts.get_k_data("601318") #將數據保存到本地,方便處理 df.to_csv("601318.csv",index=False) #獲取數據內的有用列,並將date列作為index df = pd.read_csv("601318.csv",index_col="date")[["open","close","high","low","volume"]]
二.分析股票策略
使用雙均線金叉點和死叉點
首先是添加5日均線點,和30日均線點
#獲取5日均線,10日均線 df["ma5"]=np.nan df["ma30"]=np.nan # 方式一 # for i in range(4, len(df)): # df.loc[df.index[i], 'ma5'] = df['close'][i-4:i+1].mean() # for i in range(29, len(df)): # df.loc[df.index[i], 'ma30'] = df['close'][i-29:i+1].mean() # 方式二 df["ma5"]=df["close"].rolling(5).mean() df["ma30"]=df["close"].rolling(30).mean()
三.查看數據圖形
df[["close","ma5","ma30"]].plot()
四.獲取金叉和死叉點
# 獲取金叉點,死叉點 golden_cross = [] death_cross = [] for i in range(1, len(df)): if df['ma5'][i] >= df['ma30'][i] and df['ma5'][i-1] < df['ma30'][i-1]: golden_cross.append(df.index[i]) if df['ma5'][i] < df['ma30'][i] and df['ma5'][i-1] >= df['ma30'][i-1]: death_cross.append(df.index[i])
五.計算收益
first_money = 100000 money = first_money hold = 0 # 持有的股票數 sr1 = pd.Series(1, index=golden_cross) sr2 = pd.Series(0, index=death_cross) sr = sr2.append(sr1).sort_index() for i in range(0, len(sr)): p = df['close'][sr.index[i]] if sr.iloc[i] == 1: #金叉 buy = (money // p*100) hold += buy*100 money -= buy*100*p else: money += hold*p hold = 0 p = df['close'][-1] now_money = hold*p + money now_money - first_money