❶ python量化教程:不得不學的K線圖「代碼復制可用」
不管是對量化分析師還是普通的投資者來說,K線圖(蠟燭圖)都是一種很經典、很重要的工具。在K線圖中,它會繪制每天的最高價、最低價、開盤價和收盤價,這對於我們理解股票的趨勢以及每天的多空對比很有幫助。
一般來說,我們會從各大券商平台獲取K線圖,但是這種情況下獲得的K線圖往往不能靈活調整,也不能適應復雜多變的生產需求。因此我們有必要學習一下如何使用Python繪制K線圖。
需要說明的是,這里mpl_finance是原來的matplotlib.finance,但是現在獨立出來了(而且好像沒什麼人維護更新了),我們將會使用它提供的方法來繪制K線圖;tushare是用來在線獲取股票數據的庫;matplotlib.ticker中有個FuncFormatter()方法可以幫助我們調整坐標軸;matplotlib.pylab.date2num可以幫助我們將日期數據進行必要的轉化。
我們以上證綜指18年9月份以來的行情為例。
我們先使用mpl_finance繪制一下,看看是否一切正常。
可以看到,所有的節假日包括周末,在這里都會顯示為空白,這對於我們圖形的連續性非常不友好,因此我們要解決掉他們。
可以看到,空白問題完美解決,這里我們解釋一下。由於matplotlib會將日期數據理解為 連續數據 ,而連續數據之間的間距是有意義的,所以非交易日即使沒有數據,在坐標軸上還是會體現出來。連續多少個非交易日,在坐標軸上就對應了多少個小格子,但這些小格子上方並沒有相應的蠟燭圖。
明白了它的原理,我們就可以對症下葯了。我們可以給橫坐標(日期)傳入連續的、固定間距的數據,先保證K線圖的繪制是連續的;然後生成一個保存有正確日期數據的列表,接下來,我們根據坐標軸上的數據去取對應的正確的日期,並替換為坐標軸上的標簽即可。
上邊format_date函數就是這個作用。由於前邊我們給dates列生成了從0開始的序列連續數據,因此我們可以直接把它當作索引,從真正的日期列表裡去取對應的數據。在這里我們要使用matplotlib.ticker.FuncFormattter()方法,它允許我們指定一個格式化坐標軸標簽的函數,在這個函數里,我們需要接受坐標軸的值以及位置,並返回自定義的標簽。
你學會了嗎?
當然,一個完整的K線圖到這里並沒有結束,後邊我們會考慮加入均線、成交量等元素,感興趣的同學歡迎關注哦!
❷ 如何用python做k線形態識別
K線形態識別是比較難的一個點,難在思路上,代碼都是其次。分享一下我的思路吧,通過api獲取了行情信息之後(一般都是pandas.DataFrame格式,基本上都包含ohlc和volume),那麼假如我需要識別十字星,那麼用df['open']==df['close']把其布爾值賦值給a, 然後df['high']>df['open']>df['low']賦值給b。然後
for i in range(len(df)):
df['outcome']=np.where(a+b==1, 1, 0)
df[df['outcome']==1]
這樣就能把所有的十字星給選出來了。
❸ 已知股票數據,如何用Python繪制k線日對應數據
我沒遇到過 只是自己寫過
有點經驗
先確定時間片
然後再把tick插入就行了
❹ Python 爬取同花順行業板塊日K線數據
最近一直想研究一下行業k線,找了很久,在同花順找到了獲取的url
比如,881129 通信設備板塊
http://d.10jqka.com.cn/v4/line/bk_881129/01/last.js 獲取日k線數據 但是需要cookie不然只能訪問一次
(利用Google瀏覽器的 右擊頁面 檢查--Network 可以看到頁面請求的url)
❺ 如何使用Python獲取股票分時成交數據
可以使用爬蟲來爬取數據,在寫個處理邏輯進行數據的整理。你可以詳細說明下你的需求,要爬取的網站等等。
希望我的回答對你有幫助
❻ 如何用python 接入實時行情數據
有專門的實時行情API介面,例如微盛的實時行情API介面,通過類似這樣的介面就可以接入了。
❼ tushare的介面怎麼樣使用
Tushare簡介
Tushare金融大數據開放社區,免費提供各類金融數據和區塊鏈數據,助力智能投資與創新型投資。網址:https://tushare.pro/register?reg=527754
註:推廣一下分享鏈接,幫我攢點積分,你好我也好 ^_^ 。
python環境安裝
強烈建議使用Anaconda,Anaconda的安裝見:https://tushare.pro/document/1?doc_id=29
python的IDE我使用vscode,在Anaconda主界面中直接打開vscode,它會幫你設置好環境,簡單方便。
tushare庫安裝
打開vscode的[查看]->[終端],輸入 pip install tushare 即可安裝tushare。輸入 pip install tushare --upgrade 即可更新tushare。缺少或者更新其他python庫,參照這個方法即可。
環境安裝好後,就可以開工了。直接上代碼,這份代碼從Tushare下載股票列表數據,保存為csv文件,同時保存在mssql資料庫中。
注意:在to_sql中的schema參數為資料庫名,需要帶上該資料庫的角色,我使用sa登錄,資料庫隸屬於dbo。使用to_sql不需要創建表,pandas會自動幫你創建好,也不需要自己寫插入數據的代碼,還是很方便的。如果你在表中增加了主鍵或者唯一索引,有重復數據時批量入庫會失敗。tushare本身是有少量重復數據的。採用逐行入庫的方式速度會比較慢,需要根據業務自己衡量選擇。
#!/usr/bin/python3
# coding:utf-8
# -*- coding: utf-8 -*-
import time
import datetime
import random
import tushare
import pandas
import pymssql
import sqlalchemy
#需修改的參數
stock_list_file = 'stock_list.csv' #股票列表文件csv
#tushare token
tushare_token='你自己的token'
#資料庫參數
db_host = '127.0.0.1'
db_user = 'sa'
db_password = 'pwd'
db_db = 'quantum'
db_charset = 'utf8'
db_url = 'mssql+pymssql://sa:[email protected]:1433/quantum'
#股票列表
def get_stock_basic() :
print('開始下載股票列表數據')
#獲取tushare
pro = tushare.pro_api()
#下載
data = pro.stock_basic(fields='ts_code,symbol,name,fullname,list_status,list_date,delist_date')
#保存到csv文件
data.to_csv(stock_list_file)
#入庫
engine = sqlalchemy.create_engine(db_url)
try:
#先一次性入庫,異常後逐條入庫
pandas.io.sql.to_sql(data, 'stock_basic', engine, schema='quantum.dbo', if_exists='append', index=False)
except :
#逐行入庫
print('批量入庫異常,開始逐條入庫.')
for indexs in data.index :
line = data.iloc[indexs:indexs+1, :]
try:
pandas.io.sql.to_sql(line, 'stock_basic', engine, schema='quantum.dbo', if_exists='append', index=False, chunksize=1)
except:
print('股票列表數據入庫異常:')
print(line)
finally:
pass
finally:
pass
print('完成下載股票列表數據')
return 1
#全量下載所有股票列表數據
if __name__ == '__main__':
print('開始...')
#初始化tushare
tushare.set_token(tushare_token)
print('獲取股票列表')
get_stock_basic()
print('結束')