FX自動売買プログラムを自作したいと考えたとき、最初にぶつかるのは「MQL5なのかPythonなのか、ノーコードでもできるのか」という選択肢の多さです。本記事では自作のアプローチを4タイプに整理し、それぞれの難易度・コスト・自由度を横並びで比較します。最小サンプルコード、過剰最適化の罠、法令・税務面の整理まで踏み込み、「自分はどれから始めるべきか」を判断できる材料を提供します。私自身もFX口座開設前の立場で、自動売買プログラムの自作方法を整理している段階です。同じく自作を検討している方の参考になれば幸いです。
FX自動売買プログラムの「自作」とは?最初に整理しておきたい用語と全体像
「FX自動売買プログラムを自作する」と一口に言っても、その意味は使う人によって幅があります。最初に用語と全体像を整理しておくと、その後の選択肢比較がスムーズになります。
本記事では「自作」を「自分のロジックを反映したプログラムを、自分で動かせる状態にすること」と広く定義します。コードを1から書く方法だけでなく、ノーコード・AI生成も含めて整理します。
EAと自動売買プログラムの関係
FXで「自動売買プログラム」と言うと、多くの場合は EA(Expert Advisor、エキスパートアドバイザー) を指します。EAは MetaTrader 4/MetaTrader 5(以下 MT4/MT5)というFX取引プラットフォーム上で動くプログラムの総称です。
ただし「自動売買プログラム」はEAだけを指す言葉ではありません。MT4/MT5を使わず、Pythonなどの汎用言語からFX会社のAPI(Application Programming Interface、外部からシステムを操作するための窓口)を直接叩いて売買する方式も、立派な自動売買プログラムです。
検索キーワード「FX自動売買プログラム 自作」には、これら両方を意識している方が含まれます。本記事ではどちらも対象に含めて整理します。
自作の4つのアプローチ(先出し)
本記事では、自作のアプローチを以下の4タイプに分けて比較します。
- アプローチ①:ノーコード型ビルダー(EAつくーる等のEA作成支援ツール)
- アプローチ②:ChatGPT・AI生成型(自然言語でロジックを伝えてMQLコードを生成)
- アプローチ③:MQL5コーディング型(MT5標準ルート)
- アプローチ④:Python+業者API型(OANDA Japan等のREST APIを利用)
それぞれの詳細は後の章で順に取り上げます。まずは「自作にはこれだけの選択肢があり、自分の状況に合うものを選べばよい」という地図を頭の中に描いておくと、後の比較が読みやすくなります。
自作と既製EA・シグナル配信の違い:なぜ自分で作るのか
自作を検討する方の多くは、市販EAやシグナル配信に対して「ロジックがブラックボックスで信頼できない」「設定通り動いているのか確認できない」という不信感を持っています。自作はその不信感への一つの回答ですが、デメリットも併せて把握しておく必要があります。
自作の4つのメリット
- ロジックがブラックボックスにならない:自分が書いたコードなので、なぜそのタイミングで売買したのかを後追いで完全に検証できる
- 自分のトレードルールを反映できる:裁量で意識している条件を、そのままコードに落とし込める
- 修正・改良が自由:相場環境の変化に応じて、ロジックを自分で書き換えられる
- 学習価値が高い:FX × プログラミング × データ分析が同時に身につく
自作の4つのデメリット
- 時間コスト:シンプルなロジックでも数十時間、本格的なEAなら数百時間規模の学習・実装が必要になる
- バグ・誤発注のリスクは自己責任:意図しない注文が出た場合の損失も自分が負う
- 運用環境のランニングコスト:VPS(仮想専用サーバー、24時間EAを動かすためのレンタルサーバー)等を使う場合、月額1,000円〜数千円が継続的にかかる(2026年5月時点。Windows VPSはRDSライセンス費込み)
- 「動くコード」と「運用に耐えるEA」のギャップ:コンパイルが通って動くだけでは不十分で、検証の段階を踏まないと致命的な損失につながる
自作と勝率は別問題:誤解しやすいポイント
最も誤解されやすいのが、「自作したEAなら勝てる」という期待です。結論としては、自作と勝率は直接関係しません。
市販EAも自作EAも、勝てる/勝てないを分けるのは「ロジックの設計」「リスク管理」「相場環境への適合」です。自作することで自動的に勝率が上がるわけではありません。むしろ自作の場合、勝てるロジックを発見・維持する責任がすべて自分側にある分、難易度はやさしくありません。
「自作 = 勝てる」ではなく「自作 = ロジックを把握できる・改良できる」と捉えるのが健全です。勝てるかどうかは、設計と検証フローで決まります。
自作の4アプローチ徹底比較(コスト・難易度・自由度・運用環境)
本記事の主題となるセクションです。先ほど挙げた4つのアプローチを横並びで比較し、それぞれの特徴を整理します。
比較表:4アプローチを一目で
主要な評価軸を1枚に整理すると次のようになります。
| 項目 | ①ノーコード | ②AI生成 | ③MQL5 | ④Python+API |
|---|---|---|---|---|
| 必要な言語 | 不要 | 不要〜MQL基本 | MQL5 | Python |
| 初期費用 | 数千〜数万円 | 0円〜(API課金) | 0円 | 0円 |
| 学習時間目安 | 数時間〜 | 数時間〜 | 数十〜数百時間 | 数十時間〜 |
| 自由度 | 低 | 中 | 高 | 高 |
| 運用環境 | MT4/MT5 | MT4/MT5 | MT4/MT5 | 自前サーバ/VPS |
| デバッグ難易度 | 低 | 中 | 中〜高 | 中〜高 |
| 機械学習との相性 | 低 | 中 | 中(要変換) | 高 |
数字や難易度はあくまで目安です。「学習時間」は自身の経験値や習熟度に大きく依存するため、自分の状況に当てはめて読み替えてください。
アプローチ①:ノーコード型ビルダー(EAつくーる等)
マウス操作でテクニカル指標やパラメータを組み合わせ、コードを1行も書かずにEAを生成するタイプのツールです。代表例は「EAつくーる」など。移動平均線・RSI・MACD・ボリンジャーバンドといった主要なテクニカル指標を選択肢から指定できる構造になっています。
メリットは、プログラミングを学ばずに自分のシンプルなトレードルールを自動化できる点です。デメリットは、ツール側が用意した部品を超える複雑なロジックは作れない点と、ツールに依存するためサポート終了等のリスクがある点です。
向く人:プログラミング未経験で、シンプルな売買ルール(指標Aと指標Bがクロスしたらエントリー、等)を自動化したい方。「とりあえず動くものを早く触ってみたい」方。
アプローチ②:ChatGPT・AI生成型
自然言語でロジックを伝え、AIにMQL4/MQL5のコードを書かせる方法です。2026年5月時点では、ChatGPT・Claude・Geminiなどの大規模言語モデルがコード生成タスクをこなせるようになり、EA開発でも活用例が広がっています。
メリットは、MQLの基礎が浅くても叩き台のコードを得られる点と、設計と実装のサイクルを高速に回せる点です。一方で、生成されたコードに細かなバグや論理的な抜け漏れが含まれることは珍しくありません。最終的にはコードを読んで検証できる力が必要になります。
AI生成型は「コードを完全に丸投げできる」手段ではありません。生成コードのレビューとテストは利用者側の責任です。複雑な条件分岐や状態管理を伴うロジックでは、生成精度が落ちることも多い点に注意が必要です。
向く人:MQL5の習得をAIに伴走してもらいたい方、すでにAIツールに慣れていて自然言語での仕様伝達が得意な方、ノーコードでは物足りないがゼロから書くのは負担という方。
アプローチ③:MQL5コーディング型(MT5の標準ルート)
MetaTrader 5に付属する開発環境「MetaEditor」で MQL5 を書き、MT5上で動かす最も伝統的なルートです。FX自動売買のデファクトスタンダードと言える方法で、書籍・ブログ・動画など学習リソースの量も最大級です。
MQL5は MetaQuotes 社が MetaTrader 5 のために設計した言語で、文法はC++に近い特徴を持ちます。OnInit(初期化)・OnTick(価格更新時)・OnDeinit(終了時)といったイベント関数にロジックを書く構造です。
補足:MQL4とMQL5はソースコード互換性がありません。MT4で動くMQL4のEAをMT5で使うには、MQL5へリライトが必要です。これから始めるなら、新規はMQL5を選ぶのが無難です。
参考までに、価格更新時に呼ばれる OnTick 関数の最小骨組みを示します(実際の売買ロジックは省略した雛形)。
//+------------------------------------------------------------------+
//| simple_ma_cross.mq5 |
//+------------------------------------------------------------------+
input int FastPeriod = 5;
input int SlowPeriod = 20;
input double LotSize = 0.1;
int handleFast, handleSlow;
int OnInit()
{
handleFast = iMA(_Symbol, _Period, FastPeriod, 0, MODE_SMA, PRICE_CLOSE);
handleSlow = iMA(_Symbol, _Period, SlowPeriod, 0, MODE_SMA, PRICE_CLOSE);
return(INIT_SUCCEEDED);
}
void OnTick()
{
double fast[], slow[];
if(CopyBuffer(handleFast, 0, 0, 2, fast) < 2) return;
if(CopyBuffer(handleSlow, 0, 0, 2, slow) < 2) return;
// ゴールデンクロスで買い、デッドクロスで売り(雛形)
if(fast[1] > slow[1] && fast[0] <= slow[0]) {
// ここでBuy注文(実装は省略)
}
if(fast[1] < slow[1] && fast[0] >= slow[0]) {
// ここでSell注文(実装は省略)
}
}
この雛形だけではエントリー条件しか書いておらず、実運用には注文関数・損切り・利確・エラーハンドリングを足す必要があります。「コンパイルが通る」と「運用に耐える」の間にはまだ距離がある点を意識してください。
向く人:本格的に学びたい方、コードの自由度を最大化したい方、FXの自動売買コミュニティで情報共有しやすい環境を選びたい方。
アプローチ④:Python + 業者API型
PythonからFX会社が公開しているAPIを直接叩いて売買する方法です。代表例は OANDA Japan の v20 REST API で、個人でも API トークンを発行して利用できますが、発行には「Goldメンバー以上」「NYサーバー口座残高25万円以上」といった条件があります(出典:OANDA Japan 公式「APIトークンの発行手順」、2026年5月時点)。
メリットは、pandas(Pythonのデータ分析ライブラリ)や scikit-learn(機械学習ライブラリ)と統合しやすく、データ分析や機械学習モデルとの連携が自然に書ける点です。MT5を介さないため、業者依存を減らしやすいのも特徴です。
デメリットは、業者選定が必要な点です。個人向けにAPIを公開しているFX会社は限定的で、すべての国内業者が対応しているわけではありません。また、運用環境(24時間動かすサーバー)も自分で用意する必要があります。
参考までに、Pythonでローソク足を取得する疑似コードを示します(OANDA REST APIの利用イメージ)。
# 疑似コード:OANDA v20 REST API でローソク足を取得
import oandapyV20
from oandapyV20.endpoints.instruments import InstrumentsCandles
client = oandapyV20.API(access_token="YOUR_PERSONAL_TOKEN")
params = {"count": 100, "granularity": "M5"} # 5分足を100本
req = InstrumentsCandles(instrument="USD_JPY", params=params)
client.request(req)
candles = req.response["candles"]
for c in candles:
print(c["time"], c["mid"]["c"]) # 時刻と終値
これは価格取得だけの最小例で、実際の売買にはOrders エンドポイントを叩く処理が必要です。トークン管理・例外処理・レート制限(OANDA v20 APIは120リクエスト/秒、出典:OANDA公式ドキュメント、2026年5月時点)も意識する必要があります。
向く人:すでにPython経験がある方、機械学習をロジックに組み込みたい方、データ分析の延長として自動売買を捉えたい方。
自作の進め方:5ステップで整理する全体フロー
どのアプローチを選んでも、自作の流れは大きく変わりません。「動くコード」までではなく「運用に耐える状態」までを段階的に進めるのが基本です。
「いつエントリーするか」「いつ決済するか」「ロットはどう決めるか」「損切り・利確はどこに置くか」を、コードを書く前に日本語で書き出します。ここで曖昧さが残っているとコードに落とせず、後の検証でも何を見るべきか定まりません。
選んだアプローチに応じて、開発環境を整えます。MQL5 なら MT5 と MetaEditor の準備、Python なら Python 環境(仮想環境を推奨)と必要なライブラリのインストール、業者APIを使うならアカウント作成とトークン取得を済ませます。デモ口座を最初に開いておくと、後の検証がスムーズです。
STEP1で言語化したロジックをコードに落とします。最初から完成形を狙わず、まずは「エントリーだけ」「決済だけ」と機能を分割して動かすのが安全です。エラーハンドリング・ログ出力・通知の仕組みもこの段階で組み込みます。
過去データでのバックテスト、開発に使っていない期間でのフォワードテスト、デモ口座での運用を順に行います。3段階すべてで安定した結果が出てから、本番に進む流れが基本です。1段階でも崩れる場合は、ロジックの見直しに戻ります。
本番投入は少額・小ロットからスタートします。バックテストやデモでは現れなかった挙動(スプレッド拡大、約定遅延、サーバ通信エラー等)を本番環境で確認するための段階です。問題が出なければ徐々にロットを上げていきます。
STEP4の検証フェーズを省略すると、後述する「過剰最適化」の罠を踏み抜くリスクが一気に高まります。コードが動いた瞬間に本番投入するのは、自作で最も避けたい行動の一つです。
自作EAが勝てない最大の理由:過剰最適化(カーブフィッティング)の罠
「自作EAを動かしたが勝てない」という相談で最も多い原因が、過剰最適化(カーブフィッティング)です。バックテストでは右肩上がりに儲かっているのに、本番運用するとなぜか負け続けるという現象が典型的なパターンです。
過剰最適化とは
過去データに合わせ込みすぎて、未来のデータで通用しなくなる現象を指します。パラメータを細かくチューニングすればバックテストの成績はいくらでも上げられますが、それは「その期間の値動きの偶然のパターンに偶然フィットしただけ」のことが多く、未来の値動きにはフィットしません。
過剰最適化を見抜く3つのチェックポイント
- パラメータの数が多すぎないか:最適化対象のパラメータが多いほど、過去データに偶然フィットしやすい
- バックテスト期間と運用期間で成績が乖離していないか:開発期間の成績だけが良く、別期間で崩れる場合は要注意
- 異なる通貨ペア・期間で同じロジックが通用するか:1つの通貨ペア・1つの期間でしか通用しないなら、汎用性が低い可能性が高い
回避するための検証フロー
過剰最適化を避けるには、検証期間を分割して扱うのが王道です。一般的なフレームワークが下記の通りです。
- イン・サンプル期間でロジックを設計・最適化する
- アウト・オブ・サンプル期間(最適化に使わなかった期間)で結果を検証する
- フォワードテスト(開発以後に発生したリアルタイムデータ)でさらに確認する
- デモ運用で約定挙動・通信遅延を含めて確認する
バックテストが綺麗な右肩上がりでも、それが過剰最適化の結果である可能性は常にあります。バックテスト成績の見栄えではなく、検証フローを通り抜けたかで判断するのが安全です。
法令・税務面:個人が自作するときに知っておきたいこと
技術面とは別に、法令と税務の整理も自作の前に押さえておきたいポイントです。漠然とした不安があると検証や運用に集中できなくなるため、最初に明確にしておきます。
自分用に作って自分で使うのは適法か
個人が自分用に自動売買プログラムを開発し、自分の口座で動かすだけであれば、金融商品取引業の登録は不要です。これは「他人に投資判断を提供する」行為に該当しないためで、複数の弁護士・行政書士の解説でも整理されている内容です。
「自分で書いて自分で動かす」だけなら適法です。違法かもしれないと心配して開発を止める必要はありません。
販売・配布する場合の注意
作ったEAを他人に有償・無償で提供したり、シグナル配信のように使い続けてもらう形にすると、状況次第で投資助言・代理業の登録が必要になる可能性があります。
- 会員制で売買シグナルを継続的に提供する形態は、投資助言・代理業に該当する可能性が高いと整理されている
- 買い切り型でスタンドアローンに動くツールを単発販売する場合は、登録不要のケースもある
- 境界はケースバイケースで、販売を計画している場合は弁護士・行政書士に確認するのが無難
本記事は法律相談ではありません。販売・配布を本格的に検討する場合は、必ず専門家に直接確認してください。
利益が出た場合の税金(申告分離課税20.315%)
国内のFX会社で取引した場合、利益は「先物取引に係る雑所得等」として申告分離課税の対象になります。税率は一律20.315%(所得税15% + 住民税5% + 復興特別所得税0.315%)です。
出典は国税庁タックスアンサー No.1521「外国為替証拠金取引(FX)の課税関係」と、No.1522「先物取引に係る雑所得等の課税の特例」です。詳細な計算方法や申告時期は税務署または税理士へ確認することをおすすめします。
補足:海外FX業者で取引した場合は雑所得(総合課税)として扱われ、税率の構造が異なります。自作EAをどの業者で動かすかによって税の扱いが変わる点は意識しておきたいところです。
タイプ別おすすめアプローチ:あなたはどれから始めるべきか
4アプローチのいずれが最適かは、読者の状況によって変わります。プログラミング経験・FX経験・目的・許容できる学習時間で整理すると、選び方がはっきりします。
プログラミング未経験・トレードルールがある方 → ノーコード + AI生成
裁量取引で意識しているシンプルなルールを自動化したい方は、まずノーコード型ビルダーでプロトタイプを作るのが効率的です。物足りなくなった時点でAI生成を併用し、徐々にMQL5の世界に入っていく道筋が現実的です。
プログラミング経験あり・FX未経験の方 → MQL5 または Python+API
普段からPythonを書いているならPython+APIが自然です。一方、FX自動売買のデファクトを学んでコミュニティに乗りたい方はMQL5から入るのがおすすめです。最初の一歩は「デモ環境で価格取得・最小発注ができるところまで」に絞ると、迷子になりにくいです。
機械学習を組み込みたい方 → Python+API
特徴量エンジニアリング、モデル学習、推論を同じ環境で完結させたい場合、Python+APIが最も無理がない選択肢です。MQL5でも機械学習モデルを使うことは可能ですが、ONNX(Open Neural Network Exchange、機械学習モデルの標準フォーマット)等への変換が必要になり、手間が増えます。
プログラミングはやりたくない方 → 自作以外を検討する選択肢もある
「自動売買はしたいが、コードを書く・学ぶ気はない」という方には、ノーコードでも作りきれない領域があります。その場合は、市販EAを慎重に選ぶ、信頼できるコピートレードを利用する、あるいは自動売買そのものを見送るという選択も合理的です。
自作はあくまで一つの選択肢です。手段が目的化すると、本来の「相場で資金を増やす/学ぶ」という目的から外れてしまいます。自分の目的に合うアプローチを選ぶ視点を忘れないようにしたいところです。
自作で躓きやすいポイントと回避策
自作で挫折しやすい典型的なパターンを5つ整理します。事前に知っておくだけで、踏み抜く確率を下げられます。
- 失敗1:複雑なロジックを最初から作ろうとする → 最小ロジック(移動平均クロス等)から始め、動かしながら段階的に拡張する
- 失敗2:バックテスト結果を信じすぎる → フォワードテストとデモ運用を必ず通過させ、別期間・別通貨ペアで再検証する
- 失敗3:本番資金をいきなり大きく入れる → 少額から段階的に増やす。デモと本番では約定挙動が変わる前提で動かす
- 失敗4:エラーハンドリングが甘い → 通信エラー・約定失敗時の挙動と通知の仕組みを最初に組み込む
- 失敗5:運用環境が不安定 → 自宅PCではなく、安定したVPSやクラウド環境で常時稼働させる
特に「コードがコンパイルできた瞬間に本番投入」は、自作で最も避けたい失敗パターンの一つです。動くことと運用に耐えることは別問題と覚えておくと安全です。
よくある質問(Q&A)
自作の検討時に出やすい疑問を整理しました。
- 自作にどれくらいの期間が必要ですか
-
選ぶアプローチと既存スキルで大きく変わります。ノーコードなら数時間〜数日で動くプロトタイプが作れます。MQL5を未経験から学ぶ場合は数十時間〜数百時間の学習が現実的です。Python経験者がPython+APIで取り組む場合は数十時間規模が目安です。ただし、検証フェーズ(バックテスト・フォワード・デモ)の時間も別途必要になります。
- プログラミング初心者にはどのアプローチが一番取り組みやすいですか
-
ノーコード型ビルダーが最も取り組みやすい入口です。「動くものを早く触ってみる」目的なら最適です。ただし作れるロジックの幅は限定的なので、慣れてきたらAI生成型を併用しながらMQL5へステップアップしていくと自由度が上がります。
- ChatGPTで作ったEAは本当に動きますか
-
シンプルなロジックであれば、生成されたコードがそのまま動くケースもあります。ただし複雑な条件分岐や状態管理を含むロジックでは、生成精度が落ちて修正が必要になることが多いです。生成コードのレビューとテストは利用者側の責任になる点を念頭に置いてください。
- MQL4とMQL5、どちらを学ぶべきですか
-
これから始めるならMQL5が無難です。MetaTrader 5 が現行の主力で、MetaQuotes社のサポートもMQL5に集中しています。MQL4とMQL5はソースコード互換性がないため、MT4のEAをMT5で使うにはリライトが必要になります。
- 自作EAを販売することはできますか
-
販売形態によります。会員制で継続的にシグナルを提供する形は投資助言・代理業の登録が必要になる可能性が高いと整理されています。一方、買い切り型でスタンドアローンに動くツールの単発販売は、登録不要のケースもあるとされます。境界はケースバイケースのため、本格的に販売を検討する場合は弁護士・行政書士へ直接確認するのが安全です。
- バックテストで勝てれば本番でも勝てますか
-
断言はできません。バックテストの好成績が「過去データに偶然フィットしただけ」のケースは多く、これが過剰最適化と呼ばれる現象です。アウト・オブ・サンプル期間での検証、フォワードテスト、デモ運用を順に通過させてから、本番に移すのが安全な手順です。
- 国内FX会社でPython APIを使える業者はありますか
-
個人向けにAPIを公開している業者は限られます。代表例として OANDA Japan の v20 REST API が個人でもトークン発行可能で、Pythonからの利用例も豊富です。ただし発行には「Goldメンバー以上」「NYサーバー口座残高25万円以上」といった条件があります(2026年5月時点、OANDA Japan 公式)。他社の対応状況は変わる可能性があるため、利用予定の会社の公式情報を都度確認してください。
- 自作の運用にVPSは必須ですか
-
必須ではありませんが、24時間365日稼働させたい場合は推奨されます。自宅PCで動かすと、停電・OSアップデート・ネット回線の切断で停止リスクがあります。MT5系EAを動かす場合はFX会社が提供するVPSサービスを利用するケースもあります。Python+API構成ならクラウド(AWS・GCP・さくらのクラウド等)の常時稼働インスタンスを使う選択肢もあります。
まとめ:FX自動売買プログラムの自作は「アプローチ選び × 検証フロー」で決まる
FX自動売買プログラムの自作は、ノーコード/AI生成/MQL5/Python+APIの4アプローチに整理できます。それぞれ難易度・コスト・自由度・運用環境が異なり、自分のプログラミング経験・目的・許容できる学習時間で選ぶのが基本です。
本記事のキーメッセージを一言で:「動くコードを書くこと」より「検証フローを通過させること」が自作の本質です。アプローチ選びはスタート地点に過ぎません。
合わせて確認しておきたい論点が3つあります。1つ目は自作と勝率は別問題であること。自作することで自動的に勝率が上がるわけではありません。2つ目は過剰最適化の罠。バックテストの成績だけで判断せず、検証期間を分割し、デモ運用まで通すのが安全です。3つ目は法令・税務面。個人が自分用に作って自分で使うのは適法で、利益が出た場合は申告分離課税20.315%の対象になります(国税庁タックスアンサー No.1521 / No.1522)。
本記事が、FX自動売買プログラムの自作という選択肢を比較・判断する材料になれば幸いです。