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%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%22%22%22%0A%20%20%20%20%23%20%E5%8D%98%E7%B4%94%E7%A7%BB%E5%8B%95%E5%B9%B3%E5%9D%87%E7%B7%9A%EF%BC%88SMA%EF%BC%89%E3%81%AB%E3%82%88%E3%82%8B%E6%A0%AA%E4%BE%A1%E5%88%86%E6%9E%90%0A%0A%20%20%20%20%23%23%20%E7%A7%BB%E5%8B%95%E5%B9%B3%E5%9D%87%E7%B7%9A%E3%81%A8%E3%81%AF%EF%BC%9F%0A%0A%20%20%20%20**%E7%A7%BB%E5%8B%95%E5%B9%B3%E5%9D%87%E7%B7%9A%EF%BC%88Moving%20Average%EF%BC%89**%20%E3%81%AF%E3%80%81%E4%B8%80%E5%AE%9A%E6%9C%9F%E9%96%93%E3%81%AE%E6%A0%AA%E4%BE%A1%E3%81%AE%E5%B9%B3%E5%9D%87%E5%80%A4%E3%82%92%E7%B5%90%E3%82%93%E3%81%A0%E7%B7%9A%E3%81%A7%E3%81%99%E3%80%82%0A%20%20%20%20%E6%A0%AA%E4%BE%A1%E3%81%AE%E3%83%88%E3%83%AC%E3%83%B3%E3%83%89%E3%82%92%E6%8A%8A%E6%8F%A1%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AE%E6%9C%80%E3%82%82%E5%9F%BA%E6%9C%AC%E7%9A%84%E3%81%AA%E3%83%86%E3%82%AF%E3%83%8B%E3%82%AB%E3%83%AB%E6%8C%87%E6%A8%99%E3%81%AE%E4%B8%80%E3%81%A4%E3%81%A7%E3%81%99%E3%80%82%0A%0A%20%20%20%20%23%23%23%20%E5%8D%98%E7%B4%94%E7%A7%BB%E5%8B%95%E5%B9%B3%E5%9D%87%E7%B7%9A%EF%BC%88SMA%3A%20Simple%20Moving%20Average%EF%BC%89%0A%0A%20%20%20%20%E5%8D%98%E7%B4%94%E7%A7%BB%E5%8B%95%E5%B9%B3%E5%9D%87%E7%B7%9A%E3%81%AF%E3%80%81%E9%81%8E%E5%8E%BBn%E6%97%A5%E9%96%93%E3%81%AE%E7%B5%82%E5%80%A4%E3%82%92%E5%8D%98%E7%B4%94%E3%81%AB%E5%B9%B3%E5%9D%87%E3%81%97%E3%81%9F%E5%80%A4%E3%81%A7%E3%81%99%E3%80%82%0A%0A%20%20%20%20%24%24%0A%20%20%20%20SMA_n%20%3D%20%0C%20%20%20%20rac%7BP_1%20%2B%20P_2%20%2B%20...%20%2B%20P_n%7D%7Bn%7D%0A%20%20%20%20%24%24%0A%0A%20%20%20%20-%20%24P_i%24%3A%20i%E6%97%A5%E7%9B%AE%E3%81%AE%E7%B5%82%E5%80%A4%0A%20%20%20%20-%20%24n%24%3A%20%E6%9C%9F%E9%96%93%EF%BC%88%E6%97%A5%E6%95%B0%EF%BC%89%0A%0A%20%20%20%20%23%23%23%20%E3%81%93%E3%81%AE%E3%83%8E%E3%83%BC%E3%83%88%E3%81%A7%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E7%A7%BB%E5%8B%95%E5%B9%B3%E5%9D%87%E7%B7%9A%0A%0A%20%20%20%20%7C%20%E7%A7%BB%E5%8B%95%E5%B9%B3%E5%9D%87%E7%B7%9A%20%7C%20%E6%9C%9F%E9%96%93%20%7C%20%E7%94%A8%E9%80%94%20%7C%0A%20%20%20%20%7C-----------%7C------%7C------%7C%0A%20%20%20%20%7C%20**SMA5**%20%7C%205%E6%97%A5%20%7C%20%E7%9F%AD%E6%9C%9F%E3%83%88%E3%83%AC%E3%83%B3%E3%83%89%E3%81%AE%E6%8A%8A%E6%8F%A1%20%7C%0A%20%20%20%20%7C%20**SMA25**%20%7C%2025%E6%97%A5%20%7C%20%E4%B8%AD%E6%9C%9F%E3%83%88%E3%83%AC%E3%83%B3%E3%83%89%E3%81%AE%E6%8A%8A%E6%8F%A1%20%7C%0A%0A%20%20%20%20%23%23%23%20%E5%A3%B2%E8%B2%B7%E3%82%B7%E3%82%B0%E3%83%8A%E3%83%AB%0A%0A%20%20%20%20-%20**%E3%82%B4%E3%83%BC%E3%83%AB%E3%83%87%E3%83%B3%E3%82%AF%E3%83%AD%E3%82%B9**%3A%20%E7%9F%AD%E6%9C%9F%E7%B7%9A%EF%BC%88SMA5%EF%BC%89%E3%81%8C%E9%95%B7%E6%9C%9F%E7%B7%9A%EF%BC%88SMA25%EF%BC%89%E3%82%92%E4%B8%8B%E3%81%8B%E3%82%89%E4%B8%8A%E3%81%AB%E7%AA%81%E3%81%8D%E6%8A%9C%E3%81%91%E3%82%8B%20%E2%86%92%20**%E8%B2%B7%E3%81%84%E3%82%B7%E3%82%B0%E3%83%8A%E3%83%AB**%0A%20%20%20%20-%20**%E3%83%87%E3%83%83%E3%83%89%E3%82%AF%E3%83%AD%E3%82%B9**%3A%20%E7%9F%AD%E6%9C%9F%E7%B7%9A%EF%BC%88SMA5%EF%BC%89%E3%81%8C%E9%95%B7%E6%9C%9F%E7%B7%9A%EF%BC%88SMA25%EF%BC%89%E3%82%92%E4%B8%8A%E3%81%8B%E3%82%89%E4%B8%8B%E3%81%AB%E7%AA%81%E3%81%8D%E6%8A%9C%E3%81%91%E3%82%8B%20%E2%86%92%20**%E5%A3%B2%E3%82%8A%E3%82%B7%E3%82%B0%E3%83%8A%E3%83%AB**%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_(mo)%3A%0A%20%20%20%20mo.md(%22%22%22%0A%20%20%20%20%23%23%20%E6%A0%AA%E4%BE%A1%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E5%8F%96%E5%BE%97%0A%0A%20%20%20%20%60yfinance-pl%60%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6Yahoo%20Finance%E3%81%8B%E3%82%89%E9%81%8E%E5%8E%BB1%E5%B9%B4%E5%88%86%E3%81%AE%E6%A0%AA%E4%BE%A1%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E5%8F%96%E5%BE%97%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_(stock_code%2C%20yf)%3A%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%20hist%20%3D%20ticker.history(period%3D%221y%22)%0A%20%20%20%20hist%0A%20%20%20%20return%20hist%2C%20info%0A%0A%0A%40app.cell%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%22%22%22%0A%20%20%20%20%23%23%20%E7%A7%BB%E5%8B%95%E5%B9%B3%E5%9D%87%E7%B7%9A%E3%81%AE%E8%A8%88%E7%AE%97%0A%0A%20%20%20%20%60kand%60%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%AE%60sma()%60%E9%96%A2%E6%95%B0%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%80%815%E6%97%A5%E3%81%A825%E6%97%A5%E3%81%AE%E5%8D%98%E7%B4%94%E7%A7%BB%E5%8B%95%E5%B9%B3%E5%9D%87%E7%B7%9A%E3%82%92%E8%A8%88%E7%AE%97%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%0A%0A%20%20%20%20%60%60%60python%0A%20%20%20%20ma5%20%3D%20ka.sma(close%2C%20period%3D5)%20%20%20%23%205%E6%97%A5%E7%A7%BB%E5%8B%95%E5%B9%B3%E5%9D%87%0A%20%20%20%20ma25%20%3D%20ka.sma(close%2C%20period%3D25)%20%23%2025%E6%97%A5%E7%A7%BB%E5%8B%95%E5%B9%B3%E5%9D%87%0A%20%20%20%20%60%60%60%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(hist%2C%20ka%2C%20pl)%3A%0A%20%20%20%20close%20%3D%20hist%5B%22close.amount%22%5D.to_numpy().astype(%22float64%22)%0A%20%20%20%20hist_with_ma%20%3D%20hist.with_columns(%0A%20%20%20%20%20%20%20%20ma5%3Dpl.Series(ka.sma(close%2C%20period%3D5))%2C%0A%20%20%20%20%20%20%20%20ma25%3Dpl.Series(ka.sma(close%2C%20period%3D25))%2C%0A%20%20%20%20)%0A%20%20%20%20hist_with_ma%0A%20%20%20%20return%20(hist_with_ma%2C)%0A%0A%0A%40app.cell%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%22%22%22%0A%20%20%20%20%23%23%20%E3%83%81%E3%83%A3%E3%83%BC%E3%83%88%E3%81%AE%E5%8F%AF%E8%A6%96%E5%8C%96%0A%0A%20%20%20%20Plotly%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%83%AD%E3%83%BC%E3%82%BD%E3%82%AF%E8%B6%B3%E3%83%81%E3%83%A3%E3%83%BC%E3%83%88%E3%81%A8%E7%A7%BB%E5%8B%95%E5%B9%B3%E5%9D%87%E7%B7%9A%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-%20**%E3%83%AD%E3%83%BC%E3%82%BD%E3%82%AF%E8%B6%B3**%3A%20%E6%97%A5%E3%80%85%E3%81%AE%E5%A7%8B%E5%80%A4%E3%83%BB%E9%AB%98%E5%80%A4%E3%83%BB%E5%AE%89%E5%80%A4%E3%83%BB%E7%B5%82%E5%80%A4%E3%82%92%E8%A1%A8%E7%A4%BA%0A%20%20%20%20%20%20-%20%E8%B5%A4%3A%20%E9%99%BD%E7%B7%9A%EF%BC%88%E7%B5%82%E5%80%A4%20%3E%20%E5%A7%8B%E5%80%A4%EF%BC%89%0A%20%20%20%20%20%20-%20%E7%B7%91%3A%20%E9%99%B0%E7%B7%9A%EF%BC%88%E7%B5%82%E5%80%A4%20%3C%20%E5%A7%8B%E5%80%A4%EF%BC%89%0A%20%20%20%20-%20**%E9%9D%92%E7%B7%9A%EF%BC%88SMA5%EF%BC%89**%3A%205%E6%97%A5%E7%A7%BB%E5%8B%95%E5%B9%B3%E5%9D%87%E7%B7%9A%EF%BC%88%E7%9F%AD%E6%9C%9F%E3%83%88%E3%83%AC%E3%83%B3%E3%83%89%EF%BC%89%0A%20%20%20%20-%20**%E6%B0%B4%E8%89%B2%E7%B7%9A%EF%BC%88SMA25%EF%BC%89**%3A%2025%E6%97%A5%E7%A7%BB%E5%8B%95%E5%B9%B3%E5%9D%87%E7%B7%9A%EF%BC%88%E4%B8%AD%E6%9C%9F%E3%83%88%E3%83%AC%E3%83%B3%E3%83%89%EF%BC%89%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(go%2C%20hist_with_ma%2C%20info%2C%20pl%2C%20stock_code)%3A%0A%20%20%20%20company_name%20%3D%20info.get(%22shortName%22%2C%20stock_code.value)%0A%20%20%20%20ma_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%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%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%20%23%20Decimal%E3%82%92%E6%B5%AE%E5%8B%95%E5%B0%8F%E6%95%B0%E7%82%B9%E3%81%AB%E5%A4%89%E6%8F%9B%EF%BC%88Int64%E3%81%AF%E5%B0%8F%E6%95%B0%E7%82%B9%E4%BB%A5%E4%B8%8B%E3%82%92%E5%A4%B1%E3%81%86%EF%BC%89%0A%20%20%20%20df_plot%20%3D%20hist_with_ma.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%20dates%20%3D%20df_plot%5B%22date%22%5D.to_list()%0A%0A%20%20%20%20ma_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%3Ddates%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20open%3Ddf_plot%5B%22open.amount%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20high%3Ddf_plot%5B%22high.amount%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20low%3Ddf_plot%5B%22low.amount%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20close%3Ddf_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%7Bcompany_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%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%3Ddates%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3Ddf_plot%5B%22ma5%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20name%3D%22SMA5%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20line%3D%7B%22color%22%3A%20%22royalblue%22%2C%20%22width%22%3A%201.2%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%3Ddates%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3Ddf_plot%5B%22ma25%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20name%3D%22SMA25%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20line%3D%7B%22color%22%3A%20%22lightseagreen%22%2C%20%22width%22%3A%201.2%7D%2C%0A%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%5D%0A%0A%20%20%20%20ma_fig%20%3D%20go.Figure(data%3Dma_data%2C%20layout%3Dgo.Layout(ma_layout))%0A%0A%20%20%20%20%23%20%E6%9C%88%E3%81%94%E3%81%A8%E3%81%AB%E3%83%A9%E3%83%99%E3%83%AB%E3%82%92%E8%A1%A8%E7%A4%BA%EF%BC%88%E5%90%84%E6%9C%88%E3%81%AE%E6%9C%80%E5%88%9D%E3%81%AE%E5%8F%96%E5%BC%95%E6%97%A5%EF%BC%89%0A%20%20%20%20month_indices%20%3D%20%5B%5D%0A%20%20%20%20month_labels%20%3D%20%5B%5D%0A%20%20%20%20prev_month%20%3D%20None%0A%20%20%20%20for%20i%2C%20d%20in%20enumerate(dates)%3A%0A%20%20%20%20%20%20%20%20if%20prev_month%20!%3D%20d.month%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20month_indices.append(dates%5Bi%5D)%0A%20%20%20%20%20%20%20%20%20%20%20%20month_labels.append(d.strftime(%22%25Y-%25m%22))%0A%20%20%20%20%20%20%20%20%20%20%20%20prev_month%20%3D%20d.month%0A%0A%20%20%20%20ma_fig.update_layout(%0A%20%20%20%20%20%20%20%20%7B%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%22showgrid%22%3A%20False%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22tickmode%22%3A%20%22array%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22tickvals%22%3A%20month_indices%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22ticktext%22%3A%20month_labels%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22tickangle%22%3A%20-45%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20)%0A%20%20%20%20ma_fig%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%22%22%22%0A%20%20%20%20%23%23%20%E3%82%B4%E3%83%BC%E3%83%AB%E3%83%87%E3%83%B3%E3%82%AF%E3%83%AD%E3%82%B9%E3%83%BB%E3%83%87%E3%83%83%E3%83%89%E3%82%AF%E3%83%AD%E3%82%B9%E3%81%AE%E6%A4%9C%E5%87%BA%0A%0A%20%20%20%20%E7%A7%BB%E5%8B%95%E5%B9%B3%E5%9D%87%E7%B7%9A%E3%81%AE%E3%82%AF%E3%83%AD%E3%82%B9%E3%82%92%E6%A4%9C%E5%87%BA%E3%81%97%E3%81%A6%E5%A3%B2%E8%B2%B7%E3%82%B7%E3%82%B0%E3%83%8A%E3%83%AB%E3%82%92%E7%89%B9%E5%AE%9A%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%0A%0A%20%20%20%20%23%23%23%20%E6%A4%9C%E5%87%BA%E3%83%AD%E3%82%B8%E3%83%83%E3%82%AF%0A%0A%20%20%20%20%60%60%60python%0A%20%20%20%20%23%20%E5%89%8D%E6%97%A5%E3%81%A8%E5%BD%93%E6%97%A5%E3%81%AESMA5%E3%81%A8SMA25%E3%81%AE%E5%B7%AE%E5%88%86%E3%82%92%E8%A8%88%E7%AE%97%0A%20%20%20%20diff%20%3D%20SMA5%20-%20SMA25%0A%20%20%20%20prev_diff%20%3D%20diff.shift(1)%0A%0A%20%20%20%20%23%20%E3%82%B4%E3%83%BC%E3%83%AB%E3%83%87%E3%83%B3%E3%82%AF%E3%83%AD%E3%82%B9%3A%20%E5%89%8D%E6%97%A5%E3%81%AF%20SMA5%20%3C%20SMA25%E3%80%81%E5%BD%93%E6%97%A5%E3%81%AF%20SMA5%20%3E%20SMA25%0A%20%20%20%20golden_cross%20%3D%20(prev_diff%20%3C%200)%20%26%20(diff%20%3E%200)%0A%0A%20%20%20%20%23%20%E3%83%87%E3%83%83%E3%83%89%E3%82%AF%E3%83%AD%E3%82%B9%3A%20%E5%89%8D%E6%97%A5%E3%81%AF%20SMA5%20%3E%20SMA25%E3%80%81%E5%BD%93%E6%97%A5%E3%81%AF%20SMA5%20%3C%20SMA25%0A%20%20%20%20dead_cross%20%3D%20(prev_diff%20%3E%200)%20%26%20(diff%20%3C%200)%0A%20%20%20%20%60%60%60%0A%0A%20%20%20%20%23%23%23%20%E3%82%B7%E3%82%B0%E3%83%8A%E3%83%AB%E3%81%AE%E8%A7%A3%E9%87%88%0A%0A%20%20%20%20%7C%20%E3%82%B7%E3%82%B0%E3%83%8A%E3%83%AB%20%7C%20%E6%84%8F%E5%91%B3%20%7C%20%E6%8E%A8%E5%A5%A8%E3%82%A2%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%20%7C%0A%20%20%20%20%7C---------%7C------%7C---------------%7C%0A%20%20%20%20%7C%20%E3%82%B4%E3%83%BC%E3%83%AB%E3%83%87%E3%83%B3%E3%82%AF%E3%83%AD%E3%82%B9%20%7C%20%E4%B8%8A%E6%98%87%E3%83%88%E3%83%AC%E3%83%B3%E3%83%89%E3%81%B8%E3%81%AE%E8%BB%A2%E6%8F%9B%20%7C%20%E8%B2%B7%E3%81%84%E6%A4%9C%E8%A8%8E%20%7C%0A%20%20%20%20%7C%20%E3%83%87%E3%83%83%E3%83%89%E3%82%AF%E3%83%AD%E3%82%B9%20%7C%20%E4%B8%8B%E9%99%8D%E3%83%88%E3%83%AC%E3%83%B3%E3%83%89%E3%81%B8%E3%81%AE%E8%BB%A2%E6%8F%9B%20%7C%20%E5%A3%B2%E3%82%8A%E6%A4%9C%E8%A8%8E%20%7C%0A%0A%20%20%20%20%3E%20**%E6%B3%A8%E6%84%8F**%3A%20%E3%82%AF%E3%83%AD%E3%82%B9%E3%82%B7%E3%82%B0%E3%83%8A%E3%83%AB%E3%81%AF%E9%81%85%E8%A1%8C%E6%8C%87%E6%A8%99%E3%81%A7%E3%81%99%E3%80%82%E5%AE%9F%E9%9A%9B%E3%81%AE%E5%A3%B2%E8%B2%B7%E5%88%A4%E6%96%AD%E3%81%AB%E3%81%AF%E4%BB%96%E3%81%AE%E6%8C%87%E6%A8%99%E3%81%A8%E3%81%AE%E7%B5%84%E3%81%BF%E5%90%88%E3%82%8F%E3%81%9B%E3%81%8C%E6%8E%A8%E5%A5%A8%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_(hist_with_ma%2C%20pl)%3A%0A%20%20%20%20%23%20SMA5%E3%81%A8SMA25%E3%81%AE%E5%B7%AE%E5%88%86%E3%82%92%E8%A8%88%E7%AE%97%0A%20%20%20%20df_cross%20%3D%20(%0A%20%20%20%20%20%20%20%20hist_with_ma.with_columns(%0A%20%20%20%20%20%20%20%20%20%20%20%20diff%3D(pl.col(%22ma5%22)%20-%20pl.col(%22ma25%22))%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20.with_columns(%0A%20%20%20%20%20%20%20%20%20%20%20%20prev_diff%3Dpl.col(%22diff%22).shift(1)%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20.with_columns(%0A%20%20%20%20%20%20%20%20%20%20%20%20%23%20%E3%82%B4%E3%83%BC%E3%83%AB%E3%83%87%E3%83%B3%E3%82%AF%E3%83%AD%E3%82%B9%3A%20%E5%89%8D%E6%97%A5%E3%81%AF%E8%B2%A0%EF%BC%88SMA5%20%3C%20SMA25%EF%BC%89%E3%80%81%E5%BD%93%E6%97%A5%E3%81%AF%E6%AD%A3%EF%BC%88SMA5%20%3E%20SMA25%EF%BC%89%0A%20%20%20%20%20%20%20%20%20%20%20%20golden_cross%3D(pl.col(%22prev_diff%22)%20%3C%200)%20%26%20(pl.col(%22diff%22)%20%3E%200)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%23%20%E3%83%87%E3%83%83%E3%83%89%E3%82%AF%E3%83%AD%E3%82%B9%3A%20%E5%89%8D%E6%97%A5%E3%81%AF%E6%AD%A3%EF%BC%88SMA5%20%3E%20SMA25%EF%BC%89%E3%80%81%E5%BD%93%E6%97%A5%E3%81%AF%E8%B2%A0%EF%BC%88SMA5%20%3C%20SMA25%EF%BC%89%0A%20%20%20%20%20%20%20%20%20%20%20%20dead_cross%3D(pl.col(%22prev_diff%22)%20%3E%200)%20%26%20(pl.col(%22diff%22)%20%3C%200)%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20)%0A%0A%20%20%20%20%23%20%E3%82%B4%E3%83%BC%E3%83%AB%E3%83%87%E3%83%B3%E3%82%AF%E3%83%AD%E3%82%B9%E3%81%AE%E6%97%A5%E4%BB%98%E3%82%92%E6%8A%BD%E5%87%BA%0A%20%20%20%20golden_crosses%20%3D%20df_cross.filter(pl.col(%22golden_cross%22)).select(%0A%20%20%20%20%20%20%20%20pl.col(%22date%22)%2C%0A%20%20%20%20%20%20%20%20pl.col(%22close.amount%22).alias(%22price%22)%2C%0A%20%20%20%20%20%20%20%20pl.lit(%22%E3%82%B4%E3%83%BC%E3%83%AB%E3%83%87%E3%83%B3%E3%82%AF%E3%83%AD%E3%82%B9%22).alias(%22signal%22)%2C%0A%20%20%20%20)%0A%0A%20%20%20%20%23%20%E3%83%87%E3%83%83%E3%83%89%E3%82%AF%E3%83%AD%E3%82%B9%E3%81%AE%E6%97%A5%E4%BB%98%E3%82%92%E6%8A%BD%E5%87%BA%0A%20%20%20%20dead_crosses%20%3D%20df_cross.filter(pl.col(%22dead_cross%22)).select(%0A%20%20%20%20%20%20%20%20pl.col(%22date%22)%2C%0A%20%20%20%20%20%20%20%20pl.col(%22close.amount%22).alias(%22price%22)%2C%0A%20%20%20%20%20%20%20%20pl.lit(%22%E3%83%87%E3%83%83%E3%83%89%E3%82%AF%E3%83%AD%E3%82%B9%22).alias(%22signal%22)%2C%0A%20%20%20%20)%0A%0A%20%20%20%20%23%20%E3%82%B7%E3%82%B0%E3%83%8A%E3%83%AB%E3%82%92%E7%B5%B1%E5%90%88%E3%81%97%E3%81%A6%E6%97%A5%E4%BB%98%E9%A0%86%E3%81%AB%E3%82%BD%E3%83%BC%E3%83%88%0A%20%20%20%20signals%20%3D%20pl.concat(%5Bgolden_crosses%2C%20dead_crosses%5D).sort(%22date%22)%0A%20%20%20%20return%20(signals%2C)%0A%0A%0A%40app.cell%0Adef%20_(mo%2C%20pl%2C%20signals)%3A%0A%20%20%20%20n_golden%20%3D%20signals.filter(pl.col(%22signal%22)%20%3D%3D%20%22%E3%82%B4%E3%83%BC%E3%83%AB%E3%83%87%E3%83%B3%E3%82%AF%E3%83%AD%E3%82%B9%22).height%0A%20%20%20%20n_dead%20%3D%20signals.filter(pl.col(%22signal%22)%20%3D%3D%20%22%E3%83%87%E3%83%83%E3%83%89%E3%82%AF%E3%83%AD%E3%82%B9%22).height%0A%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%23%20%E6%A4%9C%E5%87%BA%E7%B5%90%E6%9E%9C%0A%0A%20%20%20%20%20%20%20%20-%20**%E3%82%B4%E3%83%BC%E3%83%AB%E3%83%87%E3%83%B3%E3%82%AF%E3%83%AD%E3%82%B9**%3A%20%7Bn_golden%7D%E5%9B%9E%0A%20%20%20%20%20%20%20%20-%20**%E3%83%87%E3%83%83%E3%83%89%E3%82%AF%E3%83%AD%E3%82%B9**%3A%20%7Bn_dead%7D%E5%9B%9E%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(signals)%3A%0A%20%20%20%20signals%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%22%22%22%0A%20%20%20%20%23%23%20%E3%82%B7%E3%82%B0%E3%83%8A%E3%83%AB%E4%BB%98%E3%81%8D%E3%83%81%E3%83%A3%E3%83%BC%E3%83%88%0A%0A%20%20%20%20%E3%82%B4%E3%83%BC%E3%83%AB%E3%83%87%E3%83%B3%E3%82%AF%E3%83%AD%E3%82%B9%E3%83%BB%E3%83%87%E3%83%83%E3%83%89%E3%82%AF%E3%83%AD%E3%82%B9%E3%82%92%E3%83%81%E3%83%A3%E3%83%BC%E3%83%88%E4%B8%8A%E3%81%AB%E3%83%9E%E3%83%BC%E3%82%AB%E3%83%BC%E3%81%A7%E8%A1%A8%E7%A4%BA%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%0A%0A%20%20%20%20-%20**%E2%96%B2%20%E7%B7%91%E3%83%9E%E3%83%BC%E3%82%AB%E3%83%BC**%3A%20%E3%82%B4%E3%83%BC%E3%83%AB%E3%83%87%E3%83%B3%E3%82%AF%E3%83%AD%E3%82%B9%EF%BC%88%E8%B2%B7%E3%81%84%E3%82%B7%E3%82%B0%E3%83%8A%E3%83%AB%EF%BC%89%0A%20%20%20%20-%20**%E2%96%BC%20%E8%B5%A4%E3%83%9E%E3%83%BC%E3%82%AB%E3%83%BC**%3A%20%E3%83%87%E3%83%83%E3%83%89%E3%82%AF%E3%83%AD%E3%82%B9%EF%BC%88%E5%A3%B2%E3%82%8A%E3%82%B7%E3%82%B0%E3%83%8A%E3%83%AB%EF%BC%89%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(go%2C%20hist_with_ma%2C%20info%2C%20pl%2C%20signals%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%20Decimal%E3%82%92%E6%B5%AE%E5%8B%95%E5%B0%8F%E6%95%B0%E7%82%B9%E3%81%AB%E5%A4%89%E6%8F%9B%0A%20%20%20%20_df_plot%20%3D%20hist_with_ma.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%20%3D%20_df_plot%5B%22date%22%5D.to_list()%0A%0A%20%20%20%20%23%20%E3%82%B4%E3%83%BC%E3%83%AB%E3%83%87%E3%83%B3%E3%82%AF%E3%83%AD%E3%82%B9%E3%81%A8%E3%83%87%E3%83%83%E3%83%89%E3%82%AF%E3%83%AD%E3%82%B9%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E5%88%86%E9%9B%A2%0A%20%20%20%20_golden%20%3D%20signals.filter(pl.col(%22signal%22)%20%3D%3D%20%22%E3%82%B4%E3%83%BC%E3%83%AB%E3%83%87%E3%83%B3%E3%82%AF%E3%83%AD%E3%82%B9%22)%0A%20%20%20%20_dead%20%3D%20signals.filter(pl.col(%22signal%22)%20%3D%3D%20%22%E3%83%87%E3%83%83%E3%83%89%E3%82%AF%E3%83%AD%E3%82%B9%22)%0A%0A%20%20%20%20_signal_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%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20open%3D_df_plot%5B%22open.amount%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20high%3D_df_plot%5B%22high.amount%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20low%3D_df_plot%5B%22low.amount%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20close%3D_df_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%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%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3D_df_plot%5B%22ma5%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20name%3D%22SMA5%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20line%3D%7B%22color%22%3A%20%22royalblue%22%2C%20%22width%22%3A%201.2%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%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3D_df_plot%5B%22ma25%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20name%3D%22SMA25%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20line%3D%7B%22color%22%3A%20%22lightseagreen%22%2C%20%22width%22%3A%201.2%7D%2C%0A%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%23%20%E3%82%B4%E3%83%BC%E3%83%AB%E3%83%87%E3%83%B3%E3%82%AF%E3%83%AD%E3%82%B9%E3%81%AE%E3%83%9E%E3%83%BC%E3%82%AB%E3%83%BC%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_golden%5B%22date%22%5D.to_list()%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3D_golden%5B%22price%22%5D.cast(pl.Float64).to_list()%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20mode%3D%22markers%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20name%3D%22%E3%82%B4%E3%83%BC%E3%83%AB%E3%83%87%E3%83%B3%E3%82%AF%E3%83%AD%E3%82%B9%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20marker%3D%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22symbol%22%3A%20%22triangle-up%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22size%22%3A%2015%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22color%22%3A%20%22lime%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22line%22%3A%20%7B%22color%22%3A%20%22darkgreen%22%2C%20%22width%22%3A%202%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)%2C%0A%20%20%20%20%20%20%20%20%23%20%E3%83%87%E3%83%83%E3%83%89%E3%82%AF%E3%83%AD%E3%82%B9%E3%81%AE%E3%83%9E%E3%83%BC%E3%82%AB%E3%83%BC%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_dead%5B%22date%22%5D.to_list()%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3D_dead%5B%22price%22%5D.cast(pl.Float64).to_list()%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20mode%3D%22markers%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20name%3D%22%E3%83%87%E3%83%83%E3%83%89%E3%82%AF%E3%83%AD%E3%82%B9%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20marker%3D%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22symbol%22%3A%20%22triangle-down%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22size%22%3A%2015%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22color%22%3A%20%22red%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22line%22%3A%20%7B%22color%22%3A%20%22darkred%22%2C%20%22width%22%3A%202%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)%2C%0A%20%20%20%20%5D%0A%0A%20%20%20%20_signal_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%82%B7%E3%82%B0%E3%83%8A%E3%83%AB%E4%BB%98%E3%81%8D%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%20signal_fig%20%3D%20go.Figure(data%3D_signal_data%2C%20layout%3Dgo.Layout(_signal_layout))%0A%0A%20%20%20%20%23%20%E6%9C%88%E3%81%94%E3%81%A8%E3%81%AB%E3%83%A9%E3%83%99%E3%83%AB%E3%82%92%E8%A1%A8%E7%A4%BA%0A%20%20%20%20_month_indices%20%3D%20%5B%5D%0A%20%20%20%20_month_labels%20%3D%20%5B%5D%0A%20%20%20%20_prev_month%20%3D%20None%0A%20%20%20%20for%20_i%2C%20_d%20in%20enumerate(_dates)%3A%0A%20%20%20%20%20%20%20%20if%20_prev_month%20!%3D%20_d.month%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20_month_indices.append(_dates%5B_i%5D)%0A%20%20%20%20%20%20%20%20%20%20%20%20_month_labels.append(_d.strftime(%22%25Y-%25m%22))%0A%20%20%20%20%20%20%20%20%20%20%20%20_prev_month%20%3D%20_d.month%0A%0A%20%20%20%20signal_fig.update_layout(%0A%20%20%20%20%20%20%20%20%7B%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%22showgrid%22%3A%20False%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22tickmode%22%3A%20%22array%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22tickvals%22%3A%20_month_indices%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22ticktext%22%3A%20_month_labels%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22tickangle%22%3A%20-45%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20)%0A%20%20%20%20signal_fig%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
997c3ceb92431a58bad8eb15df014b54