投稿

株価の日足をスクレイピングする。

 最小単位。 import pandas as pd url = "https://finance.yahoo.co.jp/quote/1400.T/history?from=20000101&to=20220528&timeFrame=d&page=1" df = pd . read_html ( url )[ 0 ] print ( df ) これで1ページ20日分取れる。 ここから銘柄名やページをループしてデータを取得していく。 負荷を最低限にするべく、必ず十分なウェイトを取らなければならない。 スクレイピングする以上、アクセス規制も覚悟する。最悪訴訟も。 import pandas as pd import time df_all = pd . DataFrame () for page in range ( 1 , 4 ):     url = "https://finance.yahoo.co.jp/quote/1400.T/history?from=20000101&to=20220528&timeFrame=d&page=" + str ( page )     df = pd . read_html ( url )[ 0 ]     df_all = pd . concat ([ df_all , df ])     time . sleep ( 3 )     print ( page ) print ( df_all ) これで3ページ60日分取得。 何日ループするべきか分からないのでBeautifulSoupで何件データあるかを取得する。 最終的にこうなった。 import pandas as pd import time #200ページ*3秒=10分。 #1時間で6銘柄。24時間で144銘柄。 #3600銘柄を取得するには1か月弱。 SAVE_FOLDER = "kabu_data/" def get_data ( url = "https://finance.yahoo.co.jp/quote/1400.T/history?from=20000101&to=202205

アノマリーEAの評価版 ここからDLできます。

AnoBot 指定した時間に売買できるEAです。日本時間で売買します。 DL リンクをクリックしたら右上の方に表示されるダウンロードボタンでクリックできます。 AnoBotCurrency 過去20年分の日中の値動きのアノマリーの、一番高い時間と一番低い時間を往復して売買します。 USDJPY、EURJPY、GBPJPY、EURUSD、GBPUSD、AUDJPYに対応しています。 DL

アノマリーを計算する。

イメージ
import pandas as pd import numpy as np df = pd . read_pickle ( '../pytester_data/pickle/' + "USDJPY_M1.pkl" ) print ( df ) #前回始値から今回始値までの変化量のカラムを作る。 df [ "open_change" ] = np . nan opens = df [ "open" ].values changes = df [ "open_change" ].values for n in range ( 1 , len ( opens )):     #単位:pips     changes [ n ] = 100 * ( opens [ n ] - opens [ n - 1 ])     #changes[n] = 100 * (opens[n] - opens[n-1]) / opens[n-1] print ( df ) total = 0 with open ( "anomary_result.csv" , "w" ) as f :     for h in range ( 24 ):         for min in range ( 60 ):             #0時0分は前回からの変化量を取得しない。             if h == 0 and min == 0 :                 continue                         df2 = df [( df [ "hour" ]== h )&( df [ "minute" ]== min )]             sample = len ( df2 )             sum = df2 [ "open_change" ].sum()             result = sum / sample             total += resu

GMOクリック証券のヒストリカルデータをpythonでダウンロードしてみる

GMOクリック証券ではFXの2007年以降の分足データをダウンロードできます。 データ量が多いのでpythonプログラムを書いて自動化しようと思います。 ログインしないといけないので口座開設必須です。 準備 ブラウザをコントロールするために、seleniumというライブラリでダウンロードしています。 seleniumをインストールしていない場合は次のコマンドを入力。 pip install selenium seleniumでchromeをコントロールするためにchromeDriverが必要です。 GoogleChromeの設定から使用中のchromeのバージョンを調べて、同じバージョンのchromeDriverを以下からダウンロード。 https://chromedriver.chromium.org/downloads ダウンロードしたexeファイルはこのpythonファイルと同じフォルダに置きます。 ソースコード import time import selenium . webdriver def seleniumDL ():     driver = selenium . webdriver . Chrome ( './chromedriver' )     driver . get ( 'https://sec-sso.click-sec.com/loginweb/' )     time . sleep ( 3 )     user_name_text_box = driver . find_element_by_id ( 'j_username' )     user_name_text_box . send_keys ( "user_id" )     password_text_box = driver . find_element_by_id ( 'j_password' )     password_text_box . send_keys ( "password" )     driver . find_elements_by_name ( 'LoginForm' )[ 0 ]. click ()     ti