import%20marimo%0A%0A__generated_with%20%3D%20%220.18.1%22%0Aapp%20%3D%20marimo.App(width%3D%22medium%22)%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20import%20datetime%20as%20dt%0A%20%20%20%20import%20warnings%0A%0A%20%20%20%20import%20kand%20as%20ka%0A%20%20%20%20import%20marimo%20as%20mo%0A%20%20%20%20import%20plotly.graph_objs%20as%20go%0A%20%20%20%20import%20polars%20as%20pl%0A%20%20%20%20import%20yfinance_pl%20as%20yf%0A%0A%20%20%20%20warnings.simplefilter(%22ignore%22)%0A%20%20%20%20return%20go%2C%20ka%2C%20mo%2C%20pl%2C%20yf%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%20%E3%83%9C%E3%83%AA%E3%83%B3%E3%82%B8%E3%83%A3%E3%83%BC%E3%83%90%E3%83%B3%E3%83%89%E3%81%A8%E6%99%82%E9%96%93%E8%BB%B8%0A%0A%20%20%20%20%23%23%20%E6%99%82%E9%96%93%E8%BB%B8%E3%81%A8%E3%83%9C%E3%83%AA%E3%83%B3%E3%82%B8%E3%83%A3%E3%83%BC%E3%83%90%E3%83%B3%E3%83%89%0A%0A%20%20%20%20**%E7%95%B0%E3%81%AA%E3%82%8B%E6%99%82%E9%96%93%E8%BB%B8%E3%81%A7%E3%81%AE%E3%83%9C%E3%83%AA%E3%83%B3%E3%82%B8%E3%83%A3%E3%83%BC%E3%83%90%E3%83%B3%E3%83%89%E9%81%A9%E7%94%A8**%EF%BC%9A%0A%20%20%20%20-%20**%E6%97%A5%E8%B6%B3**%3A%20%E7%9F%AD%E6%9C%9F%E3%80%9C%E4%B8%AD%E6%9C%9F%E3%83%88%E3%83%AC%E3%83%B3%E3%83%89%EF%BC%88%E6%95%B0%E6%97%A5%E3%80%9C%E6%95%B0%E3%83%B6%E6%9C%88%EF%BC%89%0A%20%20%20%20-%20**%E9%80%B1%E8%B6%B3**%3A%20%E4%B8%AD%E6%9C%9F%E3%83%88%E3%83%AC%E3%83%B3%E3%83%89%EF%BC%88%E6%95%B0%E9%80%B1%E9%96%93%E3%80%9C%E6%95%B0%E3%83%B6%E6%9C%88%EF%BC%89%0A%20%20%20%20-%20**%E6%9C%88%E8%B6%B3**%3A%20%E9%95%B7%E6%9C%9F%E3%83%88%E3%83%AC%E3%83%B3%E3%83%89%EF%BC%88%E6%95%B0%E3%83%B6%E6%9C%88%E3%80%9C%E6%95%B0%E5%B9%B4%EF%BC%89%0A%20%20%20%20-%20**%E5%88%86%E8%B6%B3**%3A%20%E3%83%AA%E3%82%A2%E3%83%AB%E3%82%BF%E3%82%A4%E3%83%A0%E5%8F%96%E5%BC%95%EF%BC%88%E3%83%87%E3%82%A4%E3%83%88%E3%83%AC%E3%83%BC%E3%83%89%EF%BC%89%E2%86%90%20%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%9F%E3%83%B3%E3%82%B0%E5%87%A6%E7%90%86%E3%81%A7%E5%AF%BE%E5%BF%9C%0A%0A%20%20%20%20%E3%81%93%E3%81%AE%E3%83%8E%E3%83%BC%E3%83%88%E3%81%A7%E3%81%AF%E3%80%81%E3%81%BE%E3%81%9A%E9%80%B1%E8%B6%B3%E3%83%BB%E6%9C%88%E8%B6%B3%E3%81%A7%E3%83%81%E3%83%A3%E3%83%BC%E3%83%88%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%97%E3%80%81%E3%81%9D%E3%81%AE%E5%BE%8C%E6%97%A5%E8%B6%B3%E3%81%A7%E3%83%90%E3%83%83%E3%83%81%E5%87%A6%E7%90%86%E3%81%A8%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%9F%E3%83%B3%E3%82%B0%E5%87%A6%E7%90%86%E3%82%92%E5%AE%9F%E8%A3%85%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(mo)%3A%0A%20%20%20%20stock_code%20%3D%20mo.ui.text(%228381.T%22%2C%20placeholder%3D%228381.T%22)%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20f%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%20%E8%A8%BC%E5%88%B8%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E5%85%A5%E5%8A%9B%E3%81%99%E3%82%8B%0A%0A%20%20%20%20%20%20%20%20%7Bstock_code%7D%0A%0A%20%20%20%20%20%20%20%20%3E%20%E4%BE%8B%3A%20%607203.T%60%EF%BC%88%E3%83%88%E3%83%A8%E3%82%BF%EF%BC%89%E3%80%81%609984.T%60%EF%BC%88%E3%82%BD%E3%83%95%E3%83%88%E3%83%90%E3%83%B3%E3%82%AF%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%EF%BC%89%E3%80%81%608381.T%60%EF%BC%88%E5%B1%B1%E9%99%B0%E5%90%88%E5%90%8C%E9%8A%80%E8%A1%8C%EF%BC%89%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%20(stock_code%2C)%0A%0A%0A%40app.cell%0Adef%20_(stock_code%2C%20yf)%3A%0A%20%20%20%20%23%20%E9%80%B1%E8%B6%B3%0A%20%20%20%20ticker%20%3D%20yf.Ticker(stock_code.value)%0A%20%20%20%20info%20%3D%20ticker.info%0A%20%20%20%20wkly%20%3D%20ticker.history(period%3D%221y%22%2C%20interval%3D%221wk%22)%0A%20%20%20%20wkly%20%20%23%2054%20rows%0A%20%20%20%20return%20info%2C%20ticker%2C%20wkly%0A%0A%0A%40app.cell%0Adef%20_(ticker)%3A%0A%20%20%20%20%23%20%E6%9C%88%E8%B6%B3%0A%20%20%20%20moly%20%3D%20ticker.history(period%3D%221y%22%2C%20interval%3D%221mo%22)%0A%20%20%20%20moly%20%20%23%2013rows%0A%20%20%20%20return%20(moly%2C)%0A%0A%0A%40app.cell%0Adef%20_(go%2C%20info%2C%20moly%2C%20pl%2C%20stock_code%2C%20wkly)%3A%0A%20%20%20%20company_name%20%3D%20info.get(%22shortName%22%2C%20stock_code.value)%0A%0A%0A%20%20%20%20def%20get_layout(label)%3A%0A%20%20%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22height%22%3A%20560%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22width%22%3A%201028%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22title%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22text%22%3A%20f%22%7Bcompany_name%7D%E3%81%AE%E6%A0%AA%E4%BE%A1(%7Blabel%7D)%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22x%22%3A%200.5%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22xanchor%22%3A%20%22center%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22font%22%3A%20%7B%22size%22%3A%2024%2C%20%22weight%22%3A%20%22bold%22%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22xaxis%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22rangeslider%22%3A%20%7B%22visible%22%3A%20False%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22title%22%3A%20%7B%22text%22%3A%20%22%E6%97%A5%E4%BB%98%22%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22yaxis1%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22domain%22%3A%20%5B0.05%2C%201.0%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22title%22%3A%20%22%E4%BE%A1%E6%A0%BC(JPY)%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22side%22%3A%20%22left%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22tickformat%22%3A%20%22%2C%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22legend%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22orientation%22%3A%20%22h%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22yanchor%22%3A%20%22top%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22y%22%3A%20-0.15%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22xanchor%22%3A%20%22center%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22x%22%3A%200.5%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7D%0A%0A%0A%20%20%20%20def%20to_float64(df)%3A%0A%20%20%20%20%20%20%20%20return%20df.with_columns(%0A%20%20%20%20%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20pl.col(%22open.amount%22).cast(pl.Float64)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20pl.col(%22high.amount%22).cast(pl.Float64)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20pl.col(%22low.amount%22).cast(pl.Float64)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20pl.col(%22close.amount%22).cast(pl.Float64)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20)%0A%0A%0A%20%20%20%20def%20get_plot_data(df%2C%20dates)%3A%0A%20%20%20%20%20%20%20%20return%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20go.Candlestick(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20yaxis%3D%22y1%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20x%3Ddates.to_list()%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20open%3Ddf%5B%22open.amount%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20high%3Ddf%5B%22high.amount%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20low%3Ddf%5B%22low.amount%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20close%3Ddf%5B%22close.amount%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20increasing_line_color%3D%22red%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20decreasing_line_color%3D%22green%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20name%3Df%22%7Bcompany_name%7D%E3%81%AE%E6%A0%AA%E4%BE%A1%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20%5D%0A%0A%0A%20%20%20%20wkly_layout%20%3D%20get_layout(label%3D%22%E9%80%B1%E8%B6%B3%22)%0A%20%20%20%20moly_layout%20%3D%20get_layout(label%3D%22%E6%9C%88%E8%B6%B3%22)%0A%20%20%20%20wkly_plot%20%3D%20to_float64(wkly)%0A%20%20%20%20moly_plot%20%3D%20to_float64(moly)%0A%20%20%20%20wkly_dates%20%3D%20wkly_plot%5B%22date%22%5D%0A%20%20%20%20moly_dates%20%3D%20moly_plot%5B%22date%22%5D%0A%20%20%20%20wkly_data%20%3D%20get_plot_data(wkly_plot%2C%20wkly_dates)%0A%20%20%20%20moly_data%20%3D%20get_plot_data(moly_plot%2C%20moly_dates)%0A%20%20%20%20return%20moly_data%2C%20moly_layout%2C%20wkly_data%2C%20wkly_layout%0A%0A%0A%40app.cell%0Adef%20_(go%2C%20wkly_data%2C%20wkly_layout)%3A%0A%20%20%20%20wkly_fig%20%3D%20go.Figure(data%3Dwkly_data%2C%20layout%3Dgo.Layout(wkly_layout))%0A%20%20%20%20wkly_fig%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(go%2C%20moly_data%2C%20moly_layout)%3A%0A%20%20%20%20moly_fig%20%3D%20go.Figure(data%3Dmoly_data%2C%20layout%3Dgo.Layout(moly_layout))%0A%20%20%20%20moly_fig%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%E3%83%9C%E3%83%AA%E3%83%B3%E3%82%B8%E3%83%A3%E3%83%BC%E3%83%90%E3%83%B3%E3%83%89%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(ticker)%3A%0A%20%20%20%20%23%20%E6%97%A5%E8%B6%B3%E3%83%87%E3%83%BC%E3%82%BF%E3%82%922%E5%B9%B4%E5%88%86%E5%8F%96%E5%BE%97%EF%BC%88%E3%83%9C%E3%83%AA%E3%83%B3%E3%82%B8%E3%83%A3%E3%83%BC%E3%83%90%E3%83%B3%E3%83%89%E7%94%A8%EF%BC%89%0A%20%20%20%20data%20%3D%20ticker.history(period%3D%222y%22%2C%20interval%3D%221d%22)%0A%20%20%20%20data%0A%20%20%20%20return%20(data%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%E3%83%9C%E3%83%AA%E3%83%B3%E3%82%B8%E3%83%A3%E3%83%BC%E3%83%90%E3%83%B3%E3%83%89%EF%BC%88%E6%97%A5%E8%B6%B3%E3%83%87%E3%83%BC%E3%82%BF%EF%BC%89%0A%0A%20%20%20%20%E4%BE%A1%E6%A0%BC%E3%81%AE%E5%A4%89%E5%8B%95%E7%AF%84%E5%9B%B2%E3%82%92%E7%B5%B1%E8%A8%88%E7%9A%84%E3%81%AB%E8%A1%A8%E3%81%99%E6%8C%87%E6%A8%99%E3%80%82%E7%A7%BB%E5%8B%95%E5%B9%B3%E5%9D%87%E7%B7%9A%C2%B1%E6%A8%99%E6%BA%96%E5%81%8F%E5%B7%AE%E3%81%A7%E3%83%90%E3%83%B3%E3%83%89%E3%82%92%E6%8F%8F%E7%94%BB%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%0A%0A%20%20%20%20**%E6%A7%8B%E6%88%90**%3A%20%E3%83%9F%E3%83%89%E3%83%AB%E3%83%90%E3%83%B3%E3%83%89%EF%BC%88SMA%EF%BC%89%20%C2%B1%20%E6%A8%99%E6%BA%96%E5%81%8F%E5%B7%AE%C3%97N%0A%0A%20%20%20%20%7C%20%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%20%7C%20%E5%80%A4%20%7C%20%E8%AA%AC%E6%98%8E%20%7C%0A%20%20%20%20%7C-----------%7C---%7C------%7C%0A%20%20%20%20%7C%20%E6%9C%9F%E9%96%93%20%7C%2020%20%7C%2020%E6%97%A5%E9%96%93%E3%81%AE%E7%A7%BB%E5%8B%95%E5%B9%B3%E5%9D%87%E3%81%A8%E6%A8%99%E6%BA%96%E5%81%8F%E5%B7%AE%20%7C%0A%20%20%20%20%7C%20%E5%81%8F%E5%B7%AE%CF%831%20%7C%201.0%20%7C%20%E6%A8%99%E6%BA%96%E5%81%8F%E5%B7%AE%E3%81%AE1%E5%80%8D%20%7C%0A%20%20%20%20%7C%20%E5%81%8F%E5%B7%AE%CF%832%20%7C%202.0%20%7C%20%E6%A8%99%E6%BA%96%E5%81%8F%E5%B7%AE%E3%81%AE2%E5%80%8D%EF%BC%88%E4%B8%80%E8%88%AC%E7%9A%84%EF%BC%89%20%7C%0A%0A%20%20%20%20**%E3%82%B7%E3%82%B0%E3%83%8A%E3%83%AB**%3A%20%E3%83%90%E3%83%B3%E3%83%89%E5%B9%85%E6%8B%A1%E5%A4%A7%E2%86%92%E3%83%9C%E3%83%A9%E3%83%86%E3%82%A3%E3%83%AA%E3%83%86%E3%82%A3%E5%A2%97%E5%8A%A0%E3%80%81%E4%BE%A1%E6%A0%BC%E3%81%8C%E3%83%90%E3%83%B3%E3%83%89%E3%81%AB%E6%8E%A5%E8%A7%A6%E2%86%92%E8%B2%B7%E3%82%8F%E3%82%8C%E3%81%99%E3%81%8E%2F%E5%A3%B2%E3%82%89%E3%82%8C%E3%81%99%E3%81%8E%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(data%2C%20ka%2C%20pl)%3A%0A%20%20%20%20import%20numpy%20as%20np%0A%0A%20%20%20%20%23%20%E7%B5%82%E5%80%A4%E3%82%92numpy%E9%85%8D%E5%88%97%E3%81%AB%E5%A4%89%E6%8F%9B%0A%20%20%20%20close%20%3D%20data%5B%22close.amount%22%5D.to_numpy().astype(%22float64%22)%0A%0A%20%20%20%20%23%20%E5%81%8F%E5%B7%AE1.0%E3%81%AE%E3%83%9C%E3%83%AA%E3%83%B3%E3%82%B8%E3%83%A3%E3%83%BC%E3%83%90%E3%83%B3%E3%83%89%0A%20%20%20%20bb_upper_1%2C%20bb_middle_1%2C%20bb_lower_1%2C%20_%2C%20_%2C%20_%2C%20_%20%3D%20ka.bbands(%0A%20%20%20%20%20%20%20%20close%2C%20period%3D20%2C%20dev_up%3D1.0%2C%20dev_down%3D1.0%0A%20%20%20%20)%0A%0A%20%20%20%20%23%20%E5%81%8F%E5%B7%AE2.0%E3%81%AE%E3%83%9C%E3%83%AA%E3%83%B3%E3%82%B8%E3%83%A3%E3%83%BC%E3%83%90%E3%83%B3%E3%83%89%0A%20%20%20%20bb_upper_2%2C%20bb_middle_2%2C%20bb_lower_2%2C%20_%2C%20_%2C%20_%2C%20_%20%3D%20ka.bbands(%0A%20%20%20%20%20%20%20%20close%2C%20period%3D20%2C%20dev_up%3D2.0%2C%20dev_down%3D2.0%0A%20%20%20%20)%0A%0A%20%20%20%20%23%20DataFrame%E3%81%AB%E5%88%97%E3%82%92%E8%BF%BD%E5%8A%A0%0A%20%20%20%20data_with_bb%20%3D%20data.with_columns(%0A%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20pl.Series(%22bbands_upper_1%22%2C%20bb_upper_1)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20pl.Series(%22bbands_middle_1%22%2C%20bb_middle_1)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20pl.Series(%22bbands_lower_1%22%2C%20bb_lower_1)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20pl.Series(%22bbands_upper_2%22%2C%20bb_upper_2)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20pl.Series(%22bbands_middle_2%22%2C%20bb_middle_2)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20pl.Series(%22bbands_lower_2%22%2C%20bb_lower_2)%2C%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20)%0A%0A%20%20%20%20data_with_bb%0A%20%20%20%20return%20close%2C%20data_with_bb%0A%0A%0A%40app.cell%0Adef%20_(data_with_bb%2C%20go%2C%20info%2C%20pl%2C%20stock_code)%3A%0A%20%20%20%20_company_name%20%3D%20info.get(%22shortName%22%2C%20stock_code.value)%0A%0A%20%20%20%20%23%20Float64%E3%81%AB%E5%A4%89%E6%8F%9B%0A%20%20%20%20_df_bb_plot%20%3D%20data_with_bb.with_columns(%0A%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20pl.col(%22open.amount%22).cast(pl.Float64)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20pl.col(%22high.amount%22).cast(pl.Float64)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20pl.col(%22low.amount%22).cast(pl.Float64)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20pl.col(%22close.amount%22).cast(pl.Float64)%2C%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20)%0A%20%20%20%20_dates_bb%20%3D%20_df_bb_plot%5B%22date%22%5D.to_list()%0A%0A%20%20%20%20_bb_data%20%3D%20%5B%0A%20%20%20%20%20%20%20%20go.Candlestick(%0A%20%20%20%20%20%20%20%20%20%20%20%20yaxis%3D%22y1%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20x%3D_dates_bb%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20open%3D_df_bb_plot%5B%22open.amount%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20high%3D_df_bb_plot%5B%22high.amount%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20low%3D_df_bb_plot%5B%22low.amount%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20close%3D_df_bb_plot%5B%22close.amount%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20increasing_line_color%3D%22red%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20decreasing_line_color%3D%22green%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20name%3Df%22%7B_company_name%7D%E3%81%AE%E6%A0%AA%E4%BE%A1%22%2C%0A%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%23%20%E3%83%9F%E3%83%89%E3%83%AB%E3%83%90%E3%83%B3%E3%83%89%0A%20%20%20%20%20%20%20%20go.Scatter(%0A%20%20%20%20%20%20%20%20%20%20%20%20yaxis%3D%22y1%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20x%3D_dates_bb%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3D_df_bb_plot%5B%22bbands_middle_1%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20name%3D%22%E3%83%9F%E3%83%89%E3%83%AB%E3%83%90%E3%83%B3%E3%83%89%20(SMA20)%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20line%3D%7B%22color%22%3A%20%22blue%22%2C%20%22width%22%3A%201.5%7D%2C%0A%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%23%20%E5%81%8F%E5%B7%AE1.0%E3%81%AE%E3%83%90%E3%83%B3%E3%83%89%0A%20%20%20%20%20%20%20%20go.Scatter(%0A%20%20%20%20%20%20%20%20%20%20%20%20yaxis%3D%22y1%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20x%3D_dates_bb%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3D_df_bb_plot%5B%22bbands_upper_1%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20name%3D%22%CF%831%20%E4%B8%8A%E9%99%90%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20line%3D%7B%22color%22%3A%20%22lightcoral%22%2C%20%22width%22%3A%201.2%2C%20%22dash%22%3A%20%22dot%22%7D%2C%0A%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20go.Scatter(%0A%20%20%20%20%20%20%20%20%20%20%20%20yaxis%3D%22y1%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20x%3D_dates_bb%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3D_df_bb_plot%5B%22bbands_lower_1%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20name%3D%22%CF%831%20%E4%B8%8B%E9%99%90%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20line%3D%7B%22color%22%3A%20%22lightcoral%22%2C%20%22width%22%3A%201.2%2C%20%22dash%22%3A%20%22dot%22%7D%2C%0A%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%23%20%E5%81%8F%E5%B7%AE2.0%E3%81%AE%E3%83%90%E3%83%B3%E3%83%89%0A%20%20%20%20%20%20%20%20go.Scatter(%0A%20%20%20%20%20%20%20%20%20%20%20%20yaxis%3D%22y1%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20x%3D_dates_bb%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3D_df_bb_plot%5B%22bbands_upper_2%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20name%3D%22%CF%832%20%E4%B8%8A%E9%99%90%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20line%3D%7B%22color%22%3A%20%22orange%22%2C%20%22width%22%3A%201.5%7D%2C%0A%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20go.Scatter(%0A%20%20%20%20%20%20%20%20%20%20%20%20yaxis%3D%22y1%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20x%3D_dates_bb%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3D_df_bb_plot%5B%22bbands_lower_2%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20name%3D%22%CF%832%20%E4%B8%8B%E9%99%90%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20line%3D%7B%22color%22%3A%20%22orange%22%2C%20%22width%22%3A%201.5%7D%2C%0A%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%5D%0A%0A%20%20%20%20_bb_layout%20%3D%20%7B%0A%20%20%20%20%20%20%20%20%22height%22%3A%20560%2C%0A%20%20%20%20%20%20%20%20%22width%22%3A%201028%2C%0A%20%20%20%20%20%20%20%20%22title%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22text%22%3A%20f%22%7B_company_name%7D%E3%81%AE%E6%A0%AA%E4%BE%A1%EF%BC%88%E3%83%9C%E3%83%AA%E3%83%B3%E3%82%B8%E3%83%A3%E3%83%BC%E3%83%90%E3%83%B3%E3%83%89%EF%BC%89%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22x%22%3A%200.5%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22xanchor%22%3A%20%22center%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22font%22%3A%20%7B%22size%22%3A%2024%2C%20%22weight%22%3A%20%22bold%22%7D%2C%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%22xaxis%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22rangeslider%22%3A%20%7B%22visible%22%3A%20False%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22title%22%3A%20%7B%22text%22%3A%20%22%E6%97%A5%E4%BB%98%22%7D%2C%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%22yaxis1%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22domain%22%3A%20%5B0.05%2C%201.0%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22title%22%3A%20%22%E4%BE%A1%E6%A0%BC(JPY)%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22side%22%3A%20%22left%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22tickformat%22%3A%20%22%2C%22%2C%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%22legend%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22orientation%22%3A%20%22h%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22yanchor%22%3A%20%22top%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22y%22%3A%20-0.15%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22xanchor%22%3A%20%22center%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22x%22%3A%200.5%2C%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%7D%0A%0A%20%20%20%20bb_fig%20%3D%20go.Figure(data%3D_bb_data%2C%20layout%3Dgo.Layout(_bb_layout))%0A%20%20%20%20bb_fig%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%9F%E3%83%B3%E3%82%B0%E5%87%A6%E7%90%86%EF%BC%88%E3%83%AA%E3%82%A2%E3%83%AB%E3%82%BF%E3%82%A4%E3%83%A0%E3%83%87%E3%83%BC%E3%82%BF%E5%AF%BE%E5%BF%9C%EF%BC%89%0A%0A%20%20%20%20**%E3%83%90%E3%83%83%E3%83%81%E5%87%A6%E7%90%86**%EF%BC%88%60ka.bbands()%60%EF%BC%89%E3%81%AF%E9%81%8E%E5%8E%BB%E3%83%87%E3%83%BC%E3%82%BF%E5%85%A8%E4%BD%93%E3%82%92%E4%B8%80%E6%8B%AC%E8%A8%88%E7%AE%97%E3%80%82%0A%20%20%20%20**%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%9F%E3%83%B3%E3%82%B0%E5%87%A6%E7%90%86**%EF%BC%88%60ka.bbands_inc()%60%20%2B%20%E3%82%B8%E3%82%A7%E3%83%8D%E3%83%AC%E3%83%BC%E3%82%BF%E3%83%BC%EF%BC%89%E3%81%AF%E3%83%87%E3%83%BC%E3%82%BF%E3%82%921%E8%A1%8C%E3%81%9A%E3%81%A4%E5%87%A6%E7%90%86%E3%81%97%E3%80%81%0A%20%20%20%20%E3%83%AA%E3%82%A2%E3%83%AB%E3%82%BF%E3%82%A4%E3%83%A0%E6%9B%B4%E6%96%B0%EF%BC%88%E5%88%86%E8%B6%B3%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AA%E3%81%A9%EF%BC%89%E3%81%AB%E5%AF%BE%E5%BF%9C%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%0A%0A%20%20%20%20%E3%82%B8%E3%82%A7%E3%83%8D%E3%83%AC%E3%83%BC%E3%82%BF%E3%83%BC%E3%81%A7%E5%89%8D%E5%9B%9E%E3%81%AE%E8%A8%88%E7%AE%97%E7%B5%90%E6%9E%9C%EF%BC%88SMA%E3%80%81%E5%90%88%E8%A8%88%E3%80%81%E4%BA%8C%E4%B9%97%E5%90%88%E8%A8%88%EF%BC%89%E3%82%92%E4%BF%9D%E6%8C%81%E3%81%97%E3%80%81%0A%20%20%20%20%E6%96%B0%E3%81%97%E3%81%84%E3%83%87%E3%83%BC%E3%82%BF%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88%E3%81%94%E3%81%A8%E3%81%AB%60ka.bbands_inc()%60%E3%81%A7%E3%82%A4%E3%83%B3%E3%82%AF%E3%83%AA%E3%83%A1%E3%83%B3%E3%82%BF%E3%83%AB%E8%A8%88%E7%AE%97%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(ka)%3A%0A%20%20%20%20def%20bbands_streaming(prices%2C%20period%3D20%2C%20dev_up%3D2.0%2C%20dev_down%3D2.0)%3A%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20%E3%82%B8%E3%82%A7%E3%83%8D%E3%83%AC%E3%83%BC%E3%82%BF%E3%83%BC%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E3%83%9C%E3%83%AA%E3%83%B3%E3%82%B8%E3%83%A3%E3%83%BC%E3%83%90%E3%83%B3%E3%83%89%E3%81%AE%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%88%E7%AE%97%0A%0A%20%20%20%20%20%20%20%20Args%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20prices%3A%20%E4%BE%A1%E6%A0%BC%E3%81%AE%E3%82%A4%E3%83%86%E3%83%A9%E3%83%96%E3%83%AB%EF%BC%88%E3%83%AA%E3%82%B9%E3%83%88%E3%80%81numpy%E9%85%8D%E5%88%97%E3%81%AA%E3%81%A9%EF%BC%89%0A%20%20%20%20%20%20%20%20%20%20%20%20period%3A%20%E3%83%9C%E3%83%AA%E3%83%B3%E3%82%B8%E3%83%A3%E3%83%BC%E3%83%90%E3%83%B3%E3%83%89%E3%81%AE%E6%9C%9F%E9%96%93%0A%20%20%20%20%20%20%20%20%20%20%20%20dev_up%3A%20%E4%B8%8A%E6%96%B9%E5%81%8F%E5%B7%AE%E5%80%8D%E6%95%B0%0A%20%20%20%20%20%20%20%20%20%20%20%20dev_down%3A%20%E4%B8%8B%E6%96%B9%E5%81%8F%E5%B7%AE%E5%80%8D%E6%95%B0%0A%0A%20%20%20%20%20%20%20%20Yields%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20(upper%2C%20middle%2C%20lower%2C%20index)%3A%20%E5%90%84%E3%83%87%E3%83%BC%E3%82%BF%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88%E3%81%AE%E3%83%9C%E3%83%AA%E3%83%B3%E3%82%B8%E3%83%A3%E3%83%BC%E3%83%90%E3%83%B3%E3%83%89%E5%80%A4%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20%23%20%E7%8A%B6%E6%85%8B%E5%A4%89%E6%95%B0%0A%20%20%20%20%20%20%20%20sma%20%3D%20None%0A%20%20%20%20%20%20%20%20sum_val%20%3D%200.0%0A%20%20%20%20%20%20%20%20sum_sq%20%3D%200.0%0A%20%20%20%20%20%20%20%20buffer%20%3D%20%5B%5D%20%20%23%20%E3%82%B9%E3%83%A9%E3%82%A4%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%0A%0A%20%20%20%20%20%20%20%20for%20idx%2C%20price%20in%20enumerate(prices)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20len(buffer)%20%3C%20period%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%20%E3%82%A6%E3%82%A9%E3%83%BC%E3%83%A0%E3%82%A2%E3%83%83%E3%83%97%E6%9C%9F%E9%96%93%EF%BC%9A%E6%9C%9F%E9%96%93%E5%88%86%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%81%8C%E6%8F%83%E3%81%86%E3%81%BE%E3%81%A7%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20buffer.append(price)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20sum_val%20%2B%3D%20price%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20sum_sq%20%2B%3D%20price**2%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20len(buffer)%20%3D%3D%20period%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%20%E5%88%9D%E5%9B%9E%E3%81%AESMA%E8%A8%88%E7%AE%97%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20sma%20%3D%20sum_val%20%2F%20period%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20yield%20(None%2C%20None%2C%20None%2C%20idx)%0A%20%20%20%20%20%20%20%20%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%20%E3%82%A4%E3%83%B3%E3%82%AF%E3%83%AA%E3%83%A1%E3%83%B3%E3%82%BF%E3%83%AB%E8%A8%88%E7%AE%97%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20old_price%20%3D%20buffer%5B0%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20upper%2C%20middle%2C%20lower%2C%20sma%2C%20sum_val%2C%20sum_sq%20%3D%20ka.bbands_inc(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20price%3Dprice%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20prev_sma%3Dsma%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20prev_sum%3Dsum_val%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20prev_sum_sq%3Dsum_sq%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20old_price%3Dold_price%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20period%3Dperiod%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20dev_up%3Ddev_up%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20dev_down%3Ddev_down%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20)%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%20%E3%83%90%E3%83%83%E3%83%95%E3%82%A1%E6%9B%B4%E6%96%B0%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20buffer.append(price)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20buffer.pop(0)%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20yield%20(upper%2C%20middle%2C%20lower%2C%20idx)%0A%20%20%20%20return%20(bbands_streaming%2C)%0A%0A%0A%40app.cell%0Adef%20_(bbands_streaming%2C%20close%2C%20pl)%3A%0A%20%20%20%20%23%20%E3%82%B8%E3%82%A7%E3%83%8D%E3%83%AC%E3%83%BC%E3%82%BF%E3%83%BC%E3%81%A7%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%9F%E3%83%B3%E3%82%B0%E5%87%A6%E7%90%86%E3%82%92%E5%AE%9F%E8%A1%8C%0A%20%20%20%20stream_results%20%3D%20list(%0A%20%20%20%20%20%20%20%20bbands_streaming(close%2C%20period%3D20%2C%20dev_up%3D2.0%2C%20dev_down%3D2.0)%0A%20%20%20%20)%0A%0A%20%20%20%20%23%20%E7%B5%90%E6%9E%9C%E3%82%92DataFrame%E3%81%AB%E5%A4%89%E6%8F%9B%0A%20%20%20%20stream_upper%20%3D%20%5Br%5B0%5D%20for%20r%20in%20stream_results%5D%0A%20%20%20%20stream_middle%20%3D%20%5Br%5B1%5D%20for%20r%20in%20stream_results%5D%0A%20%20%20%20stream_lower%20%3D%20%5Br%5B2%5D%20for%20r%20in%20stream_results%5D%0A%0A%20%20%20%20stream_df%20%3D%20pl.DataFrame(%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22index%22%3A%20list(range(len(stream_results)))%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22stream_upper%22%3A%20stream_upper%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22stream_middle%22%3A%20stream_middle%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22stream_lower%22%3A%20stream_lower%2C%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20)%0A%0A%20%20%20%20stream_df%0A%20%20%20%20return%20(stream_df%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%23%20%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%9F%E3%83%B3%E3%82%B0%E5%87%A6%E7%90%86%E3%81%AE%E9%80%94%E4%B8%AD%E7%B5%8C%E9%81%8E%0A%0A%20%20%20%20%E6%9C%80%E5%88%9D%E3%81%AE50%E8%A1%8C%E3%81%AE%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%9F%E3%83%B3%E3%82%B0%E5%87%A6%E7%90%86%E7%B5%90%E6%9E%9C%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%20%E6%9C%80%E5%88%9D%E3%81%AE20%E8%A1%8C%EF%BC%88%E3%82%A6%E3%82%A9%E3%83%BC%E3%83%A0%E3%82%A2%E3%83%83%E3%83%97%E6%9C%9F%E9%96%93%EF%BC%89%E3%81%AF%60None%60%E3%80%81%E3%81%9D%E3%81%AE%E5%BE%8C%E3%82%A4%E3%83%B3%E3%82%AF%E3%83%AA%E3%83%A1%E3%83%B3%E3%82%BF%E3%83%AB%E8%A8%88%E7%AE%97%E3%81%8C%E9%96%8B%E5%A7%8B%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(stream_df)%3A%0A%20%20%20%20%23%20%E6%9C%80%E5%88%9D%E3%81%AE50%E8%A1%8C%E3%82%92%E8%A1%A8%E7%A4%BA%0A%20%20%20%20stream_df.head(50)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%23%20%E3%83%90%E3%83%83%E3%83%81%E8%A8%88%E7%AE%97%20vs%20%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%9F%E3%83%B3%E3%82%B0%E5%87%A6%E7%90%86%E3%81%AE%E6%AF%94%E8%BC%83%0A%0A%20%20%20%20%E3%82%B8%E3%82%A7%E3%83%8D%E3%83%AC%E3%83%BC%E3%82%BF%E3%83%BC%E3%81%AB%E3%82%88%E3%82%8B%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%9F%E3%83%B3%E3%82%B0%E5%87%A6%E7%90%86%E3%81%A8%E3%83%90%E3%83%83%E3%83%81%E8%A8%88%E7%AE%97%E3%81%AE%E7%B5%90%E6%9E%9C%E3%82%92%E6%AF%94%E8%BC%83%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%20%E4%B8%A1%E8%80%85%E3%81%AF%E6%95%B0%E5%AD%A6%E7%9A%84%E3%81%AB%E5%90%8C%E4%B8%80%E3%81%AA%E3%81%AE%E3%81%A7%E3%80%81%E5%B7%AE%E5%88%86%E3%81%AF%E3%81%BB%E3%81%BC%E3%82%BC%E3%83%AD%EF%BC%88%E6%B5%AE%E5%8B%95%E5%B0%8F%E6%95%B0%E7%82%B9%E8%AA%A4%E5%B7%AE%E3%81%AE%E3%81%BF%EF%BC%89%E3%81%AB%E3%81%AA%E3%82%8B%E3%81%AF%E3%81%9A%E3%81%A7%E3%81%99%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(data_with_bb%2C%20pl%2C%20stream_df)%3A%0A%20%20%20%20%23%20%E3%83%90%E3%83%83%E3%83%81%E8%A8%88%E7%AE%97%E7%B5%90%E6%9E%9C%E3%81%A8%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%9F%E3%83%B3%E3%82%B0%E7%B5%90%E6%9E%9C%E3%82%92%E7%B5%90%E5%90%88%0A%20%20%20%20comparison_full%20%3D%20pl.DataFrame(%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22index%22%3A%20stream_df%5B%22index%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22batch_upper%22%3A%20data_with_bb%5B%22bbands_upper_2%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22stream_upper%22%3A%20stream_df%5B%22stream_upper%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22batch_middle%22%3A%20data_with_bb%5B%22bbands_middle_2%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22stream_middle%22%3A%20stream_df%5B%22stream_middle%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22batch_lower%22%3A%20data_with_bb%5B%22bbands_lower_2%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22stream_lower%22%3A%20stream_df%5B%22stream_lower%22%5D%2C%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20).with_columns(%0A%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%23%20%E5%B7%AE%E5%88%86%E8%A8%88%E7%AE%97%EF%BC%88None%E3%82%92%E9%99%A4%E5%A4%96%EF%BC%89%0A%20%20%20%20%20%20%20%20%20%20%20%20pl.when(pl.col(%22stream_upper%22).is_not_null())%0A%20%20%20%20%20%20%20%20%20%20%20%20.then((pl.col(%22batch_upper%22)%20-%20pl.col(%22stream_upper%22)).abs())%0A%20%20%20%20%20%20%20%20%20%20%20%20.otherwise(None)%0A%20%20%20%20%20%20%20%20%20%20%20%20.alias(%22diff_upper%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20pl.when(pl.col(%22stream_middle%22).is_not_null())%0A%20%20%20%20%20%20%20%20%20%20%20%20.then((pl.col(%22batch_middle%22)%20-%20pl.col(%22stream_middle%22)).abs())%0A%20%20%20%20%20%20%20%20%20%20%20%20.otherwise(None)%0A%20%20%20%20%20%20%20%20%20%20%20%20.alias(%22diff_middle%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20pl.when(pl.col(%22stream_lower%22).is_not_null())%0A%20%20%20%20%20%20%20%20%20%20%20%20.then((pl.col(%22batch_lower%22)%20-%20pl.col(%22stream_lower%22)).abs())%0A%20%20%20%20%20%20%20%20%20%20%20%20.otherwise(None)%0A%20%20%20%20%20%20%20%20%20%20%20%20.alias(%22diff_lower%22)%2C%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20)%0A%0A%20%20%20%20%23%20%E7%B5%B1%E8%A8%88%E3%82%B5%E3%83%9E%E3%83%AA%0A%20%20%20%20comparison_summary%20%3D%20pl.DataFrame(%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22%E6%8C%87%E6%A8%99%22%3A%20%5B%22%E4%B8%8A%E9%99%90%E3%83%90%E3%83%B3%E3%83%89%22%2C%20%22%E3%83%9F%E3%83%89%E3%83%AB%E3%83%90%E3%83%B3%E3%83%89%22%2C%20%22%E4%B8%8B%E9%99%90%E3%83%90%E3%83%B3%E3%83%89%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22%E6%9C%80%E5%A4%A7%E5%B7%AE%E5%88%86%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20comparison_full%5B%22diff_upper%22%5D.max()%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20comparison_full%5B%22diff_middle%22%5D.max()%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20comparison_full%5B%22diff_lower%22%5D.max()%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22%E5%B9%B3%E5%9D%87%E5%B7%AE%E5%88%86%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20comparison_full%5B%22diff_upper%22%5D.mean()%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20comparison_full%5B%22diff_middle%22%5D.mean()%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20comparison_full%5B%22diff_lower%22%5D.mean()%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20)%0A%0A%20%20%20%20comparison_summary%0A%20%20%20%20return%20(comparison_full%2C)%0A%0A%0A%40app.cell%0Adef%20_(comparison_full)%3A%0A%20%20%20%20%23%20%E6%9C%80%E5%BE%8C%E3%81%AE20%E8%A1%8C%E3%82%92%E8%A1%A8%E7%A4%BA%EF%BC%88%E8%A8%88%E7%AE%97%E3%81%8C%E5%AE%89%E5%AE%9A%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E9%83%A8%E5%88%86%EF%BC%89%0A%20%20%20%20comparison_full.tail(20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%E3%82%B8%E3%82%A7%E3%83%8D%E3%83%AC%E3%83%BC%E3%82%BF%E3%83%BC%E3%81%AB%E3%82%88%E3%82%8B%E8%87%AA%E5%8B%95%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%9F%E3%83%B3%E3%82%B0%E5%8F%AF%E8%A6%96%E5%8C%96%0A%0A%20%20%20%20%E3%82%B8%E3%82%A7%E3%83%8D%E3%83%AC%E3%83%BC%E3%82%BF%E3%83%BC%E8%A8%88%E7%AE%97%E3%81%AE%E7%B5%90%E6%9E%9C%E3%82%92**%E8%87%AA%E5%8B%95%E3%82%A2%E3%83%8B%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3**%E3%81%A7%E3%83%81%E3%83%A3%E3%83%BC%E3%83%88%E8%A1%A8%E7%A4%BA%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%0A%0A%20%20%20%20%23%23%23%20%E5%AE%9F%E8%A3%85%E6%96%B9%E6%B3%95%0A%0A%20%20%20%20%60mo.ui.refresh%60%EF%BC%88%E3%82%BF%E3%82%A4%E3%83%9E%E3%83%BC%EF%BC%89%E3%81%A8%60mo.state%60%EF%BC%88%E7%8A%B6%E6%85%8B%E7%AE%A1%E7%90%86%EF%BC%89%E3%82%92%E7%B5%84%E3%81%BF%E5%90%88%E3%82%8F%E3%81%9B%E3%82%8B%E3%81%93%E3%81%A8%E3%81%A7%E3%80%81%0A%20%20%20%20%E3%83%87%E3%83%BC%E3%82%BF%E3%81%8C%E5%BE%90%E3%80%85%E3%81%AB%E8%BF%BD%E5%8A%A0%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%81%8F%E6%A7%98%E5%AD%90%E3%82%92**%E8%87%AA%E5%8B%95%E7%9A%84%E3%81%AB%E5%8F%AF%E8%A6%96%E5%8C%96**%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%0A%0A%20%20%20%20-%20**%E8%87%AA%E5%8B%95%E3%83%A2%E3%83%BC%E3%83%89**%3A%20%E3%82%BF%E3%82%A4%E3%83%9E%E3%83%BC%E3%81%A70.1%E7%A7%92%E3%81%94%E3%81%A8%E3%81%AB%E3%83%87%E3%83%BC%E3%82%BF%E8%A1%8C%E6%95%B0%E3%81%8C%E8%87%AA%E5%8B%95%E7%9A%84%E3%81%AB%E5%A2%97%E5%8A%A0%0A%20%20%20%20-%20**%E6%89%8B%E5%8B%95%E3%83%A2%E3%83%BC%E3%83%89**%3A%20%E3%82%B9%E3%83%A9%E3%82%A4%E3%83%80%E3%83%BC%E3%81%A7%E4%BB%BB%E6%84%8F%E3%81%AE%E4%BD%8D%E7%BD%AE%E3%82%92%E7%A2%BA%E8%AA%8D%E5%8F%AF%E8%83%BD%0A%0A%20%20%20%20%23%23%23%20%E6%93%8D%E4%BD%9C%E6%96%B9%E6%B3%95%0A%0A%20%20%20%201.%20%E8%87%AA%E5%8B%95%E3%82%A2%E3%83%8B%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%8C%E9%96%8B%E5%A7%8B%E3%81%95%E3%82%8C%E3%80%81%E3%83%81%E3%83%A3%E3%83%BC%E3%83%88%E3%81%8C%E5%BE%90%E3%80%85%E3%81%AB%E6%8F%8F%E7%94%BB%E3%81%95%E3%82%8C%E3%82%8B%0A%20%20%20%202.%20%E6%89%8B%E5%8B%95%E3%82%B9%E3%83%A9%E3%82%A4%E3%83%80%E3%83%BC%E3%81%A7%E4%BB%BB%E6%84%8F%E3%81%AE%E6%99%82%E7%82%B9%E3%82%92%E7%A2%BA%E8%AA%8D%E5%8F%AF%E8%83%BD%0A%20%20%20%203.%20%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%9F%E3%83%B3%E3%82%B0%E5%87%A6%E7%90%86%E3%81%A7%E3%80%8C%E3%83%87%E3%83%BC%E3%82%BF%E3%81%8C1%E8%A1%8C%E3%81%9A%E3%81%A4%E8%BF%BD%E5%8A%A0%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%81%8F%E3%80%8D%E6%A7%98%E5%AD%90%E3%82%92%E8%A6%96%E8%A6%9A%E7%9A%84%E3%81%AB%E7%90%86%E8%A7%A3%E3%81%A7%E3%81%8D%E3%82%8B%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(mo%2C%20stream_df)%3A%0A%20%20%20%20%23%20%E3%83%87%E3%83%BC%E3%82%BF%E8%A1%8C%E6%95%B0%E3%81%AE%E6%9C%80%E5%A4%A7%E5%80%A4%0A%20%20%20%20max_rows%20%3D%20len(stream_df)%0A%0A%20%20%20%20%23%20%E7%8A%B6%E6%85%8B%E7%AE%A1%E7%90%86%3A%20%E7%8F%BE%E5%9C%A8%E8%A1%A8%E7%A4%BA%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E8%A1%8C%E6%95%B0%EF%BC%88allow_self_loops%3DTrue%E3%81%A7%E8%87%AA%E5%B7%B1%E3%83%AB%E3%83%BC%E3%83%97%E5%8F%AF%E8%83%BD%EF%BC%89%0A%20%20%20%20get_current_row%2C%20set_current_row%20%3D%20mo.state(20%2C%20allow_self_loops%3DTrue)%0A%0A%20%20%20%20%23%20%E3%82%BF%E3%82%A4%E3%83%9E%E3%83%BC%3A%200.1%E7%A7%92%E3%81%94%E3%81%A8%E3%81%AB%E7%99%BA%E7%81%AB%0A%20%20%20%20timer%20%3D%20mo.ui.refresh(default_interval%3D%220.1s%22)%0A%20%20%20%20return%20get_current_row%2C%20max_rows%2C%20set_current_row%2C%20timer%0A%0A%0A%40app.cell%0Adef%20_(get_current_row%2C%20max_rows%2C%20set_current_row%2C%20timer)%3A%0A%20%20%20%20%23%20%E3%82%BF%E3%82%A4%E3%83%9E%E3%83%BC%E3%82%92%E5%8F%82%E7%85%A7%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%A7%E3%80%81%E3%81%93%E3%81%AE%E3%82%BB%E3%83%AB%E3%81%8C0.1%E7%A7%92%E3%81%94%E3%81%A8%E3%81%AB%E5%86%8D%E5%AE%9F%E8%A1%8C%E3%81%95%E3%82%8C%E3%82%8B%0A%20%20%20%20timer%0A%0A%20%20%20%20%23%20%E7%8F%BE%E5%9C%A8%E3%81%AE%E8%A1%8C%E6%95%B0%E3%82%92%E5%8F%96%E5%BE%97%0A%20%20%20%20current%20%3D%20get_current_row()%0A%0A%20%20%20%20%23%20%E3%81%BE%E3%81%A0%E6%9C%80%E5%A4%A7%E3%81%AB%E9%81%94%E3%81%97%E3%81%A6%E3%81%84%E3%81%AA%E3%81%91%E3%82%8C%E3%81%B0%E3%80%81%E8%A1%8C%E6%95%B0%E3%82%921%E5%A2%97%E3%82%84%E3%81%99%0A%20%20%20%20if%20current%20%3C%20max_rows%3A%0A%20%20%20%20%20%20%20%20set_current_row(current%20%2B%201)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(get_current_row%2C%20max_rows%2C%20mo%2C%20set_current_row)%3A%0A%20%20%20%20%23%20%E6%89%8B%E5%8B%95%E3%81%A7%E8%A1%8C%E6%95%B0%E3%82%92%E8%AA%BF%E6%95%B4%E3%81%99%E3%82%8B%E3%82%B9%E3%83%A9%E3%82%A4%E3%83%80%E3%83%BC%0A%20%20%20%20manual_slider%20%3D%20mo.ui.slider(%0A%20%20%20%20%20%20%20%20start%3D20%2C%0A%20%20%20%20%20%20%20%20stop%3Dmax_rows%2C%0A%20%20%20%20%20%20%20%20value%3Dget_current_row()%2C%0A%20%20%20%20%20%20%20%20step%3D1%2C%0A%20%20%20%20%20%20%20%20label%3Df%22%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B%E3%83%87%E3%83%BC%E3%82%BF%E8%A1%8C%E6%95%B0%EF%BC%88%E6%89%8B%E5%8B%95%E8%AA%BF%E6%95%B4%EF%BC%89%22%2C%0A%20%20%20%20%20%20%20%20on_change%3Dset_current_row%2C%20%20%23%20%E3%82%B9%E3%83%A9%E3%82%A4%E3%83%80%E3%83%BC%E5%A4%89%E6%9B%B4%E6%99%82%E3%81%AB%E7%8A%B6%E6%85%8B%E3%82%92%E6%9B%B4%E6%96%B0%0A%20%20%20%20)%0A%0A%20%20%20%20mo.md(f%22%22%22%0A%20%20%20%20%23%23%23%20%E8%87%AA%E5%8B%95%2F%E6%89%8B%E5%8B%95%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88%0A%0A%20%20%20%20%7Bmanual_slider%7D%0A%0A%20%20%20%20%E7%8F%BE%E5%9C%A8%E3%81%AE%E8%A1%A8%E7%A4%BA%E8%A1%8C%E6%95%B0%3A%20**%7Bget_current_row()%7D**%20%2F%20%7Bmax_rows%7D%0A%0A%20%20%20%20%3E%20**%E3%83%92%E3%83%B3%E3%83%88**%3A%20%E8%87%AA%E5%8B%95%E3%82%A2%E3%83%8B%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AF%E5%B8%B8%E3%81%AB%E5%AE%9F%E8%A1%8C%E4%B8%AD%E3%80%82%E3%82%B9%E3%83%A9%E3%82%A4%E3%83%80%E3%83%BC%E3%82%92%E5%8B%95%E3%81%8B%E3%81%97%E3%81%A6%E4%BB%BB%E6%84%8F%E3%81%AE%E4%BD%8D%E7%BD%AE%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(data%2C%20get_current_row%2C%20go%2C%20info%2C%20pl%2C%20stock_code%2C%20stream_df)%3A%0A%20%20%20%20%23%20%E7%8A%B6%E6%85%8B%E3%81%8B%E3%82%89%E7%8F%BE%E5%9C%A8%E3%81%AE%E8%A1%8C%E6%95%B0%E3%82%92%E5%8F%96%E5%BE%97%0A%20%20%20%20_stream_rows%20%3D%20get_current_row()%0A%20%20%20%20_stream_data_subset%20%3D%20stream_df.head(_stream_rows)%0A%20%20%20%20_original_data_subset%20%3D%20data.head(_stream_rows)%0A%0A%20%20%20%20_company_name_stream%20%3D%20info.get(%22shortName%22%2C%20stock_code.value)%0A%0A%20%20%20%20%23%20Float64%E3%81%AB%E5%A4%89%E6%8F%9B%0A%20%20%20%20_df_stream_plot%20%3D%20_original_data_subset.with_columns(%0A%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20pl.col(%22open.amount%22).cast(pl.Float64)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20pl.col(%22high.amount%22).cast(pl.Float64)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20pl.col(%22low.amount%22).cast(pl.Float64)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20pl.col(%22close.amount%22).cast(pl.Float64)%2C%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20)%0A%20%20%20%20_dates_stream%20%3D%20_df_stream_plot%5B%22date%22%5D.to_list()%0A%0A%20%20%20%20_stream_chart_data%20%3D%20%5B%0A%20%20%20%20%20%20%20%20go.Candlestick(%0A%20%20%20%20%20%20%20%20%20%20%20%20yaxis%3D%22y1%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20x%3D_dates_stream%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20open%3D_df_stream_plot%5B%22open.amount%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20high%3D_df_stream_plot%5B%22high.amount%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20low%3D_df_stream_plot%5B%22low.amount%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20close%3D_df_stream_plot%5B%22close.amount%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20increasing_line_color%3D%22red%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20decreasing_line_color%3D%22green%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20name%3Df%22%7B_company_name_stream%7D%E3%81%AE%E6%A0%AA%E4%BE%A1%22%2C%0A%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%23%20%E3%83%9F%E3%83%89%E3%83%AB%E3%83%90%E3%83%B3%E3%83%89%0A%20%20%20%20%20%20%20%20go.Scatter(%0A%20%20%20%20%20%20%20%20%20%20%20%20yaxis%3D%22y1%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20x%3D_dates_stream%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3D_stream_data_subset%5B%22stream_middle%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20name%3D%22%E3%83%9F%E3%83%89%E3%83%AB%E3%83%90%E3%83%B3%E3%83%89%20(SMA20)%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20line%3D%7B%22color%22%3A%20%22blue%22%2C%20%22width%22%3A%201.5%7D%2C%0A%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%23%20%E5%81%8F%E5%B7%AE2.0%E3%81%AE%E3%83%90%E3%83%B3%E3%83%89%EF%BC%88%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%88%E7%AE%97%E7%B5%90%E6%9E%9C%EF%BC%89%0A%20%20%20%20%20%20%20%20go.Scatter(%0A%20%20%20%20%20%20%20%20%20%20%20%20yaxis%3D%22y1%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20x%3D_dates_stream%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3D_stream_data_subset%5B%22stream_upper%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20name%3D%22%CF%832%20%E4%B8%8A%E9%99%90%EF%BC%88%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%9F%E3%83%B3%E3%82%B0%EF%BC%89%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20line%3D%7B%22color%22%3A%20%22orange%22%2C%20%22width%22%3A%201.5%7D%2C%0A%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20go.Scatter(%0A%20%20%20%20%20%20%20%20%20%20%20%20yaxis%3D%22y1%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20x%3D_dates_stream%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3D_stream_data_subset%5B%22stream_lower%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20name%3D%22%CF%832%20%E4%B8%8B%E9%99%90%EF%BC%88%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%9F%E3%83%B3%E3%82%B0%EF%BC%89%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20line%3D%7B%22color%22%3A%20%22orange%22%2C%20%22width%22%3A%201.5%7D%2C%0A%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%5D%0A%0A%20%20%20%20_stream_chart_layout%20%3D%20%7B%0A%20%20%20%20%20%20%20%20%22height%22%3A%20560%2C%0A%20%20%20%20%20%20%20%20%22width%22%3A%201028%2C%0A%20%20%20%20%20%20%20%20%22title%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22text%22%3A%20f%22%7B_company_name_stream%7D%E3%81%AE%E6%A0%AA%E4%BE%A1%EF%BC%88%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%9F%E3%83%B3%E3%82%B0%E5%87%A6%E7%90%86%EF%BC%9A%7B_stream_rows%7D%E8%A1%8C%EF%BC%89%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22x%22%3A%200.5%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22xanchor%22%3A%20%22center%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22font%22%3A%20%7B%22size%22%3A%2024%2C%20%22weight%22%3A%20%22bold%22%7D%2C%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%22xaxis%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22rangeslider%22%3A%20%7B%22visible%22%3A%20False%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22title%22%3A%20%7B%22text%22%3A%20%22%E6%97%A5%E4%BB%98%22%7D%2C%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%22yaxis1%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22domain%22%3A%20%5B0.05%2C%201.0%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22title%22%3A%20%22%E4%BE%A1%E6%A0%BC(JPY)%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22side%22%3A%20%22left%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22tickformat%22%3A%20%22%2C%22%2C%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%22legend%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22orientation%22%3A%20%22h%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22yanchor%22%3A%20%22top%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22y%22%3A%20-0.15%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22xanchor%22%3A%20%22center%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22x%22%3A%200.5%2C%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%7D%0A%0A%20%20%20%20stream_chart_fig%20%3D%20go.Figure(%0A%20%20%20%20%20%20%20%20data%3D_stream_chart_data%2C%20layout%3Dgo.Layout(_stream_chart_layout)%0A%20%20%20%20)%0A%20%20%20%20stream_chart_fig%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%23%20%E3%83%90%E3%83%83%E3%83%81%20vs%20%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%9F%E3%83%B3%E3%82%B0%20%E6%A4%9C%E8%A8%BC%E7%B5%90%E6%9E%9C%0A%0A%20%20%20%20%E6%AF%94%E8%BC%83%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%81%8B%E3%82%89%E3%80%81%E3%83%90%E3%83%83%E3%83%81%E8%A8%88%E7%AE%97%E3%81%A8%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%9F%E3%83%B3%E3%82%B0%E5%87%A6%E7%90%86%E3%81%AE%E7%B5%90%E6%9E%9C%E3%81%8C%E3%81%BB%E3%81%BC%E4%B8%80%E8%87%B4%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%EF%BC%88%E5%B7%AE%E5%88%86%E3%81%AF%E6%B5%AE%E5%8B%95%E5%B0%8F%E6%95%B0%E7%82%B9%E8%AA%A4%E5%B7%AE%E3%81%AE%E3%81%BF%EF%BC%89%E3%80%82%0A%0A%20%20%20%20**%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%9F%E3%83%B3%E3%82%B0%E5%87%A6%E7%90%86%E3%81%AE%E5%88%A9%E7%82%B9**%EF%BC%9A%0A%20%20%20%20-%20%E3%83%A1%E3%83%A2%E3%83%AA%E5%8A%B9%E7%8E%87%EF%BC%88%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%81%AE%E3%81%BF%E4%BF%9D%E6%8C%81%EF%BC%89%0A%20%20%20%20-%20%E3%83%AA%E3%82%A2%E3%83%AB%E3%82%BF%E3%82%A4%E3%83%A0%E5%AF%BE%E5%BF%9C%EF%BC%88%E5%88%86%E8%B6%B3%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AA%E3%81%A9%EF%BC%89%0A%20%20%20%20-%20%E7%84%A1%E9%99%90%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%A0%E5%AF%BE%E5%BF%9C%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
69f01f0e7920f5b5bf605fa685bfd259