Python 株式投資

Pythonで移動平均線の押し目・上放れ・下放れを自動検出する方法

2022年9月17日

【Pythonで株式投資】移動平均線からの上放れを自動検出する方法【コード解説】

こんにちは。TATです。

今日のテーマは「Pythonで移動平均線の押し目・上放れ・下放れを自動検出する方法」です。

 

移動平均線の押し目、上放れ、下放れしたタイミングをプログラムで自動検出する方法について解説します。

コードも全て公開するのでご自由にパクりつつ、適宜改善しながらお使いください。

 

特に上昇トレンドの中では、押し目や上放れはエントリーチャンスになります。

ここをプログラムで自動検出することができれば自動売買も不可能ではありません。

 

株価データの準備

まずは、今回使用する株価データの準備です。

 

pandas_datareaderで株価データを取得

ここではpandas_datareaderを使ってサクッと取得します。

 

例として、銘柄はトヨタ自動車(証券コード:7203)を使っていきます。

期間は適当に2020年1月1日〜2021年12月31日とします。

 

これで日足の株価データが取得できます。

 

株価データの取得方法については、過去記事でも詳しく解説しているので気になる方はご参考ください。

参考記事
【日本株対応】Pythonで株価データを取得する方法まとめ

続きを見る

 

rolling関数で移動平均線を計算

次に移動平均線を計算します。

pandasのrolling関数を使えば1行で完了します。

 

ここでは25日移動平均線を使用していきます。

 

windowに任意の期間を指定すればOKです。

これで25日移動平均線が計算できました。

参考記事
【コード解説】Pythonで株価データから主要なテクニカル分析を計算して可視化する【移動平均線、MACD、RSI】

続きを見る

 

移動平均線の押し目・上放れ・下放れを自動検出する

データの準備が整ったところで、ここからが本題です。

移動平均線の押し目・上放れ・下放れを自動検出していきます。

 

いろいろな方法があると思いますが、僕がパッと思いついたのはこんな感じです。

上放れの検出方法

  1. 移動平均線と株価の位置関係を判定する
    • 安値>移動平均線 → 1と返す: 株価は移動平均線よりも上に位置する
    • 高値<移動平均線 → -1と返す: 株価は移動平均線よりも下に位置する
    • それ以外 → 0と返す:直近ローソク足は移動平均線に接触している
  2. 1日前のデータと比較する
    • 1日前が1で当日が0 → 押し目
    • 1日前が0で当日が1 → 上放れ
    • 1日前が0で当日が-1 → 下放れ

 

他にもいろいろやり方があると思います。

もっとエレガントはやり方もあると思うのでいい方法あれば教えてくださいw

 

とりあえず本記事では僕がパッと思いついた上記の方法をpythonで実装していきます。

 

1. 移動平均線と株価の位置関係を判定する

まずは移動平均線と株価の位置関係を判定します。

ローソク足が移動平均線よりも上にいるのか、下にいるのか、接触しているのか、を判断します。

 

これをするために、price_positionという関数を定義してapply関数で実装しました。

 

これで完了です。

Positionというカラムを追加して、株価の位置関係を示す情報を加えました。

 

2. 1日前のデータと比較する

次に先ほど計算したPositionカラムを1日前のデータと比較します。

 

shift関数で1日前のデータを追加する

これもapply関数で一気にやってしまった方が処理が早いので、そのために1日前のデータを新しいカラムとして加えます。

これにはshift関数を使います。

 

d1というカラムを定義して、そこに1日前のデータを格納しました。

これで準備OKです。

 

(例)上放れを判定してみる

必要なカラムが揃ったので、例としてここから上放れを判定してみます。

少し関数をいじれば押し目や下放れも判定可能です。

 

1日前のデータ(d1)と当日のデータ(Position)を比較して、d1が0でPositionが1なら上放れと判定します。

そのほかはいったん無視します。

 

上放れ判定用の関数(check_up_gap)を定義して、apply関数で一気に判定します。

上放れと判定した場合には、高値を返します。その他はNoneと返します。

これはのちに可視化するときに便利だからです。

 

 

これでOKです。

データを見ると2021年12月24日に上放れが発生していることが確認できます。

d1が0、Positionが1になってるのできちんと判定が機能していることが確認できます。

 

少しいじれば押し目や下放れの判定も可能です

押し目や下放れの判定も、先ほどの関数を少しいじれば対応できます。

 

d1が1でPositionが0なら押し目になります。

d1が0でPositionが-1なら下放れになります。

 

必要に応じて自由に改造してみてください。

 

チャートで可視化してみる

最後に、チャートで可視化してみます。

 

Plotlyで株価データを可視化

可視化用のライブラリはいろいろありますが、ここではPlotlyを使います。

Plotlyを使えばインタラクティブ(Hoverするとデータが表示されたりします)なチャートが描けるので便利です。

 

まずは普通にローソク足チャートを描いてみます。

今回使用する25日移動平均線も合わせて表示します。

ついでに出来高も加えます。

 

綺麗にローソク足チャートが描けました。

コードは結構長いですが、一度書いてしまえばあとは必要に応じて使いまわせるので楽ちんです。

 

(例)上放れを追加する

ここでは、例としてローソク足チャートに上放れを追加していきます。

黄色い▼で示してみます。

 

 

これで上放れをチャート上で可視化することができました。

 

エントリーポイントとして機能するのか?

パッとみた感じ、エントリーポイントとしてはうまくいく場合とそうでない場合がありますね。

下落局面ではだまし上げみたいなパターンも結構あるので、ここでエントリーすると事故りますw

 

押し目と上放れは上昇局面で使うと良さそう

一方で、押し目と上放れは上昇局面で利用するとそこそこ機能しそうです。

移動平均線の最適な期間は要検討ですが、いずれの場合においても、上昇局面で使用することがとても大事になってきます。

 

上昇局面を判定する方法〜ミネルヴィニのトレンドテンプレート〜

上昇局面にいるかどうかを判定するにはいろいろありますが、僕の場合はトレンドテンプレートをよく使います。

トレンドテンプレートは、成長株投資で有名なミネルヴィニが考案した手法で、株価が上昇局面にいるかどうかを判定することができます。

参考記事
【成長株投資】ミネルヴィニのトレンドテンプレートを日本株に適用する
【成長株投資】ミネルヴィニのトレンドテンプレートを日本株に適用する

続きを見る

 

僕が運営している「投資でニート生活」では、このトレンドテンプレートを適用して銘柄を抽出しています。

 

さらに業績や売買シグナルなどを組み合わせてスクリーニングした銘柄はnoteで発信しています。

もしご興味あればご覧ください。

 

まとめ

本記事では「【Pythonで株式投資】移動平均線の押し目・上放れ・下放れを自動検出する方法【コード解説】」というテーマでお話してきました。

 

Pythonを使えば、自動売買も不可能ではありません。

ここで紹介した移動平均線の押し目・上放れ・下放れも、条件によってはエントリーポイントとして有効です。

特に押し目や上放れは上昇局面で活用すれば比較的うまく機能すると思います。

 

一方で、最適な移動平均線の期間とか、どうやって上昇局面にいることを判定するのか、追加で考慮すべきポイントはたくさんあります。

ぜひ、本記事で紹介したコードをいじりながらいろいろ試してみてください。

 

ここまで読んでくださり、ありがとうございました。

 

「Python」×「株式投資」

Pythonで株式データを扱う記事はこちらでまとめています。

収集・管理しているデータの販売もしています。

Pythonで株価データを扱う方法まとめ【データの取得・分析・可視化等、なんでもできます】

オニールとミネルヴィニの投資手法を日本株に適用するために必要なデータを販売します!


 

Pythonの独学ロードマップを作りました!

社会人になってからPythonを独学した経験を活かして、独学ロードマップを作りました。

これからPythonを学ぼうとしている方、学習中の方の参考になれば嬉しいです。

【決定版】Python独学ロードマップ【完全初心者からでもOKです】
【決定版】Python独学ロードマップ【完全初心者OK】

続きを見る

 

おすすめのPython学習法!

Udemy

Pythonを独学するならUdemyがおすすめです。

動画教材なので理解がしやすく、セールで購入すれば90%オフとかで買えるのでコスパも最強です。

おすすめポイント

  • 動画教材で理解しやすい
  • セール中なら90%オフとかで購入可能
  • プログラミングスクールよりも格安で良質なコンテンツが手に入る
  • 30日間の返金保証
  • 講師に質問できる&過去の質問を閲覧できる

\30日返金保証/

Udemyを詳しく見る

セール中なら90%オフとかで購入可能です!

プログラミングの独学にUdemyをおすすめする理由!

続きを見る

 

CodeCamp(コードキャンプ)

プログラミングスクールならCodeCamp(コードキャンプ)がおすすめです。

オンラインでマンツーマンレッスンが受けられるので挫折なく学習を進めることができます。

分割払いで月額6,600円から通うことも可能です。

おすすめポイント

  • オンラインによるマンツーマンレッスンで挫折しない
  • 分割払いで月額6,600円から始められる
  • 講師は通過率8%の厳しい選考を通過した現役エンジニアのみ
  • 大手IT企業のエンジニア育成研修で使用されたカリキュラムをベースに開発
  • 無料カウンセリングを受講すると受講料が1万円引きになる

\マンツーマンレッスンで学べる/

CodeCampを詳しく見る!

無料体験レッスンを受けたら受講料が1万円引きに

 

データミックス(datamix)

Pythonによるデータ分析に興味のある方は、データミックス(datamix)がおすすめです。

プログラミングだけではなく、データサイエンスやビジネスに関するノウハウも合わせて学ぶことができます。

おすすめポイント

  • データサイエンティストが開発・監修した体系的かつ実践的に学べるカリキュラム
  • Pythonなどの「スキル」のみでなく、データサイエンスの本質である「理論」や「思考」が学べる
  • エンジニアに限らず、多様なキャリアを形成・構築できる
  • オンラインチャットツールによる質問対応やコミュニティなどの充実したフォロー体制
  • 専門実践教育訓練給付金の対象講座で授業料の最大70%還付

\データサイエンスとビジネスが学べる/

データミックス(datamix)を詳しく見る!

エンジニア転職だけでなく起業やフリーランスなど多様なキャリア形成・構築に繋がる

データミックス(datamix)の特徴や評判は?【データサイエンスとビジネスが学べる】

続きを見る

-Python, 株式投資
-, , , ,

© 2022 気ままなブログ