「ChatGPTに指示すればEAが作れるらしい。プログラミングの経験はないけれど、それなら自分の手法をそのまま自動化できるのではないか」
こういった疑問に答えます。
生成AIが肩代わりできるのは、人間が決めたことをコードへ翻訳する工程だけです。何を根拠に買い、どこで損切りし、どの条件で止めるか。この売買ロジックは今も自分で決めて、自分で検証する領域として残ります。工程はロジックの言語化、コード化、バックテスト、フォワードテスト、稼働の5つで、生成AIが主役になるのは2番目だけ。後述の前提で試算すると、週5時間の投下で稼働開始までおよそ8か月、投下時間118時間と現金支出4万4,360円という規模になります。
なお、作ったEAを動かせるかどうかは、着手より前の段階で口座側の条件によって決まります。取引単位や取引時間、自動売買の扱いを横並びで確かめたい方は主要FX会社を条件別に比較したページに一覧があるので、作り始める前に候補を絞っておくと手戻りが減ります。
| 論点 | この記事の答え |
|---|---|
| 生成AIに任せられること | 決めた仕様のコード化、エラーメッセージの解読、関数の説明 |
| 生成AIに任せられないこと | エントリー根拠、損切り位置、検証期間の選択、稼働の可否判断 |
| 工程の数 | 5つ。言語化、コード化、バックテスト、フォワードテスト、稼働 |
| 最初にやること | ロジックを日本語で数値まで落とす。コードを書くのはそのあと |
| バックテストの位置づけ | 落とすための試験。良い成績は合格の証明にならない |
| 過去データの限界 | ティック生成モードと履歴の入手元で同じEAでも結果が変わる |
| フォワードテスト | 最低3か月。見るのはバックテストとの乖離だけ |
| 約款上の扱い | 自作でも「取引システム以外のツール」に該当しうる |
| 1年目の見積もり | 投下時間118時間、現金支出4万4,360円、稼働まで約8か月 |
生成AIが書けるのはコードであって、売買ロジックそのものではない
まず言葉を分けておきます。EAを作る仕事は「売買ロジックを決めること」と「コードを書くこと」の2つに分かれ、両者は性質がまったく違います。
売買ロジックは、どの通貨ペアで、どんな状態のときに買い、どこで損切りし、いつ止めるかという決定の集合。コードは、その決定を機械が読める文法で書き直したものにすぎません。
EAを書く言語であるMQL5について、開発元は「テクニカル指標、取引ロボット、ユーティリティアプリケーションを開発するために設計された高水準言語」と定義し、エキスパートアドバイザーを「チャートに紐づけられた自動売買システム」と説明しています(MetaQuotes「MQL5リファレンス(公式ドキュメント)」)。定義に「相場を予測する」とは一言も書かれていません。
つまりEAは、判断の中身を持っていない実行装置。判断は外から与える必要があります。
生成AIが得意なのは、このうち後者のほう。与えられた仕様を、文法どおりの文字列へ変換する作業です。「20期間の移動平均を上抜けたら買い」と伝えれば、そのコードは高い精度で返ってきます。
では、その「20期間」はどこから来たのか。なぜ25でも50でもなく20なのか。ここに答えられるのは自分だけで、生成AIに聞けば、聞き方しだいでどんな数字でももっともらしく返ってきます。
私はここを線引きの中心に置いています。生成AIに渡せるのは、根拠が決まったあとの実装。根拠そのものを外注した瞬間、そのEAは誰も理由を説明できない発注機になります。
EAの自作は5工程で、生成AIが主役になるのは2番目だけ
工程ごとに、任せられる範囲と任せられない範囲を切り分けたのが次の表です。自作を検討する段階で、この表だけ手元に置いておけば道に迷いません。
| 工程 | 必要なもの | 生成AIに任せられる範囲 | 任せられない範囲 |
|---|---|---|---|
| 1. ロジックの言語化 | 対象通貨ペアと時間足、条件を書き出す紙 | 曖昧な表現の指摘、条件の抜けや矛盾の洗い出し | 何を根拠にエントリーするかの決定、損切り幅の決定 |
| 2. コード化 | 開発環境、MQLまたはPythonの基礎 | 仕様どおりのコード生成、エラーの解読、関数の説明 | 生成物が仕様と一致しているかの読み合わせ |
| 3. バックテスト | ヒストリカルデータ、検証ツール | 結果の集計、指標を計算する補助コードの作成 | 検証期間とティック生成モードの選択、採否の判断 |
| 4. フォワードテスト | デモまたは少額の実口座、常時稼働環境 | ログの整形、想定値と実測値の一覧化 | 継続か中止かの判断、乖離の原因の切り分け |
| 5. 稼働と監視 | VPS、EAの稼働を認める口座 | 稼働状況を通知する補助スクリプトの作成 | 停止の判断、約款上の可否確認、損失の責任 |
右の2列を縦に読むと、傾向がはっきり出ます。生成AIが引き受けているのは、すべて「作業」に分類される仕事。残っているのは、すべて「決定」に分類される仕事です。
工程3と工程4の右端に注目してください。バックテストもフォワードテストも、AIが計算や集計を助けてはくれますが、結果を見て採用するか捨てるかを決めるのは人間のままです。
「AIが判断まで代わってくれる日が来るのでは」と思うかもしれません。仮にそうなったとしても、損失を負うのは口座の名義人であって、AIではありません。判断が自分に残るという構造は、技術の進歩とは別の理由で動かないということ。
最初にやるのは言語化で、日本語で数値まで落ちない条件はコードにならない
自作でいちばん多いつまずきは、工程1を飛ばしてコード生成から始めてしまうことだと思います。
裁量で使っている手法を頭の中から取り出すと、多くの場合「押し目で買う」「危なくなったら逃げる」といった言葉になります。人間同士なら通じますが、この状態では生成AIも正確なコードを返せません。
やることは単純で、決める項目を並べて、右へ数値に置き換えていく作業です。
| 決める項目 | ありがちな書き方 | コードにできる書き方 |
|---|---|---|
| 対象と時間足 | ドル円で | 米ドル/円の5分足、日本時間9時から翌3時のみ稼働 |
| エントリー条件 | 上昇トレンドの押し目 | 終値が20期間移動平均を上抜け、かつ直前3本が陰線でない |
| 損切り | 適当なところで切る | エントリー価格から0.30円の逆行で成行決済 |
| 利確 | 伸ばせるだけ伸ばす | 含み益0.45円で決済。損切り幅の1.5倍で固定 |
| 数量 | 資金に応じて | 1,000通貨で固定。勝敗による増減はしない |
| 同時保有 | 状況を見て | 1ポジションのみ。決済までは新規を出さない |
| 1日の停止条件 | 危なくなったら止める | 当日の確定損失が3,000円に達したら新規を停止 |
| 稼働除外 | 指標のときは避ける | 米雇用統計の発表前後30分は新規を出さない |
右の列まで書き切れた項目だけが、コードになります。書き切れなかった項目は、まだ自分でも決まっていないということ。
損切り0.30円という数字の意味も確認しておきます。日本銀行の外国為替市況によると、2026年7月21日17時時点の米ドル/円は162.59-60円でした(日本銀行「外国為替市況(日次)」)。このレートで0.30円は約0.18%の値幅にあたり、1,000通貨なら1回の損失は300円です。
停止条件を3,000円に置いたということは、1日に10回連敗したらその日は終わりという設計。ここまで決めて初めて、生成AIに渡せる仕様書になります。
逆に言えば、この8項目を埋める作業に生成AIはほとんど関与できません。埋められるのは、自分の相場観を持っている人だけです。
MQLとPythonの選択は、どの口座につなぐかで先に決まる
言語をどちらにするか迷う方は多いはずですが、判断材料は好みではなく接続先です。
MQL5はMetaTrader上で動かす前提の言語で、開発元は「自動売買戦略や各種金融市場の分析用カスタムテクニカル指標を記述するためのオブジェクト指向高水準プログラミング言語」と説明し、構文がC++に近いことも明記しています(MetaQuotes「MQL5 Language Basics(言語の基礎)」)。取引プラットフォームに検証環境と実行環境が最初から揃っている点が最大の利点です。
一方のPythonは、言語としての学習コストが低く、集計やグラフ化の道具も豊富。ただし発注するには、口座を持つ会社が提供する接続手段が要ります。ここが分かれ目になります。
| 比較項目 | MQL(MetaTrader上で動かす) | Python(外部から接続する) |
|---|---|---|
| 検証環境 | プラットフォーム内蔵のテスターを使える | 自分で用意する。データ整備も自前 |
| 発注までの経路 | プラットフォームがそのまま発注する | 会社が用意する接続手段が必要 |
| 使える口座 | MetaTraderを提供する会社に限られる | 接続手段を公開している会社に限られる |
| 向いている用途 | 1本のEAを組んで動かし続ける | 複数条件の集計、検証、分析の自動化 |
| つまずきやすい点 | 言語の学習に時間がかかる | 接続先を探すうちに国内で候補が尽きる |
最後の行が現実的な壁になります。Pythonでの自作を調べていくと、接続手段を公開している業者として海外の名前が並ぶ場面に出会うはずです。
ここは慎重にいきましょう。無登録の海外所在業者は日本の規制を上回る高いレバレッジを宣伝文句に勧誘しており、トラブルが起きても業者への追及は極めて困難だと当局が注意を促しています(金融庁「無登録の海外所在業者による勧誘にご注意ください」)。寄せられている相談は、出金の拒否、法外な出金手数料の請求、突然連絡が取れなくなるといった中身。投資者保護の態勢を当局が確認できないとも明記されています(金融庁「無登録業者との取引は要注意」)。自作で手に入れたいのはコードを動かす自由度であって、資金が戻らない可能性ではないはずです。
自作の技術的な自由度を優先した結果、口座を登録のない業者に移すのでは本末転倒です。接続先は金融庁の登録を受けた業者から選び、その範囲で使える言語を決める。順番はこちらだと考えています。
バックテストで良い成績が出ることと、将来通用することは別の話
ここがこの記事でいちばん伝えたい部分です。バックテストは、EAを合格させるための試験ではありません。落とすための試験だと考えてください。
理由は3つあります。順に見ていきます。
1つ目は、検証条件を自分で選べてしまうこと。MetaTrader 5のストラテジーテスターには複数のティック生成モードがあり、公式ヘルプは「全ティック」を「最も正確だが最も遅いモード」、「実ティックに基づく全ティック」をブローカーが蓄積した実際のティックを使い「シミュレーションを行わない」モードと説明しています。「1分足OHLC」では各1分足の4本値だけが再現され、「始値のみ」では始値だけがテストに使われます(MetaQuotes「MetaTrader 5ヘルプ Strategy Testing(ストラテジーテスト)」)。
| ティック生成モード | 公式ヘルプの説明 | 成績に出る歪み |
|---|---|---|
| 実ティックに基づく全ティック | 実際のティックを使い、シミュレーションを行わない | 入手できる期間と品質が会社ごとに違う |
| 全ティック | すべてのティックを模擬する。最も正確だが最も遅い | 模擬された値であり、実際の約定履歴ではない |
| 1分足OHLC | 各1分足の4本値だけを模擬する | 1分の中の上下動が消え、損切りが素通りする |
| 始値のみ | 4本値を作るが、テストには始値だけを使う | 最も甘く出やすく、最も速い |
| 数学計算 | 履歴も銘柄情報も読み込まず、ティックも生成しない | 売買の検証には使わない |
同じEA、同じ期間でも、選ぶモードによって成績は変わります。しかも粗いモードほどテストが速く終わるため、試行回数を稼ぎたいときほど粗い側へ流れやすい。
2つ目は、データの出どころが自分の口座に依存すること。公式ヘルプによれば、テスターは取引サーバーから対象銘柄の1分足とティックデータを端末へ落とし、そこから圧縮してテストエージェントへ渡します。履歴が足りない場合は、要件を満たす直近の時点まで開始日を自動的に前倒しすると明記されています(MetaQuotes「MetaTrader 5ヘルプ 履歴データの取得方法」)。20年分を検証したつもりが、実際には手元にある分しか使われていないことがあるということ。
3つ目は、過去の値動きが生まれた環境そのものが変わっている点です。金融先物取引業協会によると、顧客証拠金の区分管理が信託へ一本化されたのは2010年2月1日、証拠金率が4%以上となったのは2011年8月1日以降でした(金融先物取引業協会「FX取引の規制について」)。それ以前の値動きは、いまとはレバレッジ環境も保全の仕組みも違う市場が作ったものです。
そのうえで、いちばん厄介なのが過剰最適化です。パラメータを1つ増やすたび、過去データへの当てはまりは良くなります。移動平均の期間、利確幅、時間帯フィルター、曜日フィルター。条件を足せば足すほど、資産曲線はきれいな右肩上がりに近づいていきます。
きれいになったのは、EAの実力ではなく、過去への合わせ込みの精度。この2つを見分ける方法として、私は次の4点を確認しています。
- パラメータを1割動かしただけで成績が崩れないか(崩れるなら合わせ込み)
- 検証期間の開始と終了を1年ずらしても傾向が保たれるか
- 取引回数が十分にあるか(数十回では偶然と区別が付かない)
- スプレッドを1銭広げた設定でも生き残るか
4つすべてを通過しても、将来の成績は何ひとつ保証されません。通過しなかったEAを落とせるだけです。ここは期待を込めずに読んでください。
フォワードテストは3か月を最低ラインに置き、乖離だけを見る
バックテストを通過したら、次は前を向いて動かします。過去に対して最適化されていない期間で、同じ挙動が出るかを確かめる工程です。
ここで見るのは利益ではありません。バックテストの想定値と、実際の結果との差だけを見ます。
| 記録する項目 | 想定値の出どころ | 差が出たときに疑うこと |
|---|---|---|
| 1回あたりの平均取得幅 | バックテストの平均利益 | スプレッドとスリッページの設定が甘かった |
| 約定価格と注文価格の差 | 想定スリッページ | 稼働時間帯が流動性の低い時間に寄っている |
| 取引回数 | バックテストの月間取引回数 | 稼働の停止や接続断が起きている |
| 最大の連敗数 | バックテストの最大連敗 | 相場つきがテスト期間と変わった |
| 稼働率 | 24時間から除外時間を引いた時間 | VPSや回線の問題で発注機会を落としている |
差が出たときに最初に疑うべきはスプレッドです。ヒロセ通商は米ドル/円のスプレッドを、AM9:00から翌AM3:00までが0.2銭、AM3:00からAM9:00までが5.9銭と時間帯別に公表しています(ヒロセ通商「LION FXスプレッド情報」)。同社は流動性の低い時間帯や指標発表時等には広がる場合がある旨も注記しています。※2026年7月時点。最新の条件は公式サイトで確認してください。
言語化の章で置いた利確0.45円という設計に当てはめてみます。1,000通貨なら1回の利益は450円。0.2銭の時間帯ならスプレッド負担は2円で利益の0.4%ですが、5.9銭の時間帯では59円となり、13.1%を持っていかれる計算です。バックテストでスプレッドを一律0.2銭に固定していたなら、深夜に約定するEAの成績は最初から実態とずれていたことになります。
期間はどれくらい必要か。私は3か月を最低ラインに置いています。1か月では相場つきが1種類しか含まれず、良くも悪くもたまたまの結果になりやすいからです。
そして、この3か月のあいだにコードを直したくなったら、フォワードテストは最初からやり直し。直した瞬間、それは別のEAだからです。ここを曖昧にすると、検証と改良が混ざって何も確かめられなくなります。
自作したEAも、約款上は「取引システム以外のツール」に該当しうる
自作なら約款の話は関係ない、と考えている方がいたら、そこは切り分けが必要です。約款が見ているのは誰が作ったかではなく、どう動かしているかのほうだからです。
外為どっとコムは取引約款に抵触する行為を5類型で公表しており、そのひとつとして、方法の如何を問わず自動売買プログラムや端末機器のプログラム改変等を含む、同社が提供する取引システム以外のツール等を使用した取引を挙げています(外為どっとコム「取引約款に抵触する行為」)。この記載に、市販か自作かという区別はありません。
正確に読めば、5類型はいずれも「他のお客様または当社のシステムもしくはカバー取引等に著しい悪影響を及ぼす行為」であることが要件とされています。自作EAを起動した瞬間に違反が確定する書き方ではない、という点は押さえておいてください。
ただし、抵触が確認されたときには契約の解除や取引の制限を実施できるとも定められています。著しい悪影響があったかどうかを見極める立場にいるのは会社であって、コードを書いた本人ではありません。
JFXの説明はもっと直接的です。スキャルピングを理由に口座凍結することはないと明言したうえで、システム売買など約款で禁止する行為が確認された場合は同社規定に基づき口座凍結する場合があると書かれています(JFX「スキャルピングならJFX」)。短期売買と自動売買が別の扱いになっている好例です。
そして条件は会社ごとに違います。金融先物取引業協会の店頭FX月次速報によれば、2026年6月30日現在の取扱会員は46社(金融先物取引業協会「店頭FX月次速報」)。46通りの約款があると考えるのが実態に近く、横並びの正解はありません。
だから工程5の前ではなく、工程1の前に確認してください。動かせない口座に向けて8か月かけて作るのが、いちばん避けたい結末です。
自作にかかるのは118時間と4万4,360円で、無料ではない
自作の魅力として語られるのは「購入費がかからない」という点。ここを数字にしておきます。
前提を先に固定します。プログラミング未経験者が週5時間を投下、学習対象はMQLの基礎と検証ツールの操作、生成AIは有料プランを月3,000円、VPSは2GBクラスの実勢に合わせて月2,000円、外部のヒストリカルティックデータを1万円で1回購入、フォワードテストは1,000通貨で1日3回・月20営業日・3か月、時間の機会費用は時給1,500円で換算しました。
| 工程 | 想定時間 | 週5時間なら |
|---|---|---|
| ロジックの言語化 | 10時間 | 2週 |
| 言語と開発環境の学習 | 40時間 | 8週 |
| コード化とデバッグ | 25時間 | 5週 |
| バックテストと条件の練り直し | 30時間 | 6週 |
| ここまでの小計 | 105時間 | 21週(約4.8か月) |
| フォワードテスト(週1時間の点検を13週) | 13時間 | 13週(3か月) |
| 合計 | 118時間 | 約8か月 |
フォワードテストの13週は、作業時間ではなく待ち時間が本体です。ここを短縮しようとすると検証の意味が消えるため、8か月という数字はほぼ圧縮できません。
次に現金支出。
| 費用項目 | 単価 | 期間・回数 | 金額 |
|---|---|---|---|
| 生成AIの有料プラン | 月3,000円 | 8か月 | 24,000円 |
| VPS | 月2,000円 | 5か月 | 10,000円 |
| 外部ヒストリカルティックデータ | 10,000円 | 1回 | 10,000円 |
| フォワードテストの往復スプレッド | 1往復2円 | 180往復 | 360円 |
| 現金支出の合計 | 44,360円 |
スプレッドの行を検算します。1,000通貨なら1銭の値動きが10円なので、0.2銭は2円。1日3回、月20営業日、3か月で180往復だから360円です。1,000通貨での検証なら、直接の取引コストは驚くほど小さい。
VPSの5か月は、フォワードテストの3か月と稼働開始後の2か月を見込んだ数字です。フォワードテストをデモ口座で行う場合、スプレッドの360円はかかりません。
ここで時間を金額に置き換えます。118時間 × 1,500円 = 17万7,000円。現金支出と合わせると22万1,360円。
数字が出そろったところで、読み替えましょう。現金だけを見れば4万4,360円で済み、市販EAを1本買うより安く見えます。ところが時間を勘定に入れた瞬間、合計は22万円台に届く。自作は無料になるのではなく、支払い方が現金から時間に変わるだけだということ。
正直に言えば、月に数回しか相場を見ない人が118時間を投じる合理性は薄いと思います。自作が向いているのは、すでに裁量で反復している手法があり、その執行だけを機械に移したい人。ゼロから手法を探す道具としては、割に合いません。
市販EAと比べたうえで判断したい方は、購入前に検証できる数字とできない数字を整理したEAの選び方とランキングの見方をまとめた記事を先に読んでおくと、自作との損得を同じ物差しで並べられます。
EAの自作でつまずく人が抱える5つの疑問
工程と費用の輪郭はここまでで出ました。とはいえ、実際に手を動かし始めると細かい迷いが出てくるはずです。検索でよく調べられている5つに答えます。
ChatGPTだけでEAは作れますか?
コードは出てきます。ただし、その前段にある売買ロジックは自分で決める必要があります。
「勝てるEAを作って」と頼めば、それらしいコードは返ってくるでしょう。しかし、なぜその条件なのかを説明できる根拠は付いてきません。根拠のないEAは、成績が落ちたときに直す手がかりがゼロになります。
EAの自作はPythonとMQLのどちらから始めるべきですか?
つなぐ口座から逆算してください。MetaTraderを使う口座ならMQL、外部から接続する手段が用意されている口座ならPythonという順番です。
言語の優劣で選ぶと、書けたのに発注できないという結末になります。金融庁の登録を受けた業者の中で、どの経路が使えるかを先に確認するほうが確実。
プログラミング未経験でもEAを自作できますか?
できますが、本記事の前提では学習だけで40時間を見込んでいます。生成AIがあってもゼロにはなりません。
理由は、コードを書けることと、返ってきたコードが仕様どおりか確かめられることが別の能力だからです。読めない状態で動かすと、想定と違う建玉が積み上がっても気づけません。
バックテストの成績はどのくらいなら合格ですか?
合格ラインを数字で置くこと自体をおすすめしません。パラメータを増やせば、どんな水準の成績でも過去データ上は作れてしまうからです。
見るべきは水準ではなく頑健性のほう。パラメータを1割ずらす、期間を1年ずらす、スプレッドを1銭広げる。この3つを通り、なおかつ取引回数が偶然と区別できる程度に積み上がっているか。本文で挙げた4点で判断してください。
自作したEAなら、どの口座でも動かせますか?
いいえ。自作でも約款上は「取引システム以外のツール」に該当しうるため、口座ごとに扱いが分かれます。
判断に迷うときは、稼働させる前に会社へ照会して、回答を保存しておいてください。作ったあとで動かせないと分かるのが、この分野でもっとも損失の大きい失敗です。
EAの自作は、コードを書く前にどれだけ言語化できたかで決まる
自作の成否を分けるのは、プログラミングの習熟度ではありません。自分の売買ロジックを、他人が読んで同じ判断を再現できる形まで書き下ろせるかどうかです。そこさえ通れば、コード化は生成AIと一緒に片付きます。
- 生成AIに渡せるのは実装で、エントリー根拠と損切り位置の決定は自分に残る
- 工程は言語化、コード化、バックテスト、フォワードテスト、稼働の5つ
- バックテストは落とすための試験で、良い成績は将来の通用を保証しない
- フォワードテストは3か月を最低ラインとし、利益ではなく想定値との乖離を見る
- 週5時間なら稼働まで約8か月、投下時間118時間と現金支出4万4,360円
まず紙に8項目を書き出してみてください。埋まらない欄が残るなら、それは技術ではなく手法の問題です。
次に読むなら、自作の対極にある選択肢の検証をおすすめします。相場予測そのものを機械に任せる方式が実際どこまで届いているかを整理したAI自動売買の実力と限界をまとめた記事で、任せられる範囲の線をもう一段確かめてみてください。

