Python量化交易之二_工具庫(kù)

十年前有個(gè)朋友的畢業(yè)論文題目與股票數(shù)據(jù)分析相關(guān)跃须。于是他用程序?qū)崿F(xiàn)了解析通達(dá)信數(shù)據(jù)蚤吹、計(jì)算統(tǒng)計(jì)指標(biāo)千绪、繪圖……結(jié)果時(shí)間過(guò)去大半充易,核心的分析功能還沒(méi)開(kāi)始實(shí)現(xiàn)。

而現(xiàn)在使用Python語(yǔ)言荸型,下載數(shù)據(jù)盹靴、計(jì)算統(tǒng)計(jì)指標(biāo)、繪圖瑞妇,以及數(shù)據(jù)分析都有現(xiàn)成的工具稿静,我們不用再去關(guān)注細(xì)節(jié),可以將主要精力用于組合工具和實(shí)驗(yàn)踪宠。本篇將介紹量化交易相關(guān)的常用三方庫(kù)自赔。

1.常用三方庫(kù)

  • 數(shù)據(jù)分析工具
    Pandas:數(shù)據(jù)表工具
    Numpy:數(shù)學(xué)計(jì)算工具
    Scipy:數(shù)學(xué)計(jì)算工具
    Sklearn:機(jī)器學(xué)習(xí)工具

  • 下載數(shù)據(jù)
    TuShare:讀取國(guó)內(nèi)股票數(shù)據(jù)
    Pandas_reader:讀取國(guó)內(nèi)外股票數(shù)據(jù)

  • 回溯框架
    PyAlgoTrade:離線的分析回溯工具,PyAlgoTrade-cn為A股版本
    Zipline:分析回溯工具

  • 計(jì)算技術(shù)指標(biāo)
    TA-Lib:計(jì)算技術(shù)指標(biāo)柳琢,底層由C語(yǔ)言實(shí)現(xiàn)绍妨,支持150多個(gè)函數(shù)
    Pandas_talib:計(jì)算技術(shù)指標(biāo)润脸,由Python語(yǔ)言實(shí)現(xiàn),支持30多個(gè)函數(shù)

  • 金融繪圖
    Mpl_finance:金融繪圖工具他去,原matplotlib中的子模塊

數(shù)據(jù)分析工具比較通用毙驯,不在股票專題中介紹;上一篇在數(shù)據(jù)下載方法中介紹了Tushare和Pandas_reader軟件的用法灾测,下一篇將講解回溯工具爆价,本篇?jiǎng)t介紹計(jì)算技術(shù)指標(biāo)和金融相關(guān)的繪圖方法。

2.計(jì)算技術(shù)指標(biāo)

a) 技術(shù)指標(biāo)

Ta-lib支持150多個(gè)函數(shù)媳搪,而pandas_talib也加入了一些量?jī)r(jià)結(jié)合的新功能铭段,可以二者配合使用,通過(guò)分析pandas_talib源碼可以看到功能的具體實(shí)現(xiàn)方法秦爆。
Ta-lib從各種均線到蠟燭圖指標(biāo)序愚,能想到的差不多都有,分成以下幾類:

  • Overlap Studies(重疊研究類)
  • Momentum Indicators(動(dòng)量指標(biāo)類)
  • Volume Indicators(成交量指標(biāo)類)
  • Volatility Indicators(波動(dòng)性指標(biāo)類)
  • Price Transform(價(jià)格指標(biāo)類)
  • Cycle Indicators(周期指標(biāo)類)
  • Pattern Recognition(形態(tài)識(shí)別類)
  • Statistic Functions(統(tǒng)計(jì)函數(shù)類)
  • Math Transform(數(shù)學(xué)變換類)
  • Math Operators(數(shù)學(xué)運(yùn)算符類)

詳見(jiàn)talib中文文檔:https://github.com/HuaRongSAO/talib-document等限,點(diǎn)開(kāi)每個(gè)指標(biāo)都有中文說(shuō)明及例程爸吮。

b) 直接安裝

由于ta-lib底層依賴C語(yǔ)言實(shí)現(xiàn),在Windows系統(tǒng)中安裝過(guò)程相對(duì)比較麻煩望门,我在ubuntu系統(tǒng)中安裝形娇。

$ sudo pip install Ta-Lib
$ sudo pip install git+git://github.com/femtotrader/pandas_talib.git 

如果有以下錯(cuò)誤提示:
talib/_ta_lib.c:526:28: fatal error: ta-lib/ta_defs.h
這是由于沒(méi)有底層依賴C庫(kù)支持,在Ubuntu系統(tǒng)中用以下方法安裝筹误。

$ wget http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz
$ tar xvzf ta-lib-0.4.0-src.tar.gz
$ cd ta-lib/
$ ./configure
$ sudo make install
$ sudo ldconfig

c) Github下載

$ git clone https://github.com/mrjbq7/ta-lib.git
$ git clone https://github.com/femtotrader/pandas_talib.git

d) 使用方法

輸入數(shù)據(jù)默認(rèn)為Numpy的ndarray格式桐早,而Pandas也是基于Numpy,基本能直接使用纫事,使用方法形如: real = talib.ROC(df.close, timeperiod=10)

3.金融繪圖

從matplotlib2.2.0版本開(kāi)始勘畔,matplotlib.finance已經(jīng)從matplotlib中剝離出來(lái)所灸,名為mpl_finance丽惶,需要單獨(dú)安裝。

a) 安裝

$ sudo pip install https://github.com/matplotlib/mpl_finance/archive/master.zip

b) 使用

下例為使用tushare下載002230爬立,并繪制K線圖:

from matplotlib import pyplot as plt
import mpl_finance as mpf
from matplotlib.pylab import date2num
import pandas as pd
import datetime
import tushare as ts
%matplotlib inline

def draw(stock):
 stock['datestr'] = stock['date'].apply(lambda x: date2num(datetime.datetime.strptime(x,'%Y-%m-%d')))
 quotes = stock[['datestr','open','high','low','close']]
 fig, ax = plt.subplots(figsize=(12,8))
 fig.subplots_adjust(bottom=0.1)
 ax.xaxis_date()
 plt.xticks(rotation=45) #日期顯示的旋轉(zhuǎn)角度
 mpf.candlestick_ohlc(ax, quotes.values, width=0.7, colorup='r', colordown='g')

 # 格式是:date,open,high,low,close, 格式為list
 plt.grid(True)
 plt.show()

df = ts.get_hist_data('002230', start='2019-08-01')
df = df.reset_index()
draw(df)

程序運(yùn)行結(jié)果如下圖所示:

學(xué)任何一門復(fù)雜的技術(shù)都需要時(shí)間和精力钾唬,可以說(shuō)無(wú)捷徑可走,操作策略也需要經(jīng)過(guò)反復(fù)驗(yàn)證后再使用侠驯,不懂就做一般都會(huì)被割韭菜抡秆,所以要么花時(shí)間精力,要么交給適合的人吟策,要么別碰儒士。

?著作權(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)店門咖气,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(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)容

  • numpy介紹:一個(gè)用python實(shí)現(xiàn)的科學(xué)計(jì)算包。包括:1夺荒、一個(gè)強(qiáng)大的N維數(shù)組對(duì)象Array瞒渠;2良蒸、比較成熟的(廣...
    readilen閱讀 9,057評(píng)論 0 32
  • 1. 股票數(shù)據(jù)分析 ?股票數(shù)據(jù)分析和一般數(shù)據(jù)分析一樣,用到數(shù)據(jù)清洗分析伍玖,機(jī)器學(xué)習(xí)深度學(xué)習(xí)嫩痰,自然語(yǔ)言處理等技術(shù),當(dāng)我...
    xieyan0811閱讀 7,050評(píng)論 1 3
  • 市場(chǎng)有自己的時(shí)間觀念窍箍。股票投資就如同任何人類互動(dòng)一樣串纺,耐心是一項(xiàng)美德∫——羅伯特·D·愛(ài)德華《股市趨勢(shì)技術(shù)分析》 ...
    CuteHand閱讀 41,204評(píng)論 0 18
  • 要求: 在第1部分實(shí)驗(yàn)基礎(chǔ)上實(shí)現(xiàn)進(jìn)程的分頁(yè)式內(nèi)存分配和地址轉(zhuǎn)換過(guò)程纺棺,并進(jìn)一步實(shí)現(xiàn)請(qǐng)求分頁(yè)式存儲(chǔ)分配和地址轉(zhuǎn)換過(guò)程。...
    阿拉39閱讀 540評(píng)論 0 0
  • 商家在剛開(kāi)始玩社群時(shí)邪狞,由于新建社群的創(chuàng)意亮點(diǎn)吸引了一部分粉絲的關(guān)注和加入祷蝌,但是新的東西難免會(huì)有一些不夠完善的地方,...
    零叫獸閱讀 547評(píng)論 0 2