顯示具有 python 標籤的文章。 顯示所有文章
顯示具有 python 標籤的文章。 顯示所有文章

製作可攜版Python


Python的安裝非常簡單與便利,但有時候我們仍然需要一個可以隨身帶著走的Python環境,讓我們得以不透過將程式打包成執行檔等方式,快速有一個執行與使用的環境。

說是可攜版,其實就是使用Python的嵌入式版本,簡單來說,這樣的嵌入式版本,可以讓我們把特定一個版本號的Python執行環境帶到一個合適(相容)的作業系統當中。基本上如此做的目的或好處是,我們可以與某個(些)會取用到Python的應用程式一起安裝(安裝該應用程式時,直接將Python的嵌入式版本給解壓縮出來,放到適當的位置)或者直接使用(此應用程式本身也是可攜版的情況下),而不必另外去取得某個相容版本的Python,並重新安裝它。這聽起來應該是很不錯的,因為這也方便控管該版本的應用程式本身附帶的Python,其版本是相容的,避免使用者安裝錯誤導致非預期問題發生。


Python爬蟲(以Youtube已授權影片為例)(一)


爬蟲在生活中的應用廣泛,在網路資源豐富的背景時代下,爬蟲算是一個很需要具備的技術。本篇嘗試用一個簡單且完整的例子來講解使用Python爬蟲。

前言

爬蟲這件事情很容易與自動化牽涉到關係,通常在我們希望獲取或更新資料的情況下會想到,尤其在一些重複性的工作,或是設定上相對繁雜(不一定說很難設定,可能就單純只是覺得麻煩),若能夠將整個工作包裝成一個程式,並能夠一鍵自動完成這些工作,甚至讓其自動開始執行工作,真的是方便很多,我們也能夠更專注於在處理其他事情上。

而本系列(由於篇幅會較長,所以以系列作為發布,希望是兩篇結束)將會以Youtube上的已授權影片作為目標,以Python利用爬蟲技術來進行下載,並且會用到FFmpeg來處理影片的相關問題。我想,這樣的一篇文章,能夠提到許多有用的知識與工具,且有一個完整的應用去解決現實中的問題,甚至能更容易去延伸,應該會很有幫助。

本篇主要會提及爬蟲上的概念及相關的準備工作。

競賽圖繪製(一)


對於一個或一組具有時間相關的資料來說,如果我們對其沒有足夠的了解,與其盲目地直接對其做分析,我們也能選擇先對其做可視化的動作,而競賽圖則是一個相當普遍的呈現方式。

前言

競賽圖一般稱做Bar Chart Race,是一組有著不同類別或屬性的資料,隨著時間的變化,給出一個某一時刻,資料之間排名的呈現。

如下圖所示:(此動態圖是參考@johnburnmurdochObservable網站上分享的程式筆記,進行修改並執行後的結果,待會還會提到)

Bar Chart Race

群益API行情串接(五)


像股票這樣的金融商品百百種,加上市場的變化性與多樣的市場規則,使得這類的分析總是相當困難。但相關數據取得與蒐集的管道也相當稀少,甚至難以整合與上手。國內幾家券商提供之API服務便顯得相當地重要。

前言

唉~時間過得很快阿。平常總是抽不出時間把自己所見、所聞、所學,進行整理,更新到部落格上。今日收到一則簡訊,猛然一驚,群益API必須得要更版啦~_~。

我們廢話不多說,趕緊上工。

本篇將不會特別詳細介紹元件註冊,我們注重在群益API換版

群益API行情串接(四)


像股票這樣的金融商品百百種,加上市場的變化性與多樣的市場規則,使得這類的分析總是相當困難。但相關數據取得與蒐集的管道也相當稀少,甚至難以整合與上手。國內幾家券商提供之API服務便顯得相當地重要。

前言

這個系列至第三篇為止,已經把當日Tick的回補功能做了基本的實現。本篇要另外來提一下即時的資料獲取功能。不同時間、頻率的資料,能夠做到的應用不同。頻率越高,產生的資料意義會不同,甚至也可能因為更貼近原始數據,結構也會不同。因此,如果能夠獲取即時的資料,我們是能夠以更為微觀的角度去進行分析,甚至若真的能夠做到"即時",我們還可以做到高頻交易(不過,這樣的過程,一般散戶是很難去實現,常常是研究階段,並發表成果,或是不足以去實施這樣的方案)。

理所當然,越深入的探討,就像是去尋找真理與基本元素的組合方式一樣,肯定是不容易的,畢竟我們並不是身處在那樣的環境。又或者,你今天接觸了一個高度抽象化的程式,事實上,自己本身可以不知道底層是如何運作與如何實現、計算,一般是知道這段程式需要什麼樣的輸入、怎樣的輸出結果,並且如何應用,這樣便已足夠去使用。反過來要去深入探討,解碼後,完全就是一個不同的世界啊~。

話說遠了,進入本篇主軸,就像是開頭所說,本篇主要是講述即時的資料獲取,除了即時報價之外,也注重在上下最佳五檔

群益API行情串接(三)


像股票這樣的金融商品百百種,加上市場的變化性與多樣的市場規則,使得這類的分析總是相當困難。但相關數據取得與蒐集的管道也相當稀少,甚至難以整合與上手。國內幾家券商提供之API服務便顯得相當地重要。

前言

金融有趣的地方就是似乎每一刻過後,我們所認知事物以及對其的感覺就不太一樣了。當然,這些都是在我們去親自去感受它的時候,比較可能會體會到的。我們面對的都是未知的未來。

隨著時代的演進,金融在取得數據這塊,有越來越多且更加完善的API服務。並且也因應交易制度的改變與開放,API也會進一步開通新的功能。

話說回來,這個系列,我們將環境設定相關變數與模組登入功能做了介紹,而上一篇也提到了事件的註冊如何接收事件回傳回來的訊息以及相關的報價操作

本次要來提一下,當日歷史回補資料的獲取,並提及一些要注意的事項。

程式環境

程式語言: Python 3.6.8

作業系統: Windows 10 64位元

API版本: 2.13.16 x86版本

群益API行情串接(二)


像股票這樣的金融商品百百種,加上市場的變化性與多樣的市場規則,使得這類的分析總是相當困難。但相關數據取得與蒐集的管道也相當稀少,甚至難以整合與上手。國內幾家券商提供之API服務便顯得相當地重要。

前言

上一篇群益API行情串接(一)介紹了群益金鼎證券提供之API服務,包含先備知識,並且完成元件註冊與帳號連線。本篇將會繼續往下介紹如何實現相關報價功能。

因此,本篇將會真正進行報價功能的實作與使用,報價功能主要是一個事件,事件的相關方法我們可以透過Class去定義與實作出來,並且透過comtypes套件進行事件的註冊。

在開始實作之前,要提醒一下,相關的設定或變數、函式宣告與定義等部份,在這邊並不會重新提及,這是由於篇幅考量,所以這個系列基本上就是垂直往下連貫著進行。如果有在這個系列中發現有些變數或函式,甚至是名詞等等未定義,可以在先前的篇章中找到。


群益API行情串接(一)


像股票這樣的金融商品百百種,加上市場的變化性與多樣的市場規則,使得這類的分析總是相當困難。但相關數據取得與蒐集的管道也相當稀少,甚至難以整合與上手。國內幾家券商提供之API服務便顯得相當地重要。

前言

在金融分析這塊,先不論許多金融商品的歷史資料本身就很少,在網路上能查到的資料多數是未結構化資料,或格式相當複雜,致使難以進行整理。事實上,如果需要詳細資料的話,比方說比日資料時間更短的Tick Data,除了向交易所購買資料之外,使用API服務便是另一種更方便的選擇。

然而,使用API服務,你得有一個心理準備,由於各家券商提供之功能與API伺服器環境等因素不同,接收資料可能會有不穩定或格式不合個人常使用之格式,所以針對這些情況,個人得自己動態做調整。此外,一般API也會需要隨著時間進行更新,可能隨時都會發布新版本,並停用某些舊版本。有些券商通知更換新版本或淘汰舊版本的方式也不同,有很多時候,可能不會即時知道,得要偶爾去確認。並且,有些時候,新版本並不一定穩定,所以若當前使用穩定,或不急於使用新增功能,可以觀察或測試新版本的情況後,再正式換版。

一般而言,在各券商官方網站上會有許多豐富的資訊,若需使用API,需先向券商進行申請,之後在去進行下載元件、設定與註冊、直接使用官方範例程式或自行編寫程式等等。

而若是使用API下單,除了會需要帳號密碼登入之外,也會需要進行註冊憑證,一般憑證都會有使用期限,可以延長或重新申請。這兩者搭配才能正常使用下單功能。使用報價等未實際進行交易的功能一般則不需要憑證。

本篇主要提及群益金鼎證券提供之API服務,其提供的官方說明文件是目前我使用過最詳細(且複雜)的,有著許許多多的功能函式,但相對而言卻也造成在使用上難以快速上手。但其有提供當天Tick回補功能,因此如果不小心在取得即時資訊時遺漏或出現問題時,能夠輕鬆透過此功能進行補足。當然,也能夠用來一次性在盤後進行資料請求,將當天Tick資料進行儲存。

本篇主要介紹先備知識,並且完成元件註冊與帳號連線。下一篇將會繼續介紹獲取當日Tick回補的功能實現,我們將會使用到Class,並註冊與管理事件。

檔案系統的配置單位


平常在使用儲存裝置時,我們可能會主要關心該裝置的最大存放大小、使用何種傳輸介面以及對應的傳輸速度等等。如果可以,我們會希望儲存裝置能夠容量足夠大,速度 又快。想不到...這其實也有很大的學問。

前言

本篇提及的儲存裝置主要以硬碟為主。

最近,趁著雙11 打折各平台打折的期間,正好有想要一個可移動的儲存裝置,另外存放一些應用程式。如此一來,我 就能在各電腦端正常使用我慣用且熟悉的軟體,理論上會更方便。若容量也夠大,還能夠儲存其他重要資料,額外備份或是處理事情也會方便許多。

當然,傳輸速度也會是考量之一,先不談傳輸資料時的花費時間,畢竟主要目的是要用來裝應用程式,作為可攜式的應用,這個儲存裝置的運行速度也不能夠馬虎。

由於實際的運行速度也會受到系統、軟體、傳輸介面、傳輸協定、線材等等的影響,進行了一番考量之後,也為了避免太麻煩牽動其他太多的因素,我選擇了一顆PSSD(Portable Solid-state Disk,可攜式固態硬碟),其運行速度雖然並比不上現在SSD的發展,算中規中矩,但主要目的為可攜式,所以傳輸介面更通用,通常為支援Type-AType-C,這兩種介面都是USB(Universal Serial Bus)的一種物理介面。而且比起外接式硬碟,其大小也能夠做得更小,不需要額外買外接殼,正在使用時也不用像使用傳統硬碟一樣,怕不小心去動到。總而言之,基本上符合我的需求,也很方便。

使用Python編寫解壓縮工具


不管是儲存或是傳輸用途,壓縮檔一直是非常常見的檔案格式。一般而言,許多系統與軟體都提供解壓縮功能,我們也可以嘗試著自己製作一個解壓縮工具

自己製作一個解壓縮工具?使用情境為何?

一般而言,許多系統與軟體都提供解壓縮功能,想要解壓縮可說是非常輕易達成。但試想一些情況,若今天有一堆壓縮檔案需要進行解壓縮呢?可能有一些工具一時之間就無法起到很好的作用了。

所以除了磨練自己寫程式的能力之外,我們也能藉此機會,自己客製化具有解壓縮功能的小工具,以解決某些特殊問題。

一堆壓縮檔案需要解壓縮?何種情況下會有這樣的需求?

基本上之所以會有一堆壓縮檔案,可能是為了儲存以及分享用途,所以對檔案進行分門別類後,個別進行壓縮。

哪天誰需要使用這些資料時,就會遇到這樣的解壓縮問題。

舉個例子,在台灣期貨交易所網站中,提供多種商品的詳細資料下載,可能以天、週或是年為單位,部分檔案格式是zip壓縮檔,像是期貨前30個交易日期貨每筆成交資料期貨前30個交易日期貨價差委託成交概況表期貨前30個交易日期貨價差每筆成交資料選擇權前30個交易日選擇權每筆成交資料等等,像這些以zip壓縮檔形式,並且以天為單位做區分的檔案,一次下載下來,若能夠一次解完壓縮,可說是幫個大忙了。

透過Python開啟外部指令進行爬蟲(以下載台灣期貨交易所的公開資料為例)


為了方便、大量與快速取得資料,爬蟲不可或缺,本次來介紹如何使用python進行爬蟲,並且使用外部指令進行主要功能實現。

前言

一般我們普遍認為開源節流是重要的金錢觀,為了維護我們的資產,錢要進得來,同時花出去的錢也要能夠獲得控制。事實上,開源與節流這兩件事誰更重要,當然是開源,開源意味著資產增加,但節流,再怎麼節省,錢包還是這麼大。但或許是因為人心,我們比起獲利,會更害怕損失,於是節流反而對我們來說卻是重點。

另一方面,存錢也是一個很重要的節流方式,但仔細想想,這些錢如果不去利用,其實就是一種浪費。怎麼說呢?如果這些錢能夠透過各種方式,比如投資,讓錢生財,自然也是一種開源的方式。那當然像是投資這種事會有風險,所以它才會有獲利,不是嗎?

開源節流、開源節流,為何要一起講,我認為最好的解釋就是在開源的同時,我們要想著如何節流;反過來說,在我們想著如何節流的時候,我們也要保持考慮如何開源。根據自己的情況、環境與條件,最大限度的提高獲利,並將損失降低至最小。這在程式人眼中看來,自然是一個最佳化問題。

本篇並不討論如何分析這樣子的最佳化問題,所以並不提供任何策略與方向(投資請衡量自身情況,風險與獲利自行承擔),只著重在如何取得用來分析的資料,畢竟沒有資料,也無法開始。無論是人或是機器,都需要感知外界的環境變化與資訊,經過深思熟慮後,才能做出一個好的應對方式。