MENU

FX自動化開発_プロジェクト始動

生活にこまらず好きな仕事をして生きるために、FXでお金を増やそうと思います。

かといって、為替のロウソク足をじーと眺めているのはあんまり健康によくないので、自動で取引してくれるシステム”EA”を創ってみましょう。まずは環境設定から。

今回のお供は

Gemini

googleのAI。ディープリサーチ機能で複雑なコードや情報をかき集めてレポートを作ってもらいます。

NotebookLM

こちらもgoogleのAIで、情報処理のエース!Geminiが集めた膨大なレポートを取り込んで、必要に応じて開発の水先案内人になってくれる頼もしいパートナーです。

Cursor

もう、この方なしではアプリ開発は成り立ちません。使いたいプログラミング言語を私の代わりに学習してくれて。「あれやりたい! これやりたい!」とお願いしたら、ファイルもコードも自動でつくってくれる。私たちの理想を現実に落とし込んでくれる現場監督さん。

XMMT5

こちらはXMTradingという企業がだしているトレードツールのアプリで、これから動かす自動売買システムのインターフェイスとして使用します。Cursorでコードを作成しますが、最後はコチラで読み込むための仕上げ”コンパイル”ができるアプリです。

目次

環境の構築

こんな質問をしました。

ワイコフ理論にもとづいたEA開発を行います。 CorsolrとXMトレーディングのアプリはインストール済 。デモ口座は解説済み。 まずはEAの動作テストが行える環境を整えて、EAのロジックを実装していく進め方でやっていきたいです。ステップバイステップで案内してください

※ワイコフ理論などFXの専門的な要素は、別記事で紹介します(未実装)。

FX開発特化型LMの回答

ワイコフ理論に基づいたEA開発、素晴らしいプロジェクトですね。CursorとXMのMT5という組み合わせは、現代のアルゴリズム取引開発において非常に強力なセットアップです。特にワイコフ理論のような裁量要素の強いロジックをコード化するには、CursorのAIを活用して「曖昧な概念を数理モデル化」するアプローチが最適です。

まずはご希望通り、「動作テストが行える環境の整備」から始め、段階的にロジックを実装していくステップバイステップの手順をご案内します。

1.CursorとMT5の連携(開発環境の構築)

CursorがMQL5の標準ライブラリ(CTradeやCiMAなど)を認識し、正確なコード補完を行うためには、正しいフォルダを開く必要があります。

1. MT5データフォルダの特定

XM MT5を起動し、メニューバーの「ファイル」>「データフォルダを開く」をクリックします。

開いたエクスプローラーの中で MQL5 というフォルダを見つけてください。

2. Cursorでプロジェクトを開く

Cursorを起動し、File > Open Folder から、先ほどの MQL5 フォルダ全体を選択して開きます。

これにより、AIが Include フォルダ内の標準ライブラリを学習し、コンパイルエラーの少ないコードを書けるようになります

3. フォルダ構成の作成

Cursorのエクスプローラーで Experts フォルダ内に新規フォルダ Wyckoff_EA を作成します。

この中に開発ファイル(Main.mq5.mqh ファイル)を保存していきます。

2.Cursorへの「ルール」設定

開発効率を最大化するため、CursorにMQL5特有のルールを教え込みます。プロジェクトのルート(MQL5フォルダ直下、またはWyckoff_EAフォルダ内)に .cursorrules というファイルを作成し、以下の内容を記述してください。

.cursorrules
# Cursor Rules for MQL5 Wyckoff EA

1.  **Language**: Write strictly in MQL5. Use `#property strict`.
2.  **Libraries**:
    - Use Standard Library `CTrade` for trade execution (#include <Trade\Trade.mqh>) [6].
    - Use `CiMA` or `iHighest/iLowest` for indicators/price analysis [7][8].
3.  **Architecture**:
    - Separate logic into classes (e.g., `CSignalWyckoff`, `CNewsFilter`).
    - Main logic goes in `Main.mq5`, separating `OnInit`, `OnTick`.
4.  **Wyckoff Logic**:
    - Focus on "Spring" (False Breakout Low) and "Upthrust" (False Breakout High).
    - Use Volume Spread Analysis (VSA) principles where possible.
3.ベースとなるEAの作成(動作テスト環境)

まずはロジックが空でも、チャート上で動き、注文が出せる「土台」を作ります。
作成ファイル: Experts/Wyckoff_EA/Main.mq5

Cursorの Ctrl+K (Generate) または Ctrl+I (Composer) を使い、以下のプロンプトでコードを生成させてください。

プロンプト
MQL5でシンプルなEAのスケルトンを作成してください。
• CTradeクラスを使用して、ランダムにBuy/Sellを行うテスト機能を OnTick に入れてください(動作確認用)。
• マジックナンバーとロット数は input パラメータにしてください。
• コンパイルが通るように必要なヘッダーをincludeしてください。

実行手順:

  • コードができたら保存し、MT5上で F4キー を押してMetaEditorを開きます。
  • Main.mq5 を開き、F7キー(コンパイル)を押します。エラーがなければ完了です(エラーが出た場合、エラー文をCursorに貼り付けて修正させます
  • MT5の「ストラテジーテスター(Ctrl+R)」を開き、銘柄(USDJPYなど)を選んでスタートし、注文が出るか確認してください。
4.ワイコフ・ロジックの実装(段階的アプローチ)

ここからが本番です。ワイコフ理論をEA化するために、以下の順番でロジックを入れ替えていきます。

フェーズ1: 環境認識(レンジの定義)

ワイコフ理論は「レンジ(Trading Range)」からの逸脱を捉えるものです。

実装内容: 過去N期間の最高値・最安値を特定し、レンジを定義します。

使う関数: iHighest, iLowest

Cursorへの指示: 「過去 InpRangePeriod 本のバーの最高値と最安値を計算し、現在の価格がそのレンジ内にあるか判定するクラス CRangeDetector を作成してください」

フェーズ2: セットアップ(Spring/Upthrustの検知)

「ダマシ」の動きを検知します。

Spring(買いシグナル): 安値をブレイクしたが、すぐにレンジ内に戻った動き。

Upthrust(売りシグナル): 高値をブレイクしたが、すぐにレンジ内に戻った動き。

Cursorへの指示: 「安値を更新した後、指定本数以内に終値がレンジ内に戻った場合を Spring と判定するロジックを追加してください」

フェーズ3: トリガー(プライスアクションと出来高)

精度を高めるため、ローソク足の形状と出来高を確認します。

ピンバー/包み足: 長いヒゲ(Pin Bar)や前の足を包む動き(Engulfing)をエントリートリガーにします。

出来高(VSA): ブレイク時の出来高が増加しているかを確認します(Effort vs Result)。

Cursorへの指示: 「Spring 発生時に、その足がピンバー(ヒゲが実体の2倍以上)であるか、かつ出来高が平均の1.5倍以上であるかをフィルタリングしてください」

フェーズ4: 経済指標フィルター(リスク管理)

ワイコフ理論は需給の自然な流れを見るため、突発的なニュースによる乱高下を避けます。

実装: MQL5の経済カレンダー関数を使用します。

Cursorへの指示: 「CalendarValueHistory を使用して、高重要度のニュースの前後30分間はトレードを禁止する CNewsFilter クラスを実装してください」

今後の進め方のアドバイス

まずは Step 3(ランダムエントリーでの動作確認) までを完了させ、「自作EAが動く」状態を作ってください。そこまで完了しましたら、次は「Step 4のフェーズ1(レンジ定義)」の具体的なコード作成について指示を出しますので、お声がけください。

ワイコフ理論のEA化は、主観的なチャートパターンをいかに「数値」に落とし込むかが鍵となります(例:「長い下ヒゲ」→「ヒゲが実体の2倍以上」と定義する等)。Cursorと対話しながら、一つずつ定義していきましょう。

つくる人

さてと、やりますか!

CursorとMT5の連携

1. MT5データフォルダの特定

XM MT5をダウンロードしてデモ口座を開設しました。

「ファイル」>「データフォルダを開く」>MQL5 フォルダを見つける

2. Cursorでプロジェクトを開く

Cursorを起動し、File > Open Folder から、先ほどの MQL5 フォルダ全体を選択して開きます。
※日本語だと ファイル > フォルダを開く

つくる人

MQL5フォルダをそのままCorsorのアプリにドラッグアンドドロップの方が早いです

これにより、AIが Include フォルダ内の標準ライブラリを学習し、コンパイルエラーの少ないコードを書けるようになります

3. フォルダ構成の作成

Cursorのエクスプローラーで Experts フォルダ内に新規フォルダ Wyckoff_EA を作成します。

この中に開発ファイル(Main.mq5 や .mqh ファイル)を保存していきます。

Cursorへの「ルール」設定

開発効率を最大化するため、CursorにMQL5特有のルールを教え込みます。プロジェクトのルート(MQL5フォルダ直下、またはWyckoff_EAフォルダ内)に .cursorrules というファイルを作成し、以下の内容を記述してください。

.cursorrules
# Cursor Rules for MQL5 Wyckoff EA

1.  **Language**: Write strictly in MQL5. Use `#property strict`.
2.  **Libraries**:
    - Use Standard Library `CTrade` for trade execution (#include <Trade\Trade.mqh>) [6].
    - Use `CiMA` or `iHighest/iLowest` for indicators/price analysis [7][8].
3.  **Architecture**:
    - Separate logic into classes (e.g., `CSignalWyckoff`, `CNewsFilter`).
    - Main logic goes in `Main.mq5`, separating `OnInit`, `OnTick`.
4.  **Wyckoff Logic**:
    - Focus on "Spring" (False Breakout Low) and "Upthrust" (False Breakout High).
    - Use Volume Spread Analysis (VSA) principles where possible.

ベースとなるEAの作成(動作テスト環境)

まずはロジックが空でも、チャート上で動き、注文が出せる「土台」を作ります。

作成ファイルExperts/Wyckoff_EA/Main.mq5
手動で新しいファイルを追加します。

Cursorの Ctrl+K (Generate) または Ctrl+I (Composer) を使い、以下のプロンプトでコードを生成させてください。

プロンプト

MQL5でシンプルなEAのスケルトンを作成してください。
• CTradeクラスを使用して、ランダムにBuy/Sellを行うテスト機能を OnTick に入れてください(動作確認用)。
• マジックナンバーとロット数は input パラメータにしてください。
• コンパイルが通るように必要なヘッダーをincludeしてください。
つくる人

実行して待つのみ・・・

CursorのAI

シンプルなEAスケルトンを Main.mq5 に用意しました。内容は次のとおりです。

構成

#property strict と #include <Trade\Trade.mqh> で CTrade を使用

Input パラメータ

InpMagicNumber(既定: 123456)

InpLots(既定: 0.01)

OnInit

  • CTrade::SetExpertMagicNumber() でマジック番号を設定
  • SetTypeFillingBySymbol(_Symbol) で約定タイプをシンボルに合わせて設定(失敗時は IOC)

OnTick のテスト処理

  • 新規足が立ったときだけ ランダムに Buy または Sell を 1 回発注(動作確認用)
  • 同じマジックでポジションが既にあるときは発注しない(連続建玉を防ぐ)
  • ロットは NormalizeLots() でシンボルの最小・最大・ステップに合わせて正規化
  • 成行で SL/TP は 0(未使用)

補助

  • HasMyPosition() … このEA(同じマジック)のポジション有無を判定
  • NormalizeLots() … ロットを銘柄仕様に合わせて正規化

MT5 の MetaEditor で コンパイル (F7) すれば ex5 が生成されます。バックテストで「新しい足ごとにランダムで Buy/Sell が 1 回ずつ出る」ことを確認できます。本番用ロジックに差し替える場合は、DoRandomTradeTest() の呼び出しを削除し、その中身を Wyckoff のシグナル処理などに置き換えてください。

つくる人

完了! 1分くらいでした空っぽのファイルに120行くらいのコードを描いてもらいました。

実行テスト

STEP
MetaEditorを開く。

コードができたら保存し、MT5上で F4キー を押してMetaEditorを開きます。

XMMT5の画面でF4を押すと新しいウィンドウが開きます
STEP
コンパイル実行

Main.mq5 を開き、F7キー(コンパイル)を押します。エラーがなければ完了です。
(エラーが出た場合、エラー文をCursorに貼り付けて修正させます。

F7か ビルド>コンパイル

ウィンドウの下部に実行した結果が表示されます。”0errors”だったらOK!

STEP
ストラテジーテスターでテスト

MT5の「ストラテジーテスター(Ctrl+R)」を開き、銘柄(USDJPYなど)を選んでスタートし、注文が出るか確認してください。

画面開いたら単一をクリック

もろもろ画面を入力したら、スタート!

動作テスト結果

2025/01/01 ~ 2026/01/01のゴールドで動作確認を行いました。
タブの切り替えできちんと動作しているかチェックしてみます。

つくる人

数字がついているという事は動作はOKだね

つくる人

グラフもばっちり!右肩下がりだ!

ベース段階でこの結果はすごいです。
つまり、逆でトレードしたら、しっかり右肩上がりになるってことですよね
手順の4:ワイコフ・ロジックの実装(段階的アプローチ)は長い連載になりそうです。また別の記事で!

つくる人

単純にはいかないだろうけど、環境設定はかなり早くにおわったね。
これからは手法のブラッシュアップだ!

よかったらシェアしてね!
  • URLをコピーしました!
目次