20190423銘柄US

株価チャート表示 ウェブアプリ (基本:Pythonコードあり) [Python 米国株 日本株]

PythonのDASHというモジュールを使って、任意の銘柄の株価を取得し、株価チャートをブラウザに表示します。銘柄検索フォームに打ち込むだけで表示できるような株価サイトを自分でも作りたいな、、と思っていたのでその作成メモです。
一番簡単なウェブサイト、ウェブアプリになると思います。

参考にさせていただいたのこのサイト様です。ありがとうございます。

上記のリンクではデータの入手にpandas_datareaderの

import pandas_datareader.data as web
###省略###
df = web.DataReader(input_data, 'iex', start, end)

となる部分を使っているのですが、私は

import fix_yahoo_finance as yf
###省略###
df = yf.download(input_data,start=start, end=end)

で持ってくることにしました。実際には以下のように動きます。

やってみるとわかるのですが、頻繁にデータアクセスすると時間を空けてアクセスしなさいと株価をYahooから取れなくことがあるので、そこは15分程度時間を空けてから、再度試してください。

ソースコードは以下の通りです。

import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input,Output
#import pandas_datareader.data as web
import datetime
import fix_yahoo_finance as yf

app = dash.Dash()

app.layout = html.Div(children=[
    html.Div(children='''
        銘柄入力:
    '''),

    dcc.Input(id='input', value='SPY', type='text'),
    html.Div(id='output-graph')
])

@app.callback(
    Output(component_id='output-graph', component_property='children'),
    [Input(component_id='input', component_property='value')]
    )
def update_graph(input_data):
    start = datetime.datetime(2018,1,1)
    end = datetime.datetime.now()
    df = yf.download(input_data,start=start, end=end)

    #print(df.tail())

    return dcc.Graph(
        id='example-graph',
        figure={
            'data': [
                {'x': df.index, 'y': df.Close, 'type': 'line', 'name': input_data},
            ],
            'layout': {
                'title': input_data
            }
        }
    )

if __name__ == '__main__':
    app.run_server(debug=True,host='0.0.0.0', port=8080)

コードの入力はコピペで持ってきたほうがデータアクセスの頻度が減ります。

実行には上記のコードを testsite.py として保存したのち、

python testsite.py

で実行することになります。


また、jsmを使って日本株でもやってみたのですが、データのアクセススピードが遅くて、ちょっと実用的ではないと思いました。


ウェブアプリを簡単につくれるDASHすごいですね、、
いろいろなことができそうです。


Pythonで資産運用モデルを作成する記事をまとめました。
Pythonを用いて、株価取得、チャート表示、株価分析、株価予測、株価の機械学習、ポートフォリオの構築、ポートフォリオの最適化、スクレイピングなどを行う記事を集めました。
もし興味を持っていただけるなら読んでみてください。


もし役に立った、もっと知りたい、ほかの人にも伝えたい!と思えたら、このnoteのフォローと、ツイッターで@AnalyseTfフォローしてくれるととてもうれしいです!



サポートしていただき大変ありがとうございます。 励みになります。