不管是對量化分析師還是普通的投資者來說,K線圖(蠟燭圖)都是一種很經(jīng)典、很重要的工具。在K線圖中,它會繪制每天的最高價、最低價、開盤價和收盤價,這對于我們理解股票的趨勢以及每天的多空對比很有幫助。
十余年的越城網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。成都營銷網(wǎng)站建設(shè)的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整越城建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“越城網(wǎng)站設(shè)計”,“越城網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
一般來說,我們會從各大券商平臺獲取K線圖,但是這種情況下獲得的K線圖往往不能靈活調(diào)整,也不能適應(yīng)復(fù)雜多變的生產(chǎn)需求。因此我們有必要學習一下如何使用Python繪制K線圖。
需要說明的是,這里mpl_finance是原來的matplotlib.finance,但是現(xiàn)在獨立出來了(而且好像沒什么人維護更新了),我們將會使用它提供的方法來繪制K線圖;tushare是用來在線獲取股票數(shù)據(jù)的庫;matplotlib.ticker中有個FuncFormatter()方法可以幫助我們調(diào)整坐標軸;matplotlib.pylab.date2num可以幫助我們將日期數(shù)據(jù)進行必要的轉(zhuǎn)化。
我們以上證綜指18年9月份以來的行情為例。
我們先使用mpl_finance繪制一下,看看是否一切正常。
可以看到,所有的節(jié)假日包括周末,在這里都會顯示為空白,這對于我們圖形的連續(xù)性非常不友好,因此我們要解決掉他們。
可以看到,空白問題完美解決,這里我們解釋一下。由于matplotlib會將日期數(shù)據(jù)理解為 連續(xù)數(shù)據(jù) ,而連續(xù)數(shù)據(jù)之間的間距是有意義的,所以非交易日即使沒有數(shù)據(jù),在坐標軸上還是會體現(xiàn)出來。連續(xù)多少個非交易日,在坐標軸上就對應(yīng)了多少個小格子,但這些小格子上方并沒有相應(yīng)的蠟燭圖。
明白了它的原理,我們就可以對癥下藥了。我們可以給橫坐標(日期)傳入連續(xù)的、固定間距的數(shù)據(jù),先保證K線圖的繪制是連續(xù)的;然后生成一個保存有正確日期數(shù)據(jù)的列表,接下來,我們根據(jù)坐標軸上的數(shù)據(jù)去取對應(yīng)的正確的日期,并替換為坐標軸上的標簽即可。
上邊f(xié)ormat_date函數(shù)就是這個作用。由于前邊我們給dates列生成了從0開始的序列連續(xù)數(shù)據(jù),因此我們可以直接把它當作索引,從真正的日期列表里去取對應(yīng)的數(shù)據(jù)。在這里我們要使用matplotlib.ticker.FuncFormattter()方法,它允許我們指定一個格式化坐標軸標簽的函數(shù),在這個函數(shù)里,我們需要接受坐標軸的值以及位置,并返回自定義的標簽。
你學會了嗎?
當然,一個完整的K線圖到這里并沒有結(jié)束,后邊我們會考慮加入均線、成交量等元素,感興趣的同學歡迎關(guān)注哦!
python沒有提供求平均數(shù)的函數(shù),建議先求和然后除以個數(shù)求得。
#!/usr/bin/env pythonimport timeimport numpy as np,dd = np.random.randint(0, 20, size=(2*1000*1000))t_start = time.clock()avg_sum1 =0.0BlockOffset = 0 ? ? while BlockOffset len(dd):if dd[BlockOffset + 1] = 10。
解釋性:
一個用編譯性語言比如C或C++寫的程序可以從源文件(即C或C++語言)轉(zhuǎn)換到一個你的計算機使用的語言(二進制代碼,即0和1)。這個過程通過編譯器和不同的標記、選項完成。
運行程序的時候,連接/轉(zhuǎn)載器軟件把你的程序從硬盤復(fù)制到內(nèi)存中并且運行。而Python語言寫的程序不需要編譯成二進制代碼。你可以直接從源代碼運行 程序。
在計算機內(nèi)部,Python解釋器把源代碼轉(zhuǎn)換成稱為字節(jié)碼的中間形式,然后再把它翻譯成計算機使用的機器語言并運行。這使得使用Python更加簡單。也使得Python程序更加易于移植。
a?=?2/13
Prices?=?[0.0]?#prices?of?everyday
EMAs?=?[0.0]?#?ems?of?everyday
def?ema?(?N?,?Price)?:
Prices.append(Price)
if?N=1:
EMAs.append(Price)
else?:
EMAs.append((1-a)*EMAs[N-1]?+?a*Price)
ema(1,1)
ema(2,3)
print?(EMAs[1])
print?(EMAs[2])
使用pandas可以快速計算
#?引入pandas包
import?pandas?as?pd
#?模擬近10天的交易數(shù)據(jù)
days?=?[1,?2,?3,?4,?5,?6,?7,?8,?9,?10]
#?生成DataFrame
df?=?pd.DataFrame(days,?columns=['a'])
#?使用rolling函數(shù)生成5日平均
df['b']?=?df.rolling(5).mean()
#?刪除空值
df?=?df.dropna()
#?使用any函數(shù)判斷是否全為真
any(df['a']??df['b'])
不清楚您python的水平,做數(shù)據(jù)工作建議多使用pandas
V:Python碼農(nóng)
在python中,定義一個函數(shù)要使用def語句,依次寫出函數(shù)名、括號、括號中的參數(shù)和冒號:,然后在縮進塊中編寫函數(shù)體,函數(shù)的返回值用return語句返回
def 函數(shù)名([參數(shù)1,參數(shù)2,...,參數(shù)n]):
函數(shù)體
函數(shù)代碼以def關(guān)鍵詞開頭,后接函數(shù)標識符名稱和圓括號():
任何傳入?yún)?shù)和自變量必須放在圓括號中間,圓括號之間可以用于定義參數(shù)
函數(shù)的第一行語句可以選擇性的使用文檔字符串-用于存放函數(shù)說明
函數(shù)內(nèi)容以冒號起始,并且縮進
return[表達式]結(jié)束函數(shù),選擇性的返回一個值給調(diào)用方,不帶表達式的return相當于返回None