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