ローソク足分析手法「酒田五法」をPythonで実装する方法

使っているFX会社はどこ?
自動売買用(1万円キャッシュバック中) → インヴァスト証券
Python API用(FX APIはここしかない) → OANDA ジャパン

 

Pythonを使って実装するローソク足パターン分析の第二弾!今回は酒田五法の「三兵」をPythonを使って為替レートから検出する方法をまとめました。(Pythonローソク足分析第一弾の続編です)

こんばんは、新米データサイエンティスト(@algon_fx)です。相変わらず本業は鬼のように忙しいですが、毎日がやりがいのある仕事で本当に充実しています(別の意味のリア充ですw)。

先日に「ローソク足のパターン分析をPythonを使ってやってみる(初歩編)」という記事を公開したのですが、嬉しいことにTwitterのフォロワーさんからの反応が良かったです。

そこで、本日のネタは「Pythonでローソク足分析 酒田五法」です!

前回は初歩編としてPythonでテクニカル指標が簡単に算出できるTa-libのライブラリのローソク足分析を使いました。Ta-libですが、非常に便利なツールではありますが柔軟にカスタマイズが出来ない点、また計算が所々怪しい点などデメリットもあります。

そこで今回はPythonのみを使ってローソク足を分析する方法です。具体的には「酒田五法」と呼ばれるローソク足分析手法をPythonを使って行う方法をまとめました。

Pythonのちょっとした知識があれば、どなたでも実装が可能です!また本記事はGoogle Colabを使う前提で書かれています。pythonやライブラリの環境構築は不要です。お手持ちのPCとブラウザのみで本記事の全てが実装可能です!(参考:知らないと損をするGoogle Colabの隠し技と基本操作

ぜひ、プログラミング初心者の方も挑戦してみてください!

ローソク足分析の定番「酒田五法」とは

時代は遡り徳川8代目将軍吉宗の時代、本間宗久という基台の米相場師がおったそうな。え?なに?昔話?って思うかもしれませんが、これガチリアルです。

多くのFXや株の書籍にも載っていますが、ローソク足を開発したのもこの天才相場師の本間氏と言われています。そうなんです、ローソク足の起源はなんと日本なんです!

この天才相場師がローソク足と共に己の相場読みルールと経験を予測法として気づいたのが「酒田五法」です。酒田とは本間氏の出身、山形県の酒田から来ています。なんか感動する話ですよね。

酒田五法ですが、日本のみならず世界中で使われています。五法とあるようにローソク足の分析を「三山」「三川」「三空」「三兵」「三法」と名付けています。

下記をご覧ください。

引用:外為オンライン

このようにローソク足のパターンを基準として、相場の動きを予測するものです。酒田五法ですが、下手なテクニカル分析なんかより、使い方をしっかりマスターすればよっぽど役に立ちます。

売買シグナルとして強力な「三兵」

ディープラーニングなんて手法が世の中に出回る遥か昔に考えられた酒田五法ですが、その中でも特に私が気に入っているのが「三兵」です。

三兵とはトレンドを読んだ順張りの売買シグナルです。下の図をみてください。

三兵には2種類あります。右側がローソク足の3つの陽線から成り立つ「赤三兵(あかさんぺい)」と呼ばれるものです。考え方は至極単純です。この赤三兵が安値圏で出現したら、強い上昇のトレンドの発生とみられ「買いのシグナル」となります。

対して右側は3つの陰線から成り立つ「黒三兵(くろさんぺい)」と呼ばれます。これが高値圏で出現した場合、「売りのシグナル」となります。

個人的にはこのシンプルな考えも非常に好きです。実際に安値圏・高値圏で三兵が出現すると、うまく利益が出ることも多々あります(個人談)。

今回はこの酒田五法の「三兵」をPythonを使って実装してみましょう。

STEP1 実行完了とデータ

冒頭でも触れましたが、本記事はGoogle Colabを使う前提で進めます。ブラウザのみで5分もあれば機械学習の実行環境が整います。基本的な使い方は「知らないと損をするGoogle Colabの隠し技と基本操作」をご覧ください。

Google Colab

酒田五法を実装するのに過去為替レートのデータが必要です。下記のリンクからCSVファイルのダウンロード可能です。こちらは私がOANDA FX APIから作成したデータです。

【使うCSVファイル】
usd_10min_api.csv

これで準備完了です!次のステップへ行きましょう。

STEP2 ライブラリとデータの読み込み

Google ColabでJupyterノートブックは立ち上がりましたか?本記事はPython3を使いますので、Google ColabのノートブックのタイプがPython2の方はPython3へ変更しましょう。

まずは酒田語法を算出するのに必要なpythonのライブラリをインポートします。下記のコードをgoogle colabのコードセルへ入力して「Shift + Enter」で実行してください。

続いてドル円の過去為替レートのCSVファイルをPythonで読み込みましょう。STEP1でダウンロードしたusd_10min_api.csvをGoogle Colabへアップロードしてから、下記のコードを実行してください。

これで為替レートのデータ読み込み完了です。念のためこれらのレートのデータをローソク足チャートに落とし込んでみましょう。

matplotlibのcnadlestick2_ohlcを使うととても簡単にローソク足チャートが引けます。では次のステップへ移りましょう。

STEP3 データの前処理

次は酒田五法の三兵を算出するために、簡単なデータの前処理を行ってあげましょう。読み込んだデータは終値(close)、始値(open)、高値(high)、安値(low)の生データです。

これはOANDAのAPIからドル円の10分足データを取得してCSVに書き出したものです。まずはcloseやらopenとカラム名が長いと面倒なので短くしてあげましょう。

三兵は3つの連続するローソク足を使います。ですので、今現在を基準として10分前(c1)、20分前(c2)、30分前(c3)を算出しましょう。Pandasのshiftメソッドを使うと簡単にデータをずらすことが可能です。

続いてローソク足が陰線か陽線かを判断しなくてはいけません。ローソク足の陰線と陽線ですが、下記の図を見るとわかりやすいです。

引用:FXブロードネット

つまり陰線か陽線かを見分けるには終値だけではなく始値も必要なわけです。先ほどと同じ要領で始値も10〜30分ずらしてあげましょう。

少しデータの可視性を上げるため、カラムの並び替えと不要なカラムの削除を行いましょう。

これで大丈夫そうですね。試しに16:10:00のデータをみてください。この時間の終値(c)は106.815で、10分前(c1)は106.774としっかり時間軸がずれているのが確認できます。

STEP4 安値圏と高値圏の検出方法

酒田五法の説明でも書いた通り「三兵」は安値圏・高値圏のみで効力がある売買シグナルです。つまり、単純に三つの陽線(または陰線)をデータから検出しただけでは意味がありません。

相場の安値・高値をデータから判断する方法はたくさんあります。今回は最もシンプルな考え方の一つ「ボリンジャーバンド」を使うことにしましょう。

ボリンジャーバンドとはFXのテクニカル指標で人気の高い指標の一つです。詳しくは「Pythonでボリンジャーバンドを作る方法」をご覧ください。

ボリンジャーバンドを簡単に説明をすると「」「真ん中」「」の線を使い分析する手法です。ボリンジャーバンドの「下」に相場レートが近いと「安値圏」「上」に近いと「高値圏」と捉えることが可能です。

では、実際に為替レートからボリンジャーバンドを算出してみましょう。今回はボリンジャーバンドの期間を「20」としています。期間はパラメータの一つですので、各自色々と調整してみてください

ボリンジャーバンドは期間20ですので、データの最初の19行にはデータが算出できません。それらのデータを削除して、改めてインデックスを振り直してあげましょう。

これで大丈夫そうですね。念のためボリンジャーバンドがしっかり算出できているかローソク足チャートに落とし込んでみましょう。

大丈夫そうですね!上が黄色線、真ん中が青線、下が緑線です。相場が黄色線に近づくと高値圏(下がる可能性が高い)、逆に相場が緑線に近づくと安値圏(上がる可能性が高い)を表しています。

上のローソク足チャートもそのような傾向がみて取れます。

STEP5 酒田五法 赤三兵を検出する

データの簡単な前処理、さらに高値圏・安値圏をデータとして扱えるようにボリンジャーバンドの値を算出しました。

いよいよ本題でもある酒田五法の三兵をデータから検出してみましょう。今回は安値圏で陽線が三つ並ぶ「赤三兵=買いシグナル」を検出します。

三兵の検出ルールとして2つ考えましょう。赤三兵の一つ目のルールが「安値圏」です。今回はシンプルに赤三兵の最初のローソク足の終値がボリンジャーバンドの下線よりも低いというルールとします。

ボリンジャーバンドの下線よりも低い、つまり相場が安値圏に入っている可能性がある、という考えです。ではPythonでそのルールを実装してあげましょう。

ルールその1として、赤三兵の最初のローソク足の終値(C3)がボリンジャーバンドの下線(lower)よりも値が低ければ「1」、高ければ「0」となるように算出しました。

続いて、ルールその2です。赤三兵は「3つの陽線が出現する」という大事なルールがあります。陽線というのは、データで表すと「始値 – 終値 = 負の数」です。では、ルール2もデータから算出してみましょう。

醜いコードですが我慢ください(笑)。何事も最初は泥臭く書くことで、細かい調整などができるわけです。上のコードでは20分前、10分前、現在の10分足が続けて三連続で陽線であれば「1」、一つでも条件が外れたら「0」となります。

これで酒田五法の赤三兵の算出は完了です!次のステップで結果を確認してみましょう!

STEP6 検出した赤三兵をローソク足チャートで確認

前のステップで赤三兵を算出する2つのルールを作ってデータ解析を行いました。では、実際に赤三兵が算出できているのかローソク足チャートを使って確認してみましょう。

データからルール1とルール2が該当するレコードを探します。つまり「安値圏(ボリンジャーバンドの下線より下)で3つの陽線が出現する箇所」です。

2つの条件が該当するレコードが見つかりましたね!では試しにいくつかローソク足チャートで出してみましょう。まずは2018/03/20 09:10:00の前後を確認してみましょう。

おおおお!これは感動ですね!見事、安値圏と思われる位置で赤三兵を検出して、シグナル通り相場は上昇しているのが確認できます。

では、別のレコードも確認してみましょう。

こちらもばっちしです!一つ目よりギリギリな赤三兵(特に真ん中が)でしたが、シグナル通りその後の相場はしっかり上がっているのが確認できます!

まとめと次の課題

如何でしたでしょうか?今回はPythonとドル円の為替レートのデータを使って、ローソク足分析の酒田五法の「三兵」を検出する方法をやってみました。

今回紹介した手法はあくまで初歩中の初歩です。自動売買ロジックや機械学習FXで活用するには、より深くデータを解析して実装する必要があります。

検証するポイントとしては、「赤三兵の陽線の度合い(始値と終値の差分)」や「高値圏・安値圏の算出方法」などがあります。今回は単純にボリンジャーバンドの下線を安値圏と決めましたが、これが最善な手法ではありません。

FXで機械学習を使うための初心者向けチュートリアルもまとめています!Pythonの初歩的な知識があれば実装が可能ですので、興味がある方は是非ご覧ください!

決定木を使ってFX予想をやってみる
FXトレードでロジスティック回帰を独自テクニカル指標として活用する方法

ブログ読んでいただきありがとうございます!Twitterでも色々と発信しているので、是非フォローお願いします!

使っているFX会社はどこ?
自動売買用(1万円キャッシュバック中) → インヴァスト証券
Python API用(FX APIはここしかない) → OANDA ジャパン

FX トレード

Posted by algon