ふぅ。さて、コーヒーでも飲みながら少し話をしようか。☕️
EA(自動売買)の世界に足を踏み入れたばかりの頃は、多くの人が「ゴールデンクロスで買い、デッドクロスで売り」みたいな、シンプルなルールから始める。もちろんそれも一つの正解だけど、ある程度慣れてくると、ふと疑問に思うはずだ。「そもそも、今の相場は『トレンドが出ている状態』なのか、それとも『ただのノイズ』なのか?」ということに。
多くのインジケーターは、今の状態を「点」で判断しようとする。でも、プロの視点や知的なアプローチとして面白いのが、相場の状態を「面」で捉えるという考え方だ。
今日は、僕が面白いと感じている「コホネン自己組織化マップ(SOM)」を使った戦略について、少し深掘りして話してみようと思う。
相場の「空気感」を地図にするということ
まず「コホネン写像(SOM)」なんて言われると、大学の講義みたいで身構えるかもしれない。でも、考え方は至ってシンプルだ。
例えば、君がワインに詳しいとして、酸味、甘み、香り、渋みといった複数の要素(多次元データ)でワインを分類したいとする。それを、大きなテーブルの上に「似た傾向のワインは近くに、違う傾向のワインは遠くに」配置して、ひとつの地図のように整理する。これがSOMのやっていることだ。
トレードに当てはめてみよう。 僕たちが注目するのは、こんなデータだ。
- 価格の変化率(ROC): 今、どれくらいのスピードで動いているか
- RSI: 買われすぎか、売られすぎか
- ボラティリティ(ATR): 相場のエネルギーがどれくらいあるか
これらをバラバラに見るのではなく、セットにしてSOMという「地図」に放り込む。すると、AIが勝手に「ここは強気トレンドっぽいエリア」「ここはどっちに動くか分からないレンジエリア」というふうに、相場の状態をクラスタリング(グループ分け)してくれる。
戦略の具体的な組み立て方
この「地図」ができれば、エントリーの判断はかなりスマートになる。
僕が考えるこの戦略の流れはこうだ。📊
- 地図上の現在地を確認する 現在の市場データ(ROCやRSIなど)をSOMに入力し、今どのノード(地図上の点)に位置しているかを特定する。これを「最良適合ユニット(BMU)」と呼ぶ。
- エリア判定を行う そのBMUが、事前に定義した「強気トレンド・クラスタ」に属しているかを確認する。
- フィルターでダメ押しする AIが「強気だ」と言っても、念のためEMA(指数平滑移動平均線)を見て、価格がその上にいることを確認する。これで、方向性の裏付けが取れたことになる。
逆に、BMUが「不確実エリア」や「レンジエリア」にいた場合は、潔く静観する。これができるのが、システムトレードの最大の強みだ。人間はどうしても「何かチャンスがあるはずだ」と根拠なくエントリーしがちだからね。
リスク管理という「大人の作法」
どれだけ高度なAIを使っても、相場に絶対はない。だからこそ、出口戦略とリスク管理が重要になる。
この戦略では、BMUが「レンジエリア」に戻った瞬間や、反対のトレンドエリアに移動した瞬間に決済する。つまり、「相場の空気が変わったな」と感じた瞬間に、未練なく手仕舞いするわけだ。
また、損切り幅にはATR(平均的な値動き)を使う。
実装へのアプローチ:PythonとMQL5の分業
さて、これをどうやって形にするか。ここがエンジニアとしての腕の見せ所だ。
SOMのような複雑な計算をMQL5(MT5の言語)だけで完結させようとすると、かなり骨が折れる。だから僕は、**「脳はPython、手足はMQL5」**という分業体制を勧める。
- Python(脳):
MiniSomなどのライブラリを使ってSOMを構築・学習させ、リアルタイムで「今のクラスタは何か」を判定する。 - MQL5(手足): Pythonから送られてきた「強気」「弱気」「レンジ」というラベルを受け取り、EMAの条件と照らし合わせて注文を出す。
このハイブリッド構成にすることで、最新の機械学習ライブラリを自在に使いながら、高速な執行環境を維持できる。
最後に
「AI」や「機械学習」と聞くと、何か魔法のようなツールだと思ってしまいがちだけど、実際は「複雑なデータを整理して、判断をシンプルにするための道具」に過ぎない。
でも、その道具を使って「相場の空気を可視化する」というアプローチを試みるのは、知的好奇心を刺激される最高の遊びだと思う。
最初は難しく感じるかもしれない。でも、一つひとつの概念を紐解いて、コードに落とし込んでいくプロセスこそが、EA開発の本当の面白さなんだ。
焦らず、楽しみながら。まずは小さな実験から始めてみてはどうだろうか。☕️\n