ふと立ち寄ったカフェで、コーヒーを飲みながらチャートを眺めていると、いつも思うことがある。 「結局、相場はランダムに動いているだけなのか、それとも何かしらの『意志』や『パターン』があるのか」ということだ。
多くの人は移動平均線やRSIといった定番のインジケーターに頼る。もちろんそれらも有用だが、大人の知的好奇心としては、もう少し数学的な、あるいは物理学に近いアプローチで相場を捉えてみたいと思わないか。
今日は、僕が最近注目している「分数ブラウン運動(fBm)」という考え方を使った、ちょっと贅沢なEA戦略の話をしようと思う。
市場の「記憶」を数値化する:ハースト指数という切り口
まず、この戦略の核となるのが「ハースト指数(H)」という概念だ。 難しい名前がついているが、簡単に言えば**「相場が過去の動きをどれだけ覚えているか(記憶性)」**を測る指標だと思ってほしい。
通常、完全なランダムウォーク(コイン投げのような動き)なら、ハースト指数は 0.5 になる。だが、現実の相場はそう単純じゃない。
- H > 0.55 のとき: 「トレンド持続状態」。一度上がったものは、さらに上がりやすい。つまり、相場に「強い記憶」があり、同じ方向へ進もうとする性質を持っている。
- H < 0.45 のとき: 「平均回帰状態」。上がりすぎたら下がる、下がりすぎたら上がる。ゴムボールのように、中心に戻ろうとする性質が強い。
戦略の組み立て:状況に合わせた「待ち伏せ」
このハースト指数を使って、EAに「モード切替」をさせる。
1. トレンドモード(H > 0.55) 相場に強い方向性があるとき、僕はあえて「少しだけ押し目」を待つ。 価格が20期間の移動平均線(SMA)より上にあり、かつ強いトレンド記憶があるとき、現在の価格から少しだけ下に指値(BuyLimit)を置く。ATR(ボラティリティ)を使って、相場の「呼吸」に合わせた絶妙な位置に罠を仕掛けるわけだ。
2. レンジモード(H < 0.45) 逆に、相場が平均に戻ろうとする性質を持っているときは、ボリンジャーバンドの端まで待つ。 「ここまで来れば反発するだろう」という境界線(LowerBand)に指値を置き、中央線に戻ってきたところでサッと利益を確定させる。
どちらのモードでも、損切りは ATR をベースに設定する。相場の変動幅に合わせて損切りラインを動かすことで、不必要なノイズで狩られるリスクを減らしている。
「感情」を数式で制御する:CARA効用関数
さて、ここからがシステムトレーダーとしてのこだわりどころだ。 多くの初心者は「固定ロット」か「単純なパーセントリスク」で運用するが、この戦略では「CARA効用関数」という考え方を組み込んでいる。
これは簡単に言うと、**「リスクに対する心理的な拒絶反応を数式化したもの」**だ。 リスク回避度($\gamma$)というパラメータを調整することで、今のポジション量や相場の状況に応じて、「いまはこのリスクを取っても精神的に耐えられるか(=期待値に見合うか)」を計算し、ロット数や指値の幅を動的に変化させる。
機械に「適度な慎重さ」を教え込む。この設計こそが、単なる自動売買を「戦略的なシステム」へと昇華させるポイントになる。
実装へのアプローチ:PythonとMQL5の共演
これをどう形にするか。僕ならこう使い分ける。
まずは Python で研究だ。hurst ライブラリを使えば、ローリングウィンドウでハースト指数を簡単に算出できる。バックテストを繰り返し、最適な $H$ の閾値(0.55や0.45など)を突き止める。
そして、実戦投入は MQL5。
HFT(高頻度取引)に近い速度を求めるなら、非同期発注(OrderSendAsync)を使って、計算が終わった瞬間に注文を飛ばす。ハースト指数の計算のような重い処理は、カスタム指標やDLL経由で効率的に処理させるのが定石だろう。
最後に:知的な遊びとしてのEA開発
分数ブラウン運動だの効用関数だの、最初は耳慣れない言葉ばかりで難しく感じるかもしれない。 けれど、一つひとつの概念を紐解いていけば、それは単なる数学ではなく、「相場という巨大な生き物をどう捉えるか」という哲学に近い。
もし君が、単に「儲かるツール」を探すのではなく、「自分のロジックで相場を攻略する快感」を味わいたいなら、ぜひこのあたりの深掘りを始めてみてほしい。
さて、コーヒーもお代わりしようか。☕\n