Python

個別銘柄毎の重要なテクニカル指標がわからない|株マップからスクレイピングし把握する方法

Python

はじめに

株式投資で個別銘柄のテクニカル分析をするとき、どのテクニカル指標を分析していいかわからないということはありませんか?

実は、中級者くらいの方でも、銘柄毎にパフォーマンスが高い指標が異なるので、判断に困ります。

そこで、初心者の方でもできる分析方法として、株マップが算出している個別銘柄毎のパフォーマンスの高いテクニカル指標をWebスクレイピングで抽出するプログラムを紹介します。

この記事で解決する悩み

  • 個別銘柄分析をするとき重点的に確認すべきテクニカル指標を選定する方法がわからない

このように、平均パフォーマンス&勝率の高いテクニカル指標をスクレイピングします。

スクレイピングとは?

スクレピングとはWebから、情報を抽出することを言います。

詳細は、以下のページを参考にしてみてください。

株マップ

株マップ.com

株マップが、スクレイピングしていいサイトかどうかを確認します。

確認結果、特に規制はされていなそうです。(2021/1月21日時点)

User-Agent: *
Disallow:
User-Agent: Slurp
Crawl-delay: 1
User-Agent: bingbot
Crawl-delay: 30
User-Agent: MJ12bot
Crawl-delay: 20
User-Agent: SemrushBot
Crawl-delay: 30

https://jp.kabumap.com/robots.txt

スクレイピングするURL

以下三つのサイトからスクレイピングします。

9433 KDDI テクニカル分析 < 銘柄分析 | 株マップ.com
9433 KDDIの銘柄分析 テクニカル分析。各テクニカル指標のシグナルに従って売買した場合の、過去2年間のパフォーマンスを示しています。
9433 KDDI テクニカル分析 < 銘柄分析 | 株マップ.com
9433 KDDIの銘柄分析 テクニカル分析。各テクニカル指標のシグナルに従って売買した場合の、過去2年間のパフォーマンスを示しています。
9433 KDDI テクニカル分析 < 銘柄分析 | 株マップ.com
9433 KDDIの銘柄分析 テクニカル分析。各テクニカル指標のシグナルに従って売買した場合の、過去2年間のパフォーマンスを示しています。

というのも、以下の表をスクレイピングしてこようと考えているためです。

しかし、この表は、以下三つに分かれているため、それぞれのURLからスクレイピングすることとなります。

  • 通算パフォーマンス
  • 平均パフォーマンス
  • 最高/最低パフォーマンス

開発環境

Project Jupyter - Wikipedia

今回の記事は、Jupyter Notebookで行います。インストール方法や立ち上げ方がわからない方は、こちらの記事を参考ください。

株マップからスクレイピングするコード

スクレイピング

code = str(9433)の中の数字を自分が知りたい銘柄のコードに変更してください。

今回は、9433 = KDDIで仮に、コーディングしてみます。

#最適なテクニカル指標を株マップから取得
import pandas as pd
import seaborn as sns

code = str(9433)

technical = pd.DataFrame()
url_1 = 'https://jp.kabumap.com/servlets/kabumap/Action?SRC=techBunseki/base&codetext='
url_2 = '&PERF_MODE='
url = url_1 + code + url_2
mode_num = ["0","1","2"]
files = []
for i in mode_num:
    technical = pd.read_html(url+i)
    technical_trend = technical[10]
    technical_overheated = technical[11]
    technical = technical[13]
    files.append(technical)

スクレイピングには、以下を使用します。

  • pd.read_html()

pandasの機能の一つで、所定のURLからテーブルデータを抽出する関数です。非常に使えます。

可視化

seabornで、セルに色をつけます。

cm = sns.light_palette("#2ecc71", as_cmap=True)

それぞれ可視化していきます。

#通算パフォーマンス
print("#通算パフォーマンス")
files[0].style.background_gradient(cmap=cm)
#平均パフォーマンス&勝率 
print("#平均パフォーマンス&勝率 ")
files[1].style.background_gradient(cmap=cm)
#最高最低パフォーマンス
print("#最高最低パフォーマンス ")
files[2].style.background_gradient(cmap=cm)
technical_trend
technical_overheated

綺麗に抽出できました。

分析

  • 平均パフォーマンスから、75日乖離率をシグナルにトレードしようかなと見立てを立てることができます
  • RSIやストキャスティックを使った買いのトレードも良さそう
  • 今は、過熱感は、そこまでなく上昇トレンドにあるということがわかります

こんな風に、プロでない初心者の方でも、どのテクニカル指標を使えばいいかが一発でわかります。

また、Jupyter Notebookで記録を残すことで、自分が何を指標にトレードの判断をしたのかを残しておくことができます。

これがスクレイピングをするもっとも重要な理由です。

まとめ

個別銘柄毎の重要なテクニカル指標がわからないという方向けに、株マップからスクレイピングする方法を解説しました。

スクレイピングには、以下の方法を使うと短い分量で、テーブルデータを抽出できます。

  • pd.read_html()

もっとスクレイピングを勉強してみたいという方は、こちらの記事も参考にしてみてください。

スクレイピングに関する記事は、この他にもありますので、ぜひチェックしてみてください。

今回の記事は、以上です。

最後までお読み頂きありがとうございました。

コメント

タイトルとURLをコピーしました