numpy+pandas+matplotlib+tushare股票分析


一.數據導入

安裝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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM