Life is Like a Boat

忘備録や投資日記、プログラミングに関するメモやtipsなど

Go langを使って単純移動平均を返すAPI Serverを作ってみた

Go langを使って単純移動平均を返すAPI Serverを作ってみました。

ローカル運用ですが、 http://localhost:8000/sma?code=1333&date=2018-08-07 でリクエストすると、下記のようなレスポンスが戻ってきます。

[
    {
        "code": 1333,
        "price": 3820,
        "sma": 4084.2,
        "tstamp": "2018-08-07T00:00:00Z"
    }
]

とりあえず欲しい値は取れてます。

URLルータとディスパッチャのライブラリであるGorillaが理解しやすくかつ書きやすいです。サンプルコード読んでたら、多くのTutorial/Get Started系の記事で使われていました。

router := mux.NewRouter()
router.HandleFunc("/sma", GetSMA).Queries("code", "{[0-9]+}").Queries("date", "{date}").Methods("GET")

これを足がかりに

  1. スクレイピングなどでファンダメンタルデータを集めてHeroku Postgresに投入。収集にはNode.js / Pythonを使う。
  2. Go langのAPI serverを立てて各種エンドポイントを用意する。/api/edinet?code=1333&limit=30とか/api/fundamental?code=1333みたいな
  3. PandasからAPI呼び出してDataframe化する

これでPandas使ってデータ分析する際に、データを揃える部分が簡略化できるはずです。
本当はバフェットコードみたいなデータ揃えてくれているサイトが、有料でもいいので1リクエスト0.01円とかでAPIサービス始めてくれると嬉しいのですがw

追記: githubにリポジトリ作りました。 github.com