一、介紹

成都創(chuàng)新互聯(lián)公司成都網(wǎng)站建設(shè)按需定制設(shè)計(jì),是成都網(wǎng)站開(kāi)發(fā)公司,為茶樓設(shè)計(jì)提供網(wǎng)站建設(shè)服務(wù),有成熟的網(wǎng)站定制合作流程,提供網(wǎng)站定制設(shè)計(jì)服務(wù):原型圖制作、網(wǎng)站創(chuàng)意設(shè)計(jì)、前端HTML5制作、后臺(tái)程序開(kāi)發(fā)等。成都網(wǎng)站制作熱線(xiàn):028-86922220
Tushare是一個(gè)免費(fèi)、開(kāi)源的python財(cái)經(jīng)數(shù)據(jù)接口包。
安裝包:
pip install tushare
二、簡(jiǎn)單策略
輸出該股票所有收盤(pán)比開(kāi)盤(pán)上漲3%以上的日期。輸出該股票所有開(kāi)盤(pán)比前日收盤(pán)跌幅超過(guò)2%的日期。
假如我從2010年1月1日開(kāi)始,每月第一個(gè)交易日買(mǎi)入1手股票,每年最后一個(gè)交易日賣(mài)出所有股票,到今天為止,我的收益如何?
import tushare as ts
df = ts.get_k_data("600519",start="1990-01-01")
df.to_csv("600519.csv",index=False) #寫(xiě)入文件中,得到股票歷史數(shù)據(jù)信息
#對(duì)股票信息進(jìn)行策略分析
import numpy as np
import pandas as pd
df = pd.read_csv("600519.csv",index_col="date",parse_dates=["date"]) #從600519.csv中讀取數(shù)據(jù),date列作為索引
df[(df["close"]-df["open"])/df["open"] > 0.03 ].index #收盤(pán)比開(kāi)盤(pán)上漲3% 的所有日期
df[(df["open"]-df["close"].shift(1)) /df["close"].shift(1) < -0.02].index #df["close"].shift(1) 前一天收盤(pán)價(jià)
df_monthly=df.resample("M").first() #每月的第一個(gè)交易日,日期看著是最后一天,數(shù)據(jù)是第一天的
df_yearly=df.resample("A").last() #每年的最后一個(gè)交易日
df_yearly=df_yearly.iloc[:-1,:] #去掉最后一行,因?yàn)楸灸曜詈筮€沒(méi)到,取得是昨天的數(shù)據(jù)
cost=0
num=0
for year in range(2010,2019):
cost += (df_monthly[str(year)]["open"] *100 ).sum() #df_monthly[str(year)]["open"] 每月的開(kāi)盤(pán)價(jià)買(mǎi)進(jìn)
num= 100 * len(df_monthly[str(year)]["open"]) #每月買(mǎi)一手,一手是100股
if year !=2018:
cost -= df_yearly[str(year)]["open"][0] *num #賣(mài)出股票,抵消花費(fèi)
num = 0
cost -= num *df["close"].iloc[-1]
print(-cost)
#df.resample("W").mean() #每周的平均值
#df.resample("W").first() #每周的第一天三、雙均線(xiàn)策略
均線(xiàn):對(duì)于每一個(gè)交易日,都可以計(jì)算出前N天的移動(dòng)平均值,然后把這些移動(dòng)平均值連起來(lái),成為一條線(xiàn),就叫做N日移動(dòng)平均線(xiàn)。
移動(dòng)平均線(xiàn)常用線(xiàn)有5天、10天、30天、60天、120天和240天的指標(biāo)。
5天和10天的是短線(xiàn)操作的參照指標(biāo),稱(chēng)做日均線(xiàn)指標(biāo);
30天和60天的是中期均線(xiàn)指標(biāo),稱(chēng)做季均線(xiàn)指標(biāo);
120天、240天的是長(zhǎng)期均線(xiàn)指標(biāo),稱(chēng)做年均線(xiàn)指標(biāo)。
金叉:短期均線(xiàn)上穿長(zhǎng)期均線(xiàn)
死叉:短期均線(xiàn)下穿長(zhǎng)期均線(xiàn)
策略:分析5日均線(xiàn)和30日均線(xiàn),在金叉把所有錢(qián)(開(kāi)始有100000元)買(mǎi)入股票,死叉拋出所有股票
import numpy as np import pandas as pd import matplotlib.pyplot as plt import tushare as ts 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["open"].rolling(5).mean() #5日雙均線(xiàn) df["ma30"]=df["open"].rolling(30).mean() #30日雙均線(xiàn) #處理數(shù)據(jù):丟掉nan并取到需要的時(shí)間段 df = df.dropna() df = df["2010-01-01":] #取到金叉和死叉的值 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] #5日均線(xiàn)作天小于30日均線(xiàn),在今天大于等于30日均線(xiàn) # golden_cross.append(df.index[i].to_pydatetime()) # # if df["ma5"][i] <= df["ma30"][i] and df["ma5"][i - 1] > df["ma30"][i - 1] #5日均線(xiàn)昨天大于30日均線(xiàn),在今天小于等于30日均線(xiàn) # death_cross.append(df.index[i].to_pydatetime()) sr1 = df["ma5"] < df["ma30"] sr2 = df["ma5"] >= df["ma30"] death_cross = df[sr1 & sr2.shift(1)].index golden_cross = df[~((sr1) | (sr2.shift(1)))].index #golden_cross = df[((~sr1) & (~sr2.shift(1)))].index #把金叉和死叉合并起來(lái),一個(gè)金叉接著一個(gè)死叉排序 sr1 = pd.Series(1,index=golden_cross) sr2 = pd.Series(0,index=death_cross) sr= sr1.append(sr2).sort_index() first_money=100000 money= first_money hold=0 #有多少股的股票 for i in range(0,len(sr)): p = df["open"][sr.index[i]] #單股價(jià)格 if sr.iloc[i] == 1: #金叉 buy=(money// (100*p)) #可以買(mǎi)多少手股票 hold += buy*100 #股票數(shù) money-= buy*100*p #剩余多少錢(qián) else: money += hold*p #賣(mài)出股票 hold = 0 p = df["close"][-1] now_money= hold*p +money print(now_money)
分享標(biāo)題:tushare做量化投資分析
網(wǎng)頁(yè)地址:http://chinadenli.net/article38/piedpp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)、微信公眾號(hào)、品牌網(wǎng)站制作、小程序開(kāi)發(fā)、關(guān)鍵詞優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)