夏休みでヒマなので、久しぶりにプログラミングでもやってみた。
昔、若い頃はこう見えてもエンジニアでプログラマだったから、昔取った杵柄ですね。
今、プログラミング言語もずいぶん便利になっていて面倒くさい部分は抽象化されてカンタンになっている。有り体にいえばオブジェクト指向っていうやつだ。よって低レベルなコーディングはすべてモジュールという形で実装されているから、プログラマはそれをいちいちゼロから書く必要はなく利用するのみである。
たぶん今一番流行っているPythonというスクリプト言語を使って、前から自動化できたら、、と思ってたのを書いてみた。こいつは今やそこそこミッションクリティカルなシステムにでも使用されている。例えばインスタグラムはメインの開発言語はPythonだそうだ。H/Wのスピードがものすごく上がったから、プログラムそのものの実行スピードより開発スピードを重視するようになっているのがトレンドらしいね。
大学生で理系なら今どきPythonぐらいは習うだろうが、こういう感じで応用できると随分時間の短縮になると思う。
Yah○○ファイナンスから指定の銘柄の月足4本値を1983年から取得しCSVファイルに保存する
注意: こういうWebページから必要なデータを抜いてくる技術をWebスクレイピングというが、サーバーに負担を掛けるので良い子は真似しないように。あまりやるとブロックされるよww
#! /usr/local/bin/python3 import pandas as pd url_b = 'https://finance.yah○○.co.jp/quote/9101.T/history?from=19830101&to=20210704&timeFrame=m&page=' page = 1 url = url_b + str(page) data = pd.read_html(url) data_stk = data[0] for page in range(2,100): try: url = url_b + str(page) data = pd.read_html(url) data_stk = data_stk.append(data[0]) except: break data_stk.to_csv("9101-3.csv")
実行結果:
1分足の4本値データを任意の時間足の4本値に変換する
#! /usr/local/bin/python3 import sys import pandas as pd import re import datetime column_names = ["DateTime","Open","High","Low","Close"] column_datetime_format = "%Y%m%d%H%M" csv_in = pd.read_csv("JP225_20210301.csv",encoding="ms932",sep=",") csv_in = csv_in.rename(columns={"日時":"DateTime","始値(BID)":"Open","高値(BID)":"High","安値(BID)":"Low","終値(BID)":"Close"}) csv_in["DateTime"] = pd.to_datetime(csv_in.DateTime,format=column_datetime_format) csv_in = csv_in.set_index("DateTime") print(csv_in.head()) #df_one = csv_in["2021-03-01": "2021-03-02"] df_one = csv_in df_hour = pd.DataFrame() tf = "4H" df_hour["Open"] = df_one["Open"].resample(tf).first() df_hour["High"] = df_one["High"].resample(tf).max() df_hour["Low"] = df_one["Low"].resample(tf).min() df_hour["Close"] = df_one["Close"].resample(tf).last() print(df_hour.head())
実行結果: