「Python筆記」利用Python以及Tushare實(shí)現(xiàn)簡(jiǎn)單的均線策略

提供一個(gè)剛?cè)腴T(mén)的量化策略,5日均線突破10日買(mǎi)入狂芋,5日均線突破10日賣(mài)出。最后采用盈利20%。

import pandas as pd

import matplotlib.pyplot as plt

import tushare as ts

pro = ts.pro_api()

df = pro.daily(ts_code='000333.SZ', start_date='20150101', end_date='20181216')

介紹一下Tushare没炒,這是一個(gè)很方便調(diào)取數(shù)據(jù)的地方,大家注冊(cè)后就可以導(dǎo)出股票的任何數(shù)據(jù)

網(wǎng)站地址:https://tushare.pro/

ts_code是輸入股票代碼犯戏,后面是兩個(gè)日期送火,這樣就能得出美的DataFrame形式的數(shù)據(jù)拳话。

df.index=df.iloc[:,1]

df=df.sort_values(by=["trade_date"],ascending=True)

df.index=pd.to_datetime(df.index,format='%Y-%m-%d')

這里是由于Tushare導(dǎo)出來(lái)的數(shù)據(jù)是現(xiàn)在的排在前面,所以要重新排序一下

data=pd.DataFrame(index=df.index,columns=['close','mean5','mean10','signal'])

data['close']=df.close

data['mean5']=data.close.rolling(5).mean()

data['mean10']=data.close.rolling(10).mean()

data.mean5.iloc[0:9]=data.close.iloc[0:9]

data.mean10.iloc[0:9]=data.close.iloc[0:9]

plt.figure(figsize=(13,6), dpi=80)

plt.plot(data.close)

plt.plot(data.mean5)#5日20日均線圖

plt.plot(data.mean10)

生成移動(dòng)均線

for i in range(1,len(data)):#上穿為1种吸,開(kāi)倉(cāng)弃衍,下穿為-1,空倉(cāng)

if data.mean5.iloc[i]>data.mean10.iloc[i] and data.mean5.iloc[i-1]<data.mean10.iloc[i-1]:

data.signal.iloc[i]=1

elif data.mean5.iloc[i]<data.mean10.iloc[i] and data.mean5.iloc[i-1]>data.mean10.iloc[i-1]:

data.signal.iloc[i]=-1

else:

data.signal.iloc[i]=0

data.signal.iloc[0:2]=0

生成信號(hào)

#定義策略

def strategy(data,fee):

c=pd.DataFrame(index=data.index,columns=['close','signal','amount','a1','a2','cash','asset'])

c.open=wanke.open

c.close=data.close

c.signal=data.signal

c.amount.iloc[0]=0

c.cash.iloc[0]=1000000

c.asset.iloc[0]=1000000

for i in range(1,len(data)):

if c.signal.iloc[i]==0:#信號(hào)為0坚俗,持倉(cāng)不變

c.amount.iloc[i]=c.amount.iloc[i-1]#持倉(cāng)量

c.a1.iloc[i]=0#開(kāi)倉(cāng)量

c.a2.iloc[i]=0#出倉(cāng)量

c.cash.iloc[i]=c.cash.iloc[i-1]

c.asset.iloc[i]=c.cash.iloc[i]+c.amount.iloc[i]*c.close.iloc[i]*100

elif c.signal.iloc[i]==1:#5日均線大于10日均線镜盯,預(yù)計(jì)未來(lái)上升,開(kāi)倉(cāng)

c.a1.iloc[i]=int(1/2*c.cash.iloc[i-1]/c.open.iloc[i]/100)

c.a2.iloc[i]=0

c.amount.iloc[i]=c.amount.iloc[i-1]+c.a1.iloc[i]

c.cash.iloc[i]=c.cash.iloc[i-1]-c.a1.iloc[i]*c.open.iloc[i]*100*(1+fee)

c.asset.iloc[i]=c.cash.iloc[i]+c.amount.iloc[i]*c.close.iloc[i]*100

elif c.signal.iloc[i]==-1:

c.a1.iloc[i]=0

c.a2.iloc[i]=int(1/3*c.amount.iloc[i-1])

c.amount.iloc[i]=c.amount.iloc[i-1]-c.a2.iloc[i]

c.cash.iloc[i]=c.cash.iloc[i-1]+c.a2.iloc[i]*c.open.iloc[i]*100*(1-fee)

c.asset.iloc[i]=c.cash.iloc[i]+c.amount.iloc[i]*c.close.iloc[i]*100

return c

fee=0.0002

final=strategy(data,fee)

交易策略

#計(jì)算夏普比

d=pd.DataFrame(index=final.index,columns=['asset','dailyreturn','exturn','cumret'])

d['asset']=final['asset']

for i in range(1,len(d)):

d.dailyreturn.ix[i]=(d.asset.ix[i]-d.asset.ix[i-1])/d.asset.ix[i-1]

d['exturn']=d['dailyreturn']-0.04/250

stdexturn=d['exturn'].std()

meanexturn=d['exturn'].mean()

import numpy as np

ASR=np.sqrt(250)*meanexturn/stdexturn

print(ASR)

計(jì)算夏普比

plt.plot(d.asset)#資產(chǎn)變動(dòng)圖


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末猖败,一起剝皮案震驚了整個(gè)濱河市速缆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌恩闻,老刑警劉巖艺糜,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異幢尚,居然都是意外死亡倦踢,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)侠草,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)辱挥,“玉大人,你說(shuō)我怎么就攤上這事边涕∥畹猓” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵功蜓,是天一觀的道長(zhǎng)园爷。 經(jīng)常有香客問(wèn)我,道長(zhǎng)式撼,這世上最難降的妖魔是什么童社? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮著隆,結(jié)果婚禮上扰楼,老公的妹妹穿的比我還像新娘。我一直安慰自己美浦,他們只是感情好弦赖,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著浦辨,像睡著了一般蹬竖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,737評(píng)論 1 305
  • 那天币厕,我揣著相機(jī)與錄音列另,去河邊找鬼。 笑死旦装,一個(gè)胖子當(dāng)著我的面吹牛页衙,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播同辣,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼拷姿,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼惭载!你這毒婦竟也來(lái)了旱函?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤描滔,失蹤者是張志新(化名)和其女友劉穎棒妨,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體含长,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡券腔,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了拘泞。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纷纫。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖陪腌,靈堂內(nèi)的尸體忽然破棺而出辱魁,到底是詐尸還是另有隱情,我是刑警寧澤诗鸭,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布染簇,位于F島的核電站,受9級(jí)特大地震影響强岸,放射性物質(zhì)發(fā)生泄漏锻弓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一蝌箍、第九天 我趴在偏房一處隱蔽的房頂上張望青灼。 院中可真熱鬧,春花似錦妓盲、人聲如沸聚至。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)扳躬。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間贷币,已是汗流浹背击胜。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留役纹,地道東北人偶摔。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像促脉,于是被迫代替她去往敵國(guó)和親辰斋。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容