EAに「相場の目」を!ローソク足・チャートパターン自動認識

却下手法 · 1 min

ユーザー方針(基盤強化・株価指数はプロップ未保証ゆえ不採用・FX価格のみ)に沿い、数値化エンジンを追加。全てリーク無し(no-lookahead検証済)・恒久資産。

本記事は「EAに「相場の目」を!ローソク足・チャートパターン自動認識」の検証を、はじめての方にも分かるようにまとめたものです。

図: ブレイクアウトのエントリー例(XAUUSD 日足・実データ)。直近の高値を上抜けたところで買います。

図: ブレイクアウトのエントリー例(XAUUSD 日足・実データ)。直近の高値を上抜けたところで買います。

今回の研究テーマは、FXのチャート分析の精度をぐぐっと上げるための「自動認識エンジン」の開発なんです。具体的には、相場の動きを読み解く上でとても大切な「ローソク足パターン」と「チャートパターン」を、EA(自動売買プログラム)が自動で認識できるようにする仕組みを作ってみました! 私たちは、将来にわたって長く使える「基盤」を強化していく方針でEA開発を進めています。今回の機能は、FXの価格データに特化して、未来の情報をこっそり見ちゃってズルをする、なんてことがないように(これを「リーク無し」と呼びます)設計されているので、一度作ればずっと使える「恒久資産」になるはずなんです。

どんなアイデア?

私たちの目的は、これまでトレーダーが目で見て判断していたような、チャートの「形」や「サイン」をEAが自動で認識し、数値化できるようにすることです。これにより、もっと複雑で高度なEAが作れるようになるんじゃないかと考えています。

どうやって試した?

ローソク足パターンを自動で認識!

まず取り組んだのは、おなじみの「ローソク足パターン」を自動で検出する機能です。ローソク足って、一本一本が相場の動きを物語る、まるで「サイン」のようなものですよね。 新しく作ったプログラム(btengine/candles.pycandle_patterns())では、次のような有名なパターンを自動で探せるようにしました。

  • どじ(Doji): 迷いを示す十字線のようなローソク足
  • ハンマー(Hammer): 下ヒゲが長く、反転のサインとされるもの
  • シューティングスター(Shooting Star): 上ヒゲが長く、下落のサインとされるもの
  • 丸坊主(Marubozu): ヒゲがない、強い動きを示すもの
  • 包み足(Engulf): 前のローソク足をすっぽり包むような形
  • はらみ足(Harami): 前のローソク足の中にすっぽり収まる形
  • 切り込み線(Piercing Line): 下落からの反転を示す形
  • かぶせ線(Dark Cloud Cover): 上昇からの反転を示す形
  • ピンセット(Tweezer): 高値や安値が揃った形
  • 明けの明星(Morning Star)/宵の明星(Evening Star): 複数のローソク足で形成される反転パターン さらに、これらのパターンを組み合わせることで、相場の「強気度(bull_score)」や「弱気度(bear_score)」を点数化する機能も盛り込んでみました。これにより、チャートが今、買いと売りどちらに傾いているのかを、数値で把握できるようになったんです。

チャートの大きな形も自動で認識!

次に挑戦したのは、もっと大きな視点での「チャートパターン」の認識です。こちらは相場の大きな流れを示す「地図」のようなものですね。 新プログラム(btengine/chartpatterns.pychart_patterns())では、特に有名な以下のパターンを自動で検出できるようにしました。

  • ダブルトップ/ダブルボトム(Double Top/Bottom): 天井圏や底値圏で2つの山や谷を作るパターン
  • ヘッド&ショルダーズ(Head & Shoulders)/逆ヘッド&ショルダーズ(Inverse H&S): 中央に大きな山(谷)があり、その両側に小さな山(谷)がある、有名な反転パターン これらのパターンは、ある程度しっかりとした「確定スイング」(相場の高値や安値の波)を元に検出されます。そして、パターンが完成した後の「ネックライン・ブレイク」(パターンの重要な境界線を価格が超えること)で、売買のサインを出すように設計しました。 ちなみに、将来の課題としては、もう少し複雑な「ハーモニックパターン」(フィボナッチ比率を使ったGartleyやBat、Butterflyといったパターン)も自動で認識できるようにしていきたいと考えています。

これまでの研究と学んだこと

今回のローソク足パターンやチャートパターンの認識機能は、私たちがこれまで開発してきた様々な「数値化エンジン」の仲間入りをしました。現在、私たちのEA開発の「強力な道具箱」には、以下のような分析ツールが揃っています。

  • 一般的なテクニカル指標(indicators)
  • 水平なサポート/レジスタンスラインの重要度(levels)
  • トレンドラインなどの斜めのチャネル(channels)
  • ダウ理論に基づく相場の構造分析(dow_structure)
  • 出来高の分布(profile)
  • ピボットポイント(pivots)
  • フィボナッチ分析(fibonacci)
  • そして、今回のローソク足パターン(candles)とチャートパターン(chartpatterns)
  • 相場の局面(トレンド相場かレンジ相場かなど)を判断するレジーム(regime) これらは、私たちが手作業で分析しているような「裁量手法」を、将来的にEAとして自動で「前進検証」(未来のデータで試す)できるようにするための、大切なツールセットなんです。

研究から見えてきたこと

これまでの研究(研究73〜79)で分かってきた重要な知見があります。それは、これらの分析ツールをFXの「トレンドフォロー戦略」(トレンドに乗るEAの考え方)と組み合わせた場合、「優位性(エッジ)を生む」(優位性がある、利益を出すチャンスがある)のは、主に「スイングレベル」(ある程度の期間の波)の動きを捉える場合に限られる、ということなんです。他の時間軸や戦略では、効果が薄かったり、むしろマイナスになったりすることも多かったんですね(△〜✕)。 今回作ったローソク足やチャートパターンも、おそらく同じような傾向になるだろうと見ています。すぐに「これを組み込んだら爆益EAが完成!」というわけではありません。でも、将来もっと精度の高いEAや、新しい売買戦略を開発するための、とっても大事な「土台」として、まずはこの基盤をしっかりと整備しておくことが重要だと考えているんです。 地道な作業ですが、こうして一つずつ「EAの目」を増やしていくことが、未来のEA開発にきっと役立つはずです。

この検証のつながり

この検証は、過去の次の検証を踏まえています(前回ダメだった→今回こうした、別ロジックとの比較など)。

関連コード(再現用)

この検証は以下のスクリプトで再現できます(リポジトリ参照)。

  • btengine/candles.py
  • btengine/chartpatterns.py