python投資 程式交易

Python投資入門(一)|極速入門程式交易 拆解python編碼基本運作模式

投資
程式交易(program trade)在香港介乎新興與普及化的階段之間,雖然不是新鮮事物,但懂的散戶未必很多,因一旦使用python等程式語音來進行,中間便出現編程(coding)這個知識障礙。

其實,要理解如何用Python建構交易策略和進行回溯測試,首先理解其基本運作模式,便能順流而下,理解如何寫編碼。

新手第一步:獲取Python

Python及其常用函式庫(package)下載連結
如果電腦不方便下載Python也可以使用在線編譯器此連結

新手第二部:安裝常用函式庫

Python是一種程式語言,在筆者角度,它同時是一種類似windows或mac os之類的作業系統。以windows為例,可以下載及安裝microsoft office,那就可以使用microsoft word或excel等,用來打文稿或建立試算表了。
同理,在Python中也有類似「下載及安裝」的概念。舉個例子,當我們建構移動平均線買賣策略,需要下載Tesla的歷史股價、計算股價不同天數的移動平均值等,便要「安裝」相應的「軟件」,來取得股價數據和執行計算功能。只不過,「軟件」的實際性質/名子是「函式庫」(library),而「安裝」則是「輸入」(import)。

在網上,已有不少人公開分享如何用Python建構移動平均線策略,以下是其中一個方案,可點擊連結查看,今堂的教學也會圍繞此連結作解說:
https://medium.com/codex/algorithmic-trading-with-sma-in-python-7d66008d37b1
在文章最後的部份,作者分享了181行的 Full code 編碼。
讓我們今日先來了解第1至第7行編碼在做什麼。

python投資 程式交易
(圖片來源:新傳媒資料庫)

這幾行import的指令中,作者「安裝」了6款函式庫,包括「import pandas as pd」、「import matplotlib.pypolt as plt」、「import requests」、「import math」、「from termcolor import colored as cl」、「import numpy as np」, 每個函式庫都有不同功能。

解鎖全部Python課程

A. 「import pandas as pd」可以進行大部分類似於excel的工作

我們先由「import pandas as pd」開始說起,pandas是一個函式庫,可以如microsoft excel般,把數據以column和row的表格形式呈現:

一般我們會抽取某股票的歷史股價,那以column而言,會有開市價、日內高位、日內低位和收市價等項目,而row則會有日期,因此輸入pandas函式庫,就是要來把股價數據以表格形式建構數據框架(dataframe),然後基於dataframe建構更多指令,進行計算和回測。下圖就是用pandas建構的表格。

python投資 程式交易
(圖片來源:medium)

在import pandas後,編碼者還加上了「as pd」,是因為編碼時可能多次輸入pandas,為了後面的便捷,在輸入pandas函式庫的同時為它取一個簡稱,那以後輸入pd便可以了。
因此,第一行的整句編碼便成了「import pandas as pd」。

B.「import matplotlib.pypolt as plt」可以進行繪圖

第2行編碼「import matplotlib.pypolt as plt」,當中的matplotlib.pypolt是一個可以把pandas數據架框以圖像呈現的函式庫,生成下方的折線圖。

python投資 程式交易
(圖片來源:pythoninoffice)

之後,我們會有詳細的教學教大家如何繪圖,包括調整圖表的scale,轉換顏色等等。

C. 「import requests」

第3行「import requests」,requests是連結其他網站或平台的API的函庫式,例如iex cloud。這樣讀者就可以直接在python上獲取有興趣的股票的數據,無需事先下載一次excel。

D. 「import math」

第4行「import math」,math是提供數學計算功能的函式庫。

解鎖全部Python課程

……

想睇完整文章,及瀏覽更多Python、excel嘅股價分析教學,可以訂閱《經濟一週》嘅Patreon,!請多多支持~

解鎖全部Python課程

作者簡介:
一個能糅合股票、期權、信用卡等財技的人。

免責聲明:
本專頁刊載的所有投資分析技巧,只可作參考用途。市場瞬息萬變,讀者在作出投資決定前理應審慎,並主動掌握市場最新狀況。若不幸招致任何損失,概與本刊及相關作者無關。而本集團旗下網站或社交平台的網誌內容及觀點,僅屬筆者個人意見,與新傳媒立場無關。本集團旗下網站對因上述人士張貼之資訊內容所帶來之損失或損害概不負責。

免責聲明:本專頁刊載的所有投資分析技巧,只可作參考用途。市場瞬息萬變,讀者在作出投資決定前理應審慎,並主動掌握市場最新狀況。若不幸招致任何損失,概與本刊及相關作者無關。而本集團旗下網站或社交平台的網誌內容及觀點,僅屬筆者個人意見,與新傳媒立場無關。本集團旗下網站對因上述人士張貼之資訊內容所帶來之損失或損害概不負責。

撰文:冰鳯流