繼續Node.JS 的學習,這篇是要記錄另一個嘗試,在後台的Server不斷更新股價資料和自設的指標,做一個網頁可以讓自己在屋企以外也可以查詢這些後台的資訊。
之前的星期看完了Coursera的那個Node 的課程,內容是充實的,繼之前的內容後,還有HTTP 的session , https, authorise token。 不過未有用到的想法,看完也像過眼雲煙。能夠上心的反而只有自己試的Socket.IO。會這樣做是因為看到一篇Socket.IO 的文章,可以讓客戶端的瀏覽器和伺服器端作實時雙向溝通,不必客戶端去不斷刷新。
Bertrand Russell: "Three passions, simple but overwhelmingly strong, have governed my life: the longing for love, the search for knowledge, and unbearable pity for the suffering of mankind."
2017年6月16日 星期五
2017年5月29日 星期一
[JS] 用 NodeJS 製作記錄日間股價的csv檔(Yahoo Finance)
學習Node.JS 有兩個目標希望可以寫到的,一個是自己的後台程式可以按需要查詢自定的指標,二是在日間抓取 網上免費的「即時」股票報價 ( Intraday Data),儲存做本機上的數據庫。兩個需求都在過往星期有所進展,比較接近完成的是日間股價的數據庫。
這個數據庫的建立可以分為兩大部份,首先要可以定時提取數據源的財經數據,免費的當然要數Yahoo Finance,可以自行寫GET request 去用他「隱藏」的接口拿數據,(這是Yahoo Finance 的 CSV API,用Excel的話會用到這方法,它另外還有一套下載歷史股價的方法就好像在這次改版中失效了。以往Yahoo和Google都有股價的API,但似乎在逐漸放棄。原本Yahoo都有寫一些 License上不可 redistribute / commercial usage 的條款,但現在根本連這個功能的說明版面都找不到了)。另外也有現成的Node package,我就當然懶得 Reinvent the wheel,所以這方面就用現有的 node-yahoo-finance。雖然這個Yahoo的API可以有historical 和snapshot的數據,但免費數據一般都沒有即時更新,Snapshot固然一般有15分鐘滯後,所以一定要看Last-Trade-Time。Historical 的也可以留意到一些日子的Close 和ratio數據有點奇怪,引申到52周高低有點問題,大概免費的東西質量總是少點保證的,所以如果打算直接使用的話,一定要小心,不然類似出現 Fat Finger Error 就慘慘了 ( T_T ) ~~
NPM - yahoo-finance
Github - pilwon/node-yahoo-finance
(留意Yahoo在改動原本的API接口 -16May2017,不過見一些常用的field依然可用。open-source的強大之處就是己經有高手去解決 26May2017,原來的snapshot() 功能將被棄用,由新的quotes()。historical() 聲稱不受影響。)
要知如何使用,最好先對Yahoo Finance的接口有點經驗。例如在網址上試試輸入:
http://download.finance.yahoo.com/d/quotes.csv?s=^HSI+0005.HK&f=nsl1t1opc1p2&e=.csv
這個數據庫的建立可以分為兩大部份,首先要可以定時提取數據源的財經數據,免費的當然要數Yahoo Finance,可以自行寫GET request 去用他「隱藏」的接口拿數據,(這是Yahoo Finance 的 CSV API,用Excel的話會用到這方法,它另外還有一套下載歷史股價的方法就好像在這次改版中失效了。以往Yahoo和Google都有股價的API,但似乎在逐漸放棄。原本Yahoo都有寫一些 License上不可 redistribute / commercial usage 的條款,但現在根本連這個功能的說明版面都找不到了)。另外也有現成的Node package,我就當然懶得 Reinvent the wheel,所以這方面就用現有的 node-yahoo-finance。雖然這個Yahoo的API可以有historical 和snapshot的數據,但免費數據一般都沒有即時更新,Snapshot固然一般有15分鐘滯後,所以一定要看Last-Trade-Time。Historical 的也可以留意到一些日子的Close 和ratio數據有點奇怪,引申到52周高低有點問題,大概免費的東西質量總是少點保證的,所以如果打算直接使用的話,一定要小心,不然類似出現 Fat Finger Error 就慘慘了 ( T_T ) ~~
Node package: yahoo-finance
今次的目的是想做一個 Intraday 的數據庫,讓之後可以有數據基礎去研究分析。因為會經過檢查,所以要求並不高。先安裝node-yahoo-finance:$ npm install yahoo-finance --save
NPM - yahoo-finance
Github - pilwon/node-yahoo-finance
(留意Yahoo在改動原本的API接口 -16May2017,不過見一些常用的field依然可用。open-source的強大之處就是己經有高手去解決 26May2017,原來的snapshot() 功能將被棄用,由新的quotes()。historical() 聲稱不受影響。)
要知如何使用,最好先對Yahoo Finance的接口有點經驗。例如在網址上試試輸入:
http://download.finance.yahoo.com/d/quotes.csv?s=^HSI+0005.HK&f=nsl1t1opc1p2&e=.csv
2017年5月18日 星期四
[JS] Node.JS 開始使用 Express 和 Express-Generator
繼續之前的<Node.JS>記錄。開始了Node.JS的學習,當可以架設到一個簡單Server之後,在Coursera找了一個Node.JS的 Open Course (這應該有三個星期前了)。下一步就是用Express模組來建構同樣的伺服器端程序,Express是一個Node.js 的Web應用程式架構,方便創建各種Web應用、APIs等。今後就會用到它實現旳路由控制(Route),去代替之前要自行寫代碼解析URL中的的請求;用它對模板(Template)的支援,去更方便地回傳HTTP的內容。另外,還會多看幾個模組:Morgan、body-parser,這些稱為Middleware的東西。最後會用Express Generator去生成Express架構。
例子: server-1.js 。可以看到己經在使用app.get、res.send,去代替url的解析工作和內容顯示:
METHOD 可以使用的 GET, POST, PUT, DELETE 的作用好比: Read, Write, Append, Delete。
路由定義的結構:app.METHOD(PATH, HANDLER)。其中一種 app.all() 是所有的request都會被觸發,適合處理必需執行的部份。下面的例子中應用到。
Express
首先,為你的新專案開啟一個新資料夾,cd到這個資料夾中:$ npm init //用npm init開始建立一個專案 $ npm install express --save //安裝Express,
新增至相依關係清單
例子: server-1.js 。可以看到己經在使用app.get、res.send,去代替url的解析工作和內容顯示:
var express = require('express');
var app = express();
app.get('/', function (req, res) { //當收到 "/" 這個請求時,回應下面的 "Hello World!"
res.send('Hello World!');
});
app.listen(3000, function () {
console.log('Example app listening on port 3000!');
});
METHOD 可以使用的 GET, POST, PUT, DELETE 的作用好比: Read, Write, Append, Delete。
路由定義的結構:app.METHOD(PATH, HANDLER)。其中一種 app.all() 是所有的request都會被觸發,適合處理必需執行的部份。下面的例子中應用到。
2017年4月18日 星期二
[JS] Node.JS 的起手式 / D3.JS 的測試
這個其實是上上星期的嘗試,一是Node.JS, 另一個是D3.JS。
Node.JS
這次在圖書館的HyRead電子書庫見到Javascript的書,打算重溫一下之際,找到兩本專講Node.js的。之前就因為辦公室的環境很多程式語言都不能隨便安裝,Javascript 這種有瀏覽器就可以支援的語言一起引起興趣。聽過有了Node.js 以後的Javascript 也可以做伺服器端的語言,一些用JS做爬蟲也是指向Node.js。可惜之前未能弄懂如何入手這個。今次就裝起來可以一試了。
訂閱:
文章 (Atom)