【EA開発のリアル】トレーダーの挑戦記|MAとVWAPで聖杯を目指す試行錯誤と高勝率EA構築への道

【EA開発のリアル】トレーダーの挑戦記|MAとVWAPで聖杯を目指す試行錯誤と高勝率EA構築への道

「FXのEA(自動売買システム)で安定して勝ちたい…」
「自分だけのオリジナルEAを作ってみたいけど、何から始めればいいんだろう?」
「EA開発のリアルな過程や、直面する壁、そしてそれをどう乗り越えていくのか知りたい…」

多くのトレーダーが一度は夢見る「聖杯」とも言える高性能EAの開発。しかし、その道は決して平坦ではありません。この記事は、私、Dysonblog運営者のdaitoが、実際にEA開発に挑戦し、数々の試行錯誤を繰り返しながら高勝率EAの構築を目指すリアルな記録です。

特に、移動平均線(MA)VWAP(出来高加重平均価格)を組み合わせたロジックを深掘りし、その過程で直面した課題や、解決のためにどのような思考を巡らせたのか、具体的なバックテスト結果(画像イメージ含む)も交えながら、包み隠さずお伝えします。

この記事を読むことで、あなたが得られるもの

  • EA開発の「理想と現実」を垣間見ることができます。
  • 具体的なEAロジック(MAとVWAP)構築のヒントやアイデアを得られます。
  • 開発プロセスにおける問題解決の思考法やアプローチを学べます。
  • バックテストの重要性と、ティックデータ品質100%での検証の厳しさを理解できます。
  • そして何より、諦めずに挑戦し続けることの価値を感じていただけるはずです。

EA開発初心者の方から、現在開発で壁にぶつかっている方まで、何かしらの気づきやモチベーションに繋がれば幸いです。

なぜEA開発なのか?裁量トレーダーが自動売買に挑む理由と最初の壁

私がEA開発に本格的に取り組み始めたのは、長年の裁量トレード経験の中で、いくつかの課題を感じたからです。

  • 24時間相場を監視し続けることの限界。
  • 感情に左右されない、一貫したルールベースの取引への憧れ。
  • 自分のトレードアイデアを形にし、客観的に検証したいという探求心。

最初に目を付けたのは、裁量でも得意としていたチャネルラインをベースにしたEAでした。オリジナルのロジックを組み込み、MQL5で自作インジケーターを改造するところからスタートしました。

【挑戦ログ①】チャネルラインEAの挫折
意気揚々と開発を始めたものの、チャネルラインの判定ロジックが複雑になりすぎたのか、EAの動作が非常に重くなってしまいました。バックテストにも膨大な時間がかかり、最適化作業もままならない状態に…。悔しいですが、このアプローチは一旦断念せざるを得ませんでした。

自作チャネルは精度は高く裁量ではかなり優秀。EAでも優秀でが、重すぎる。

EA開発では、最初のアイデアがそのままうまくいくことは稀です。重要なのは、問題点を早期に認識し、柔軟に方針転換できること。この最初の挫折は、後の開発に活きる貴重な経験となりました。

原点回帰と新たな発見:MAベースEAへのシフトと「キリ番戦略」の可能性

チャネルラインEAの失敗を受け、もっと軽量でシンプルなロジックに立ち返ることにしました。そこで目を付けたのが、過去に作成した移動平均線(MA)をベースにしたインジケーターです。これを基盤に、再度EAの構築を始めました。

その過程で、「MAよりもキリの良い価格(ラウンドナンバー、いわゆるキリ番)を意識した方が、実は資金効率が良いのでは?」という仮説に至りました。実際にキリ番を意識したロジックでバックテストを行うと、興味深い結果が得られました。

キリ番戦略のほうが資金が増えている

移動平均線ベース
キリ番ベース

キリ番のほうが利益は出ますが、ティックチャートの場合には損切りが近いので負ける可能性が高いと考えました。

上の画像は、移動平均線ベースのEAとキリ番ベースのEAのバックテスト結果を比較したものです(詳細は伏せますが)。確かに、特定の期間ではキリ番戦略の方が利益が伸びる傾向が見られました。

しかし、ここでも新たな壁に直面します。ティックデータ品質100%(全てのティック情報を使った高精度なテスト)で検証すると、キリ番戦略は損切りラインが近すぎるために、ダマシに引っかかりやすく、期待したほどの成績が出ない可能性が高いと判断しました。これもまた、一つの「断念」でした。

EA開発は仮説と検証の繰り返しです。「良いアイデアだ!」と思っても、厳密なテスト環境では通用しないことが多々あります。特にティックデータ品質100%での検証は、EAの真の実力を測る上で避けては通れない道です。

試行錯誤の核心:MAとVWAPの融合と「ティックデータ100%」への挑戦

キリ番戦略の限界を感じる一方で、MAベースのEAには依然として可能性を感じていました。しかし、大きな課題もありました。それは、「レンジ相場で損失を出しやすい」という点です。「パッと見た感じ、レンジでどんどん資金を減らしている可能性が高そう」という直感がありました。

このレンジ相場対策として、様々なインジケーターの導入を検討しました。

  • RSIやRCI、ストキャスティクス: レンジ判断や逆張りの指標として有名ですが、私のEAロジックとの相性や、フィルターとしての効果を検証する必要がありました。
  • ボリンジャーバンド: スクイーズ(バンド幅の収縮)でレンジを判断できますが、エントリーチャンスが極端に少なくなる可能性がありました。
  • 自作チャネルラインインジケーター: 以前断念したものを改良して使えないかとも考えましたが、やはり「待つ」時間が長くなる懸念がありました。

試行錯誤を重ねる中で、最終的に「移動平均線(MA)」と「VWAP(出来高加重平均価格)」、そして「プライスアクション」を組み合わせるという現在のEAの核となるロジックに辿り着きました。VWAPは機関投資家も意識すると言われる重要な指標であり、MAとの組み合わせでトレンドとレンジの判断精度を高められるのではないか、と考えたのです。

ここからが、本当の意味での「ティックデータ品質100%で利益を残せるEA」への挑戦の始まりでした。

【実践】MA+VWAP EAの驚異的なバックテスト結果

MAとVWAPを組み合わせた自作EAのパフォーマンスを、MQL5のストラテジーテスターで徹底的に検証しました。以下は、その過程で見られた代表的なバックテスト結果のイメージです。(※実際の数値や期間は元記事の情報を元にしていますが、ここではイメージとして捉えてください)

初期バージョンからの改善:ドローダウンの抑制とプロフィットファクター向上

マイナス値をチューニングしました。

こちらは10時から16時のものだけです。24時間にすると凄まじい利益が出ます。

下記が以前のバージョンです。ドローダウンが3%だったを1%未満に改善したことで、プロフィックファクターも向上し、2.40から3,41に向上。利益も4000ドルから6000ドルに向上。

初期のロジックでは、プロフィットファクター(総利益÷総損失)が2.40程度、最大ドローダウンも3%程度でした。これを、ロジックの調整やフィルターの追加(例:取引時間帯の限定 10時~16時など)によって、プロフィットファクター3.41、最大ドローダウン1%未満へと大幅に改善させることに成功しました。利益額も約1.5倍に向上しています。

時間フィルター解除時の爆発的な可能性:10年間で数億円!?

取引時間フィルター(10時~16時)を解除し、24時間稼働させた場合の10年間のバックテストでは、さらに驚異的な結果が出ました。

ここで、時間フィルターを10から16時を解除します。結果がこちら。200000ドルを突破。

続いて、過去10年間の10から16までです。100ドルから初めて、27000ドル

では次は証拠金の10%で時間制限を解除した普通のバックテストを行ってみます。10年。100ドル(1万4千円)からスタートした結果がこちら。

もし為替レートが 1ドル = 142.83円 である場合、

34,000,000ドルは

48億5622万円

になります。

(計算式: 34,000,000ドル × 142.83円/ドル = 4,856,220,000円)

ちまたでは元資金が必要で、遥かにトレード回数も重ねられず、利益が得ると言っている人が多いですが、流石にすべてを凌駕する性能でここまで優秀な結果を叩き出している人は見たことがありません。

資金の0が1つや2つ多くて、なおかつ、年数も倍以上するのが多い中曽野資金の10の1くらいで、なおかつ年数も半分以下で、ドローダウンも10%未満は驚異的だと私は感じています。

勝率はどうでもいいですが、それでも90%はありえない数字です。本来良くても60%~70%が普通です。

すべてが異常値。

なので、仮に20年間らな90億以上になります。1万円が20年で90億です。つまり、もっとリスクを取れば更に早くなり、ドローダウンも他のEAとは比べ物にならくない優秀なので実現可能。

1万円で3つくらい運用すればもしもどれかがなくなっても証拠金の%を安定とハイレバにしておけば比較的にすぐに利益になる計算。

初期資金100ドルが、10年間で数千万ドル(当時のレートで数十億円)に達するという、まさに夢のような結果です。もちろん、これはあくまでバックテストであり、様々な要因(スリッページ、スプレッド変動、FX会社の約定力など)によって実際のパフォーマンスは変動します。しかし、このEAが持つポテンシャルの高さを示すものと言えるでしょう。

ちまたには、多くの資金と長い年月をかけても、これほどのパフォーマンス(特に低ドローダウンと高プロフィットファクター)を叩き出すEAは稀だと感じています。勝率90%というのも異常値ですが、これは私のロジックが高勝率型であることを示しています。重要なのは、単に利益額が大きいだけでなく、リスク(ドローダウン)を抑えつつ、安定して利益を積み重ねられるかどうかです。

パラメータ最適化の過程:MAの期間、VWAPの活用

EAのパフォーマンスをさらに向上させるため、MAの期間設定(例:短期MA2と長期MA3の組み合わせなど)や、VWAPの計算方法(Simple, Exponentialなど)について、様々な組み合わせをテストしました。

こちら約1周間で33万円で、ロット数は0.01。驚異的です。

以前はスプレッドとティックの動きと品質が24%でこのような結果を出しましたが、今回は話がちまいます。

スプレッド込、ティックデータもつかい、品質は100%。

プロフィットファクターは3,28。良くても1,60なのが普通ですが、これは一体。

ドローダウンステイル部分を調査しました。

MA20と25

VWAP

MA2と3

MA3と4や5と10や5と25も似たような結果。

この2つが一番場フォーマンスが良く似ていました。

シンプル

MAL

さほど変わらないのでSimpleで行きます。

2と3で日本時間の今回は10から16まじで稼働させたデータです。

1万から50万円以上に増えたことになります。

1ヶ月に10万円だとすると30万円になりました。

では、資金な%で運用してみましょう。10万円で10%を想定した場合。3千万円。

平行に見えてる部分は実は取引していいるんですよね。上の吹き出しは10万4千円くらいです。
これでも、この一で400万円です。

では、時間を開放し、レバレッジ100倍で、限界まで上げてみました。

ゲージが収まりきれておらず、文字にまでグラフがかかっているのでエグい利益ですね。

超安定運用で、3700万円(1月から4月まで)証拠金100%でこちら

70%

効率が悪そうだったので50%で試します。

4600万円

証拠金を減らすことで取引できる回数が増えることが原因だと思います。

10%を試します。

4千万くらい

ロット数を上げていくので相対ドローダウンは20%(巷では50%でも優秀とされている)

2.98

リスクをできるだけ取らない運用システム

結果として、特定のMA期間の組み合わせや、VWAPの特定の計算方法(例:Simple)が、私のEAロジックと相性が良いことが判明しました。このように、地道なパラメータ最適化作業が、EAの性能を大きく左右します。

それでも残る課題と「リアルティック攻略」への飽くなき探求

これだけの結果が出ても、まだ完璧ではありません。現在のEAにも課題は残っています。

  • 大きなレンジ相場でのパフォーマンス低下: トレンドフォロー型のロジックであるため、長期間続くレンジ相場では、細かな損失を繰り返してしまう傾向があります。この「レンジ対策」が今後の大きな課題です。
  • 複数ポジション保有の是非: 保有中でもエントリーチャンスがあれば追加でポジションを持つ(ピラミッティング)機能を試しましたが、結果的に損失を拡大させるケースもあり、現在は1ポジション保有を基本としています。
  • 損切りロジックの更なる最適化: VWAPを基準としたトレーリングストップや、プライスアクション(包み足、ピンバーなど)をトリガーとした損切りなど、より精度の高い損切りロジックを模索中です。

そして、究極の目標は「全ティックではなく、リアルティックでの攻略」です。バックテストはあくまで過去のデータ。実際の相場(リアルティック)で安定して利益を出し続けるためには、スプレッド変動、約定遅延など、バックテストでは再現しきれない要素も考慮に入れたロジックと設定が求められます。

この「リアルティック攻略」こそが、EA開発者にとっての永遠のテーマかもしれません。

下記が実際の最適化作業の1例でこのような作業を何ヶ月の何時間も続けてコツコツ改善していくのが基本です。

MA高勝率とEAとチャネルライン自作とVWAP自作

続けていくと下記のような負けが増えていきます。

つまり、大きなレンジが続けば負けが増えるので、この場合の対策を考えなくてはいけません。

しかし、それでも、資金が5倍近くまで1ヶ月です。(役4.5倍)

こちら、品質100%で、1分足で、ティックベースでの取引です。

下記は損切り位置がおかしい。エントリー方向と逆の方向。つまり、上エントリーであれば、WAPの下スプレッド2倍に設定しないといけない。また、VWAPが移動するたびにこの損切りラインは追尾する。

追加:週、月がレンジの場合はどちらもエントリー可能機能。保有中でもエントリー可能。

バックテスト
デモテスト

上記はデモとバックテストの実験チャートです。

  • 3実験:レンジポジションがマイナスのときトレンドになったら損切り。トレンドポジションがマイナスになって、レンジになったら損切り。

2つを追加したらこのように成績が悪化。つまり、レンジ取引はマイナスになる可能性が高い。

デモトレでもこのようです。つまり、

では、ポジションがあってもエントリーする機能のみ実装はどうでしょうか?

こちらも大きな損害が出ます。なので、1ポジションが良さそうです。

下記は試しているコード。

では、再び通常版にもどし、色々機能をつけてサイド確認していきます。このとき、少し長く、4ヶ月ちょっと実行します。

EA開発ツールとMQL5コードについて(参考情報)

私がEA開発で主に使用しているのは、MetaTrader 5 (MT5) とそのプログラミング言語である **MQL5** です。MT5は高機能なチャートツールであると同時に、EAのバックテストや最適化を行うための強力なプラットフォームも提供しています。

インジケーターに関しては、以下のようなものを自作または既存のものを改造して使用しています。

  • 改良型チャネルラインインジケーター: 視覚的に分かりやすく、バッファを利用してEAから数値を読み取りやすいようにカスタマイズしたもの。
  • 自作VWAPインジケーター: 独自の計算方法や表示方法を取り入れたもの。
  • MA(移動平均線): MT5標準のものをベースに、特定の条件で色が変わるなどの工夫を加えることもあります。

EAのMQL5コードについては、そのロジックの核心部分はここでは公開できませんが、基本的な構造としては、`OnInit()`(初期化)、`OnDeinit()`(終了処理)、`OnTick()`(ティック受信時の処理)といった関数内で、上記のインジケーターから値を取得し、エントリー条件や決済条件を判定しています。

例えば、MAとVWAPのクロスをエントリーシグナルの一つとする場合、以下のようなイメージのコード(簡略化)になります。


// グローバル変数でMAとVWAPのハンドルを宣言
int ExtMAHandle;
int ExtVWAPHandle;

// OnInit() でインジケーターハンドルを取得
void OnInit() {
  ExtMAHandle = iMA(_Symbol, _Period, FastMAPeriod, 0, MODE_SMA, PRICE_CLOSE);
  ExtVWAPHandle = iCustom(_Symbol, _Period, "MyVWAPIndicatorName", VWAPPeriod); // 自作VWAPインジの場合
}

// OnTick() でシグナル判定
void OnTick() {
  double ma_value[1];
  double vwap_value[1];

  CopyBuffer(ExtMAHandle, 0, 0, 1, ma_value);
  CopyBuffer(ExtVWAPHandle, 0, 0, 1, vwap_value); // VWAPインジのバッファ番号に合わせる

  // MAがVWAPを上抜けたら買いシグナル、など
  if (ma_value[0] > vwap_value[0] /* && 前のティックでは下だったかなど追加条件 */) {
    // 買い注文処理
  }
}

※上記はあくまで概念的なコード例です。実際のEAはより複雑な条件分岐やエラー処理、資金管理ロジックなどが含まれます。

MQL5でのEA開発は奥が深く、プログラミングの知識も必要となりますが、自分のアイデアを形にできる非常にやりがいのある作業です。

渡しの場合ですが、MQL5でいうと1500行くらいはサンプル程度です。

3000行ぐらいがいろいろな対策を行ったEAの完成形くらいです。

文字数だとこのくらい。

10個作って、組み合わせて5個、削って3個勝てるかどうかで、2個、最適して、なくなる。という感じの繰り返しです。今回はある程度形になったので記事にして共有しました。

MT4/MT5・ツール活用カテゴリ

まとめ:EA開発は終わらない旅。凡人でも諦めなければ道は拓ける

この記事では、私が取り組んでいるFXのEA(自動売買システム)開発のリアルな挑戦記と、MAとVWAPを組み合わせたロジックの構築・検証プロセス、そしてその過程での思考法を共有しました。

EA開発から学んだこと・伝えたいこと

  • EA開発に「聖杯」はない: 完璧なEAを求めるのではなく、自分の戦略に合ったEAを地道に作り上げていくプロセスが重要。
  • 試行錯誤の連続: アイデア出し → 実装 → バックテスト → 課題発見 → 改善… このサイクルを何度も繰り返す根気が必要。
  • バックテストの重要性と限界: ティックデータ品質100%での厳密なテストは必須。しかし、それでもリアル相場とは異なることを常に意識する。
  • ロジックはシンプルから: 最初から複雑なロジックを組むより、シンプルなロジックを検証し、徐々に改良していく方が効率的。
  • 課題は必ず出てくる: レンジ相場対策、ドローダウン抑制、パフォーマンス最適化など、乗り越えるべき壁は次々と現れる。
  • 諦めない心: 開発は時間と労力がかかります。「凡人でも諦めずに続ければ、道は拓ける」と信じています。

現在の私のEAも、まだ開発途上であり、さらなるパフォーマンスの最適化や、ドローダウン率の最適化など、やるべきことは山積みです。この「終わらない旅」こそが、EA開発の醍醐味なのかもしれません。

FX手法・戦略カテゴリ / EA関連タグ


この記事を書いた人:daito (@daito_daison)

Dysonblog運営者。裁量トレーダーとしての経験を活かし、FXのEA(自動売買システム)開発に情熱を注ぐ。MA、VWAP、チャネルライン、キリ番など、様々なテクニカル指標を組み合わせた独自ロジックをMQL5で実装・検証中。開発のリアルな過程と試行錯誤を発信することで、EA開発者のコミュニティに貢献したいと考えている。
詳しいプロフィール / X(Twitter)