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

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,並註冊與管理事件。

使用Python編寫解壓縮工具


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

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

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

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

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

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

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

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

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


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

前言

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

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

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

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

MATLAB爬蟲(以下載台灣期交所的公開資料為例)


爬蟲這項技術說實在確實非常重要,也與我們的生活息息相關,現在的網路如此發達,無法想像的資料量也還是在成長著,為了更方便地取得與處理資料,在自動化的議題上,爬蟲便成為了不可或缺的其中一項技術。

台灣期貨交易所

台灣期貨交易所(Taiwan Futures exchange),顧名思義,是在台灣所成立的金融衍生性商品的交易設施,交易商品包含期貨以及選擇權等商品,這兩種都是一種契約。而台灣期貨交易所為了讓交易人能夠快速了解在台灣期貨市場(Futures Market)的動態消息,特別提供了一個官方網站平台(www.taifex.com.tw),上面有台灣期貨交易所相關的公司介紹,包含願景以及交易商品有哪些,還有當前期貨市場上的最新消息。當然,對於想要更進一步了解金融市場的人而言,想必也會特別關注統計資料以及交易資訊了。再來他們也提供了法規規定以及交易規則等等參考檔案,資訊非常完整。

台灣期貨交易所不僅提供交易資訊的查詢,也有提供近期的交易資料下載,其提供的資料也都已經結構化處理過,我們只需要視情況轉換為自己想要的處理格式便可。如果我們想要收集這些資料,以便進行相關的研究與分析(別把自己下載資料拿去交易或相關形式的轉讓等等,避免違法),使用爬蟲技術並讓其自動化是非常方便的。

MATLAB可視化圖形(搭配Google搜尋器Calculator渲染引擎)


可視化圖形對我們非常重要,透過視覺上的輔助可以幫助我們解決更多問題,比方說尋找一個函數的最高、最低點等等,而MATLAB也提供非常強大的繪圖功能,非常直得我們去使用。


最近發現了Google搜尋引擎支援3D繪圖操作,使用的是WebGL技術,覺得非常地新奇、有趣。相關官方文件參考如下:

元大API即時行情串接(三)


為了取得即時的報價,更詳細的raw data,除了可以方便我們做股票、期貨等金融商品的分析。最重要的是,可以用來做自動下單、高頻交易、隨到隨撮等的用途。


本篇接續著第二篇元大API即時行情串接(二),在介紹完如何建置環境、導入API元件並確認連線功能後,接下來將要介紹更多可用的功能。本篇主要注重在追蹤連線狀態,以及連線異常發生時的提示通知顯示

元大API即時行情串接(二)


為了取得即時的報價,更詳細的raw data,除了可以方便我們做股票、期貨等金融商品的分析。最重要的是,可以用來做自動下單、高頻交易、隨到隨撮等的用途。


本篇接續著第一篇元大API即時行情串接(一),在介紹完行情API相關觀念以及環境安裝之後,將緊接著介紹更進一步的串接觀念與步驟。所以在使用元大行情API之前,我們必須先知道它的流程以及相關的連線資訊。
首先,我們透過此API去請求資料的對象資料如下:

主機IP: 203.66.93.84
Domain: apiquote.yuantafutures.com.tw
T盤Port: 80 or 443
T+1盤Port: 82 or 442


有了伺服器端的IP位址以及對應的主機的Port number,我們就能鎖定位置,再來是一個簡化的流程:


MATLAB簡單指令操作


在深入了解MATLAB語言之前,有一些指令可以幫助了解使用環境與編寫程式~~~

測試MATLAB軟體啟動效能

有時候,根據不同電腦規格不同、MATLAB軟體版本不同,以及當初安裝MATLAB軟體時,選擇的安裝位置在HDD硬碟上,致使每次開啟MATLAB軟體所花的時間較久一些。有點好奇這段開啟的時間內,MATLAB到底做了哪些事嗎?
這時我們可以試試在Windows Command Line(or named cmd)上,輸入以下指令: