科技改變生活 · 科技引領(lǐng)未來(lái)
這個(gè)是前幾天我親自弄的入門(mén)Python操作指導(dǎo),后面可以做量化編程,主要是可以為我們做交易策略提供一個(gè)分析工具。不需要外面的那種9.9學(xué)Python,這個(gè)就是免費(fèi)學(xué)Python的了,大家按照文章步驟操作就好了,每一步也都有操作截圖。首先說(shuō)下
這個(gè)是前幾天我親自弄的入門(mén)Python操作指導(dǎo),后面可以做量化編程,主要是可以為我們做交易策略提供一個(gè)分析工具。不需要外面的那種9.9學(xué)Python,這個(gè)就是免費(fèi)學(xué)Python的了,大家按照文章步驟操作就好了,每一步也都有操作截圖。
首先說(shuō)下這篇文章是我自己操作過(guò)的一個(gè)技術(shù)實(shí)操帖,本來(lái)是適合在這種廣大程序員碼農(nóng)們的地盤(pán)分享的帖子,類似CSDN這樣的平臺(tái)去講的,但是由于一堆朋友對(duì)股票投資的量化策略交易感興趣,且python入門(mén)還很簡(jiǎn)單易學(xué),即便是一些沒(méi)學(xué)過(guò)代碼的朋友,也都可以按照我等下要講的圖文教學(xué)來(lái)跑通第一個(gè)python的第一個(gè)程序,所以這里詳細(xì)來(lái)給大家寫(xiě)一篇來(lái)帶粉絲們?nèi)腴T(mén),大家可以先過(guò)一遍文章之后拿上電腦按照下文的步驟一步步跟著實(shí)際操作。
這里先說(shuō)下編程其實(shí)并沒(méi)有大家想象的那么困難,比如你要實(shí)現(xiàn)一些地調(diào)取行情,買(mǎi)賣(mài)交易,實(shí)際上直接復(fù)制某知名港美股券商給的一些代碼就可以實(shí)現(xiàn)了,至于怎么實(shí)現(xiàn)調(diào)取行情,買(mǎi)賣(mài)交易這些某知名港美股券商都給你寫(xiě)好了底層的代碼,這些就叫做API, 其實(shí)很多程序員也都是熟練使用ctrl+c(復(fù)制)和ctrl+v(粘貼),CV別人的代碼挺好的,因?yàn)橹辽偎邆淞怂阉饕约白约航鉀Q問(wèn)題的能力。而他們很多案例就可以直接CV來(lái)解決自己的需求了。某知名港美股券商提供了Python、Java、C#、C++、Javascript5種編程語(yǔ)言的api代碼,這里Python是最簡(jiǎn)單易學(xué)的,我們后面給大家分析的也都是通過(guò)Python還有券商提供的api來(lái)操作。
先說(shuō)一個(gè)背景,就比如我之前我在寫(xiě)交易的公眾號(hào)上面說(shuō)的這個(gè)套利策略:
透露一個(gè)Trader的日內(nèi)T+0的規(guī)律票套利策略玩法
如果可以通過(guò)編程把某一個(gè)股票的最后一分鐘k線的漲跌幅全部導(dǎo)出,那是不是就可以回測(cè)出勝率情況了?比如某個(gè)股票這三個(gè)月來(lái),每天最后收盤(pán)的最后1分鐘漲跌幅情況。這個(gè)API里面可以獲取到這些歷史數(shù)值,比如00700股票這三個(gè)月來(lái)每天收盤(pán)的最后1分鐘的漲跌幅情況,如下圖所示,也是這幾天我寫(xiě)好的案例。這里我通過(guò)python程序統(tǒng)計(jì)了騰訊,美團(tuán)阿里最后一分鐘漲跌幅這三個(gè)月以來(lái)的數(shù)據(jù)還有勝率情況。
這個(gè)要是手工統(tǒng)計(jì)雖然也是可以的,但是肯定很耗時(shí)間,三個(gè)月的數(shù)據(jù)需要花費(fèi)不少功夫的。如果python可以完成這個(gè)操作,是不是就非常方便了,再如果可以自動(dòng)下單買(mǎi)賣(mài),那就是量化交易的一種了。
下面開(kāi)始給大家說(shuō)說(shuō)具體是要怎么玩,首先是需要看某知名港美股券商的操作說(shuō)明:
這里不能發(fā)外部鏈接,需要的可以來(lái)私聊的。
他們給的這個(gè)futu-api操作文檔其實(shí)還是很不錯(cuò)的,實(shí)操性很強(qiáng),各種接口都有案例代碼可以復(fù)制粘貼,給我們量化編程節(jié)省了很多時(shí)間,這個(gè)的確是值得夸獎(jiǎng)的。
我是用電腦Windows 10 的 64 位操作系統(tǒng)來(lái)操作的,就是大家平時(shí)用的普通電腦,首先需要安裝三個(gè)軟件:FutuOpenD,Python解釋器,PyCharm編譯工具,這里下載完成之后以后的用法就是我下圖這樣的:
1.FutuOpenD
FutuOpenD是 券商給的網(wǎng)關(guān)程序,需要下載安裝,運(yùn)行于您的本地電腦就可以,負(fù)責(zé)指令數(shù)據(jù)請(qǐng)求到券商的服務(wù)器,并將處理后的數(shù)據(jù)返回。FutuOpenD提供可視化和命令行兩種運(yùn)行方式,命令行是給碼農(nóng)們用的,比較復(fù)雜不適合廣大散戶朋友,我們這里介紹操作比較簡(jiǎn)單的可視化 FutuOpenD,下載之后直接安裝到自己電腦里面。
按照f(shuō)utuapi的文檔操作需要注意的地方如下所示:
打開(kāi)這個(gè)FutuOpenD 軟件之后,直接輸入某知名港美股券商的賬戶名和密碼,選擇記住密碼和自動(dòng)登錄就行了,至于右邊基礎(chǔ)設(shè)置和高級(jí)設(shè)置里面不需要去操作的,全部按照默認(rèn)就好了。api文檔上面寫(xiě)的密文是明文這些都不用去管,那些是不在自己電腦操作才需要弄的,不是給非專業(yè)玩家搞的。簡(jiǎn)單點(diǎn)弄直接下載登陸之后就可以不用管他了。
專業(yè)的解釋是這樣的:
在本地或云端安裝并啟動(dòng)一個(gè)網(wǎng)關(guān)程序 FutuOpenD。FutuOpenD 以自定義 TCP 協(xié)議的方式對(duì)外暴露接口,負(fù)責(zé)中轉(zhuǎn)協(xié)議請(qǐng)求到券商服務(wù)器,并將處理后的數(shù)據(jù)返回,該協(xié)議接口與編程語(yǔ)言無(wú)關(guān)。
2.Python解釋器
按照f(shuō)utuapi的文檔操作,需要下載安裝。這個(gè)是python解釋器,解釋python腳本執(zhí)行的程序,當(dāng)開(kāi)發(fā)者在編寫(xiě)python代碼保存后,就會(huì)得到一個(gè)以“.py”為擴(kuò)展名的文本文件,若要運(yùn)行此文件,就需要python解釋器去執(zhí)行“.py”文件。Python版本要求:Python 3.6 及以上,這個(gè)用法更簡(jiǎn)單,直接下載之后就可以不用管他了。
3.PyCharm編譯工具
PyCharm這是復(fù)制和寫(xiě)代碼用的,同樣需要按照f(shuō)utuapi的文檔操作,需要下載安裝,pycharm是一款編程軟件(碼農(nóng)的專業(yè)世界里面叫做IDE),帶有一整套可以幫助用戶在使用Python語(yǔ)言開(kāi)發(fā)時(shí)提高其效率的工具。比如調(diào)試、語(yǔ)法高亮、Project管理、代碼跳轉(zhuǎn)、智能提示、自動(dòng)完成、單元測(cè)試、版本控制。這個(gè)是最主要的,也是我們?cè)谶@個(gè)過(guò)程中用得最多的軟件。
如果你想實(shí)現(xiàn)任何股票歷史數(shù)據(jù)整理,量化分析量化交易,需要編寫(xiě)代碼或者復(fù)制粘貼的代碼都在這里,或者從其他地方復(fù)制代碼,粘貼在這里的,然后編譯跑起來(lái)。
按照f(shuō)utuapi的文檔操作需要注意的地方如下所示:
下載安裝好了這三個(gè)軟件之后,就可以正式開(kāi)始我們的python編程的第一個(gè)簡(jiǎn)單程序的運(yùn)行了。
第一步:注冊(cè)開(kāi)戶某知名港美股券商以及使用券商賬戶登錄 FutuOpenD,因?yàn)闀?huì)有訂閱額度和歷史 K 線額度限制的限制,非某知名港美股券商客戶的基本上就無(wú)法使用了,還沒(méi)開(kāi)的可以點(diǎn)擊下面鏈接注冊(cè)開(kāi)戶:
第二步:下載 券商的的Python API。操作上這樣的在 cmd 中直接使用 pip 安裝。
首先需要知道cmd怎么打開(kāi)?這里給小白朋友們說(shuō)下:
按WIN鍵+R鍵打開(kāi)運(yùn)行,輸入cmd后回車進(jìn)入命令提示符,cmd上輸入指令
初次安裝:Windows 系統(tǒng)窗口 輸入指令 pip install futu-api
二次升級(jí):Windows 系統(tǒng)窗口輸入指令 pip install futu-api --upgrade
輸入完成之后等待一段時(shí)間,因?yàn)樗麄儠?huì)自動(dòng)下載券商的Python API中間不要停也不要關(guān)掉,一直等到全部完成,會(huì)出現(xiàn)C:Users...這樣的就代表下載結(jié)束了,可能中間會(huì)出現(xiàn)網(wǎng)速慢連接超時(shí)的情況,會(huì)導(dǎo)致操作失敗,就和我下圖這種情況這樣,切換一個(gè)網(wǎng)絡(luò),比如用手機(jī)熱點(diǎn)來(lái)連接電腦,再去輸入指令pip install futu-api --upgrade重新下載。
直到不再出現(xiàn)紅色字體報(bào)錯(cuò),就算是完成了,正確完成之后如果輸入pip install futu-api --upgrade或者pip install futu-api會(huì)出現(xiàn)下圖這個(gè)情況。
此時(shí)券商api的代碼包算是成功下載到電腦里面
第三步:創(chuàng)建新項(xiàng)目
打開(kāi) PyCharm編程軟件,在 Welcome to PyCharm 窗口中,點(diǎn)擊 New Project,按照下圖的操作打開(kāi)。
可以先學(xué)會(huì)編譯的操作,這個(gè)main.py是一個(gè)主函數(shù),可以初始代碼運(yùn)行起來(lái)是可以打印出Hi PyCharm的,如下圖所示:
第四步:futu api的包添加進(jìn)工程。這一步非常重要,券商api的的說(shuō)明書(shū)操作步驟里面沒(méi)詳細(xì)寫(xiě)這個(gè),只在Q&A里面提到了,在第三步新建的工程下面點(diǎn)擊file--->setting...--->Project :pythonProject --->Python Interpreter --->點(diǎn)擊+(添加futu-api的庫(kù))--->選擇futu-api--->Install Package
Futu API 的正確名稱為futu-api,而非“futu”。如果您安裝過(guò)名為“futu”的第三方庫(kù),請(qǐng)將其卸載。
點(diǎn)擊了Install Package之后,等待大約1分鐘左右會(huì)添加成功,如下圖所示
這里說(shuō)下如果沒(méi)添加成功,futu-api的庫(kù),程序編譯跑起來(lái)的時(shí)候會(huì)出現(xiàn)我遇到的 這樣的問(wèn)題,會(huì)出現(xiàn)5個(gè)錯(cuò)誤警告的,也會(huì)出現(xiàn)各種問(wèn)題。
第四步:復(fù)制代碼編譯
復(fù)制某知名港美股券商的api教程中的代碼,讓第一個(gè)量化程序跑起來(lái)!
緊接著上面的代碼,在main.py里面,從18行開(kāi)始復(fù)制下面的代碼進(jìn)去
示例代碼功能包括查看行情快照、模擬交易下單。
from futu import *
quote_ctx = OpenQuoteContext(host='127.0.0.1', port=11111) # 創(chuàng)建行情對(duì)象
print(quote_ctx.get_market_snapshot('HK.00700')) # 獲取港股 HK.00700 的快照數(shù)據(jù)
quote_ctx.close() # 關(guān)閉對(duì)象,防止連接條數(shù)用盡
trd_ctx = OpenSecTradeContext(host='127.0.0.1', port=11111) # 創(chuàng)建交易對(duì)象
print(trd_ctx.place_order(price=500.0, qty=100, code="HK.00700", trd_side=TrdSide.BUY, trd_env=TrdEnv.SIMULATE)) # 模擬交易,下單(如果是真實(shí)環(huán)境交易,在此之前需要先解鎖交易密碼)
trd_ctx.close() # 關(guān)閉對(duì)象,防止連接條數(shù)用盡
之后右擊,點(diǎn)擊run file in python console 運(yùn)行,可以看到運(yùn)行成功的返回信息如下:如下圖所示的這種情況是代表成功了,可以看到運(yùn)行的結(jié)果里面有00700相關(guān)信息。
第五步:繼續(xù)完善代碼,
講下面的代碼緊接著上面的代碼,使用ctrl+c(復(fù)制)和ctrl+v(粘貼)添加進(jìn)去第四步的代碼里:
import pandas as pd
pd.set_option('display.max_rows', 5000)pd.set_option('display.max_columns', 5000)pd.set_option('display.width', 1000)
至于為什么這么做,券商給的教程里面也說(shuō)明了:
Q6:為什么我獲取的 Dataframe 數(shù)據(jù),只能展示一部分 ?
A:打印 pandas.Dataframe 數(shù)據(jù)的時(shí)候,如果行列數(shù)過(guò)多,pandas 默認(rèn)會(huì)將數(shù)據(jù)折疊,導(dǎo)致看起來(lái)顯示不全。因此,并不是接口返回?cái)?shù)據(jù)真的不全。您只需要在 Python 腳本前面加上如下代碼即可解決。
弄完之后再次點(diǎn)擊run file in python console 運(yùn)行,這次可以看到運(yùn)行的結(jié)果里面有00700騰訊股票的相關(guān)行情信息了,可以看到昨天收盤(pán)騰訊的報(bào)價(jià)。
到此已經(jīng)可以了,如果你想在cmd指令里面跑,可以輸入指令 python main.py,可以輸入python之后,打開(kāi)main文件的文件夾,講main文件拖入cmd指令就可以了。這里需要寫(xiě)清楚main.py的位置,這樣也就可以在cmd指令里面運(yùn)行了。
這樣第一個(gè)量化程序就完成啦!是不是python的用在券商上面做量化編程操作起來(lái)很簡(jiǎn)單?嗯,按照我給的這個(gè)流程操作確實(shí)會(huì)很簡(jiǎn)單。具體后續(xù)需要實(shí)現(xiàn)什么功能都可以看下券商他們給的那個(gè)文檔,就是直接調(diào)用這些接口,基本上也是復(fù)制粘貼就好了,稍微按照你自己的需求修改一些應(yīng)該可以了,入門(mén)玩玩python量化交易確實(shí)不是太難打事情,就是需要有耐心去慢慢搞,有問(wèn)題也都可以網(wǎng)上去多查查。
有這個(gè)入門(mén)級(jí)別的python量化交易的教學(xué),大家就不用去買(mǎi)那些網(wǎng)上付費(fèi)python賣(mài)課的,自己稍微研究一下都可以搞定了。操作完成我上面寫(xiě)的那些,那恭喜你,python的開(kāi)入門(mén)級(jí)開(kāi)發(fā)環(huán)境以及簡(jiǎn)單的python編程就已經(jīng)完成了,你將正式開(kāi)啟了python編程量化交易之旅!
某知名港美股券商的案例里面還給了各種不同的api,比如想找某個(gè)股票歷史k線,代碼可以直接復(fù)制到我們上面建立的工程中去用的。
最主要的是通過(guò)上面的這一系列操作,相當(dāng)于把整個(gè)Python的開(kāi)發(fā)環(huán)境都已經(jīng)搭建起來(lái)了,即便是后面網(wǎng)上找到或者拿到別人的Python代碼,因?yàn)槟阌辛诉@個(gè)開(kāi)發(fā)環(huán)境,就可以在這里直接運(yùn)行得到結(jié)果,比起沒(méi)操作過(guò)的人無(wú)法運(yùn)行.py的程序來(lái)說(shuō)優(yōu)勢(shì)還是很大的。這一點(diǎn)就非常方便小白朋友了。
也歡迎大家多多告誡身邊的朋友,覺(jué)得有用的方便文末幫我們“點(diǎn)贊” “點(diǎn)在看”讓更多的朋友看到!
我個(gè)人原本也是程序猿的,大學(xué)期間以及畢業(yè)工作后的幾年,我原本是一直從事的都是嵌入式軟件開(kāi)發(fā)的崗位,學(xué)和用的都是C語(yǔ)言,python這個(gè)我沒(méi)接觸過(guò),目前也是剛學(xué)習(xí),也算是才入門(mén),也弄了一個(gè)量化投資的qun,有興趣的朋友可以一起多多交流,歡迎關(guān)注愛(ài)投資的小熊貓
張?jiān)?/p>
版權(quán)所有 未經(jīng)許可不得轉(zhuǎn)載
增值電信業(yè)務(wù)經(jīng)營(yíng)許可證備案號(hào):遼ICP備14006349號(hào)
網(wǎng)站介紹 商務(wù)合作 免責(zé)聲明 - html - txt - xml