FXプライムの「ぱっと見テクニカル」をPythonで実装する方法(初歩編)

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

FXプライムの「ぱっと見テクニカル」のトレード分析の考えを基にPythonで類似したローソク足パターンの抽出を行う方法

こんばんは、新米データサイエンティスト(@algon_fx)です。最近は本業が忙しいのですが、仕事が楽しくてたまりません。

データ解析は仕事・趣味を含めてやりますが、それ以外の仕事も「やりがい」のある仕事が多いです。業界の風潮としては、データ解析以外はやらん!という方が多いのですが・・私はデータ解析以外も楽しんで出来るタイプのようです。

さて、突然ですが質問です。FXプライムという業者が提供している「ぱっと見テクニカル」をお使いの方はいらっしゃいますでしょうか?

ぱっと見テクニカルとは、FXプライムが独自で開発したトレードツールです。未来の値動きを1クリックでかんたん予想でき、特に初心者の方に人気があるようです。

このツール、とても面白いです!!テクニカル分析手法としてシンプルかつ、とても強力だと思います!

ってことで、今日はFXプライムの「ぱっと見テクニカル」改め、新米サイエンティストの「なんちゃってテクニカル」をPythonで作る流れをまとめます!

なお、今回は「初級編」ですので作り込みは行いません。ぱっと見テクニカルの考え方と、Pythonを使って実装を行う方法です。実践のFXトレードで使える代物ではありませんのでご了承ください。(ただし、作り込めばかなり便利になります!!

ぱっと見テクニカルとは?

FXプライムが独自で開発したトレーディングサポートツールです。このツール、何がすごいかと言うと、テクニカル分析の知識が一切なくても、ある程度の将来の値動きが予測できてしまうのです!

では、どのような仕組みなのでしょうか。実は非常に単純です。ぱっと見テクニカルは過去の為替レートの値動きをデータとして持っています。

それらの過去のレートの動きの中から、現在の値動きと類似した動きを抽出して「将来の値動き」の参考として出力してくれます。言葉でも説明しても解りづらいかと思うので、下記の図をみてください。

上のローソク足チャートが現在のものです。対して下のチャートは過去のレートのものです。ぱっと見テクニカルは現在の値動きを読み取り、過去に類似した値動きを表示してくるのです。

赤矢印に注目ください。ここが現在の為替レートです。この先、レートが上がるのか下がるのか解りません。しかし、下の過去レートのチャートを見ると上がっているのが解ります。このように、今のチャートパターンを過去のチャートパターンと照らし合わせることで、近い将来の値動きの参考にするわけです。(好きです、この手法!

青矢印に注目すると「一致率」とあります。これも一つの参考指標です。今と過去のチャートパターンの一致率を見ることで、本当に過去のパターン通りに行くかどうかを判断できるわけです。

FX初心者のみならず、チャートパターンをこのように分析してトレードの参考にするのは上級者にも使える考えだと私は思います。より詳しくはこちらのFXプライム公式ページをご覧ください。

当然、このぱっと見テクニカルを開発するとなると、途方も無い労力が必要です。ですので、今回はこの現在と過去のチャートパターンを抽出すると言う考えをPythonを使って実装してみましょう!

STEP1 実行環境とデータ

毎回の流れですが、今回もGoogle Colabを使う前提で本記事は進めます。

Google Colabを初めて使う方は「知らないと損をするGoogle Colabの隠し技と基本操作」の記事をご参照ください。ブラウザのみで5分もあれば機械学習の実行環境が整います。またXGBoostも事前にインストールされていますので、環境構築も不要です。

Google Colab

使う為替レートはドル円の10分足を使います。下記のリンクからCSVファイルのダウンロード可能です。こちらは私がOANDA FX APIから作成したデータです。

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

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

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

では、サクサクと下準備を進めて行きましょう。今回使うライブラリは下記の通りです。Google Colabでは事前にインストールされているものなので、追加でのインストールは不要です。

ローソク足チャートを使いますので、matplotlibの関連モジュールもインポートしています。

では、続いて先ほどのドル円10分足のデータをPandasのデータフレームとして読み込みましょう。

ご覧通りドル円の終値(close)、始値(open)、高値(high)、安値(low)が10分ごとに格納されています。FXの過去データを自分で取得してみたい方は、「Pythonを使ったOANDA API v1で知っておきたい10の基本操作」に手順をまとめています。

では、こちらのデータからMatplotlibを使ってローソク足を描いてみましょう!データが膨大ですので、450行〜650行の2000分間に絞って書き出します。

為替データからローソク足の描写ですがmatplotlibのcnadlestick2_ohlcを使うと非常に便利です。最後にカラム名を短くしておきましょう。

大丈夫そうですね。では次のステップに移りましょう。

STEP3 現在から過去50分のレートを比較

先ほども説明をしましたが「ぱっと見テクニカル」は現在のチャートパターンと過去のパターンをマッチングする手法です。FXプライムが提供している本家は10分足〜月足まで選択が可能かつ、参照する過去レートも幅が広いです。(本当に便利なツールので是非使ってみてください → ぱっと見テクニカル本家

さて、本家のように作り込むのは後にするとして、今回はそれっぽいものを実装してみましょう。こっちの「なんちゃってテクニカル」は現在から50分前までの10分足の動きを参考にして、過去の同期間で類似したチャートパターンを抽出します。

まずは、OHCL(終値・始値・高値・安値)を10〜50分までずらしてあげましょう。なお、今回はあえてループ処理は書いていません。後ほど皆さんがカスタムしやすいにです。

コードが非常に醜いですが・・・今回ばかりは我慢ください(笑)。では、それぞれのカラムを並び替えて、さらにNaNを含む最初の5行をデータから落としてあげましょう。

大丈夫そうですね!次の処理に移ります。

次は現在の終値を基準にそれ以外のレートを正規化してあげましょう。なぜそんな面倒な処理が必要かというと、単純にローソク足のパターンを読み取りたいからです。

つまり、そのままの為替レートのデータを使ってしまうと、仮に140円から138円に下がって142円に上がったというパターンを探したいときに、同じレート(140→138→142)しか見つけられないからです。

今の終値を基準に正規化することで、140→ -2 → +2というデータになります。ですのえ、仮に今の終値が138円だっとしても、138→ -2 → +2という値動きパターンを検出できるからです。

では処理を加えてあげましょう。

ご覧のとり今の終値(c)を基準に全ての指標がプラス・マイナスの値動きとなりました。

STEP4 ローソク足パターンを検出

ではいよいよ「ぱっと見テクニカル」・・ではなくて「なんちゃってテクニカル」の最も重要な部分となる現在と過去のローソク足パターンを検出してあげましょう。

しつこいようですが、今回はイテレーションで処理を行いません。とっても、とっても、醜いコードですが・・後ほどカスタマイズしやすいようにそのままにしています。

まずはパターンの検出する閾値を決めてあげます。これも各自、色々な閾値を検証してみください。今回は最大1.3、最低0.7という閾値を設定してあげました。

では、実際にパターン検出できるかやってみましょう。現在のレートとして扱いたいインデックスをsearchに指定します。下記のコードでは4600と指定しています。searchの値は現在の終値を意味します。これも各自で色々と確認してみてください。

上記の処理もFOR文で綺麗にまとめることが可能ですが、今回はあえてそのままにしています。細かい調整などを加えて検証してみたい方は是非挑戦してみてください。

では、現在の終値と類似したローソク足パターンが抽出できたかどうか確認してみます。

おお、できていますね!先ほど現在の終値の設定として4600行目を指定しました。ご覧の通り26、8309、15123行目のローソク足の動きが類似していると出ています。

本当に類似しているのか・・ローソク足に落として確認してみましょう。

上のローソク足チャートの一番左が4600行目( 2018/04/16 14:30:00)です。今回書いたコードでは、一番左の足から5本目までのデータを基に類似したパターンを抽出するものです。では本当にパターン抽出出来ているのか確認します。(ドキドキ)

う〜〜ん、それとなーく類似したパータンと言えないこともありませんね(笑)。最初の3本(左側)はもつれ合い、その後に下がっているという部分では大枠似ているとも見えます。

6本目からは全く関係のない値動きですが、ご覧の通り上のチャートも下のチャートも下がって上がるという類似したパターンが出ていますね!これの通りトレードしたら、少しは儲けていたかもしれません。

まとめ

今回はFXプライムの「ぱっと見テクニカル」のトレード分析手法の考えを基にPythonで類似したローソク足パターンの抽出を行なってみました。

個人的には、本当にこのツールはシンプルかつ強力だと思っています。下手にMACDやらRSIやら、テクニカル指標を使うよりよっぽど上手くトレード出来るのでは?と思っています。

今回は少し雑、いや初歩的な流れでしたが、より作り込むことでとても強力なツールになります。私のFX機械学習トレードにも「ぱっと見テクニカル」の考えを基にしたモデルを活用しています。

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

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

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

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

FX 機械学習

Posted by algon