はじめに
EA(自動売買プログラム)を運用していると、
「エントリーが多すぎる」「決済が早い」「もう少し精度を上げたい」──そんな悩みが出てくると思います。
実は今、ChatGPTを使えばこうしたEAの“改良”を誰でも簡単に行える時代です。
プログラミングが苦手でも、ChatGPTに「この条件を追加して」「決済をEMAクロスに変えて」と伝えるだけで、修正版のコードを出力してくれます。
この記事では、ChatGPTを使ってEAのロジックを精密に仕上げる方法を実例付きで解説します。
フィルター追加・決済条件変更・ロジック調整など、初心者でも手軽にできる改良ステップをまとめました。
💡 EAを一から作るよりも、「今あるEAを改善する」方がChatGPT初心者にはおすすめです。
👉 もし、EAを1から作ってみたいという方はこちらをチェック:
▶ STEP2:ChatGPTを使ってEAを作ったらヤバすぎた|EAの作り方完全解説!
ChatGPTでEAを改良できる理由
ChatGPTはMQL4やMQL5のコード構造を理解しているため、
既存のソースコードを貼り付けて「こう修正したい」と伝えると、
修正版のEAコードを提示してくれます。
例:
「このEAにRSIフィルターを追加して、買いエントリーはRSI30以下のときだけにしてください」
「決済条件をEMAクロスに変更して」
「損切りをATR×2にして」
このように自然な言葉で指示するだけで、
複雑なロジックもChatGPTが自動で生成してくれます。
ChatGPTを使う準備(おさらい)
STEP2で説明した内容のおさらいになります。
▶ ChatGPTでEAを自動生成してみた!初心者でも作れるEA開発実例(STEP2)
ChatGPTはOpenAI公式サイトから無料で利用できます。EA改良を行うには、以下の手順でチャット環境を整えましょう。

- OpenAI公式サイトにアクセス
- GoogleまたはAppleアカウントでログイン
- 「GPT-5」などのモデルを選択してチャット開始
チャット欄にMQL4コードを貼り付け、
「このEAに〇〇を追加して」と指示するだけで改良案が得られます。

実際にEAを改良してみよう
それでは、実際の例を見てみましょう。
まず、以下のようなRSIで買いエントリーするシンプルなEAがあるとします。
void OnTick() {
double rsi = iRSI(NULL, PERIOD_H1, 14, PRICE_CLOSE, 0);
if (rsi < 30 && OrdersTotal() == 0) {
OrderSend(Symbol(), OP_BUY, 0.1, Ask, 3, 0, 0, "Buy", 0, 0, clrNONE);
}
}
ここに「移動平均線フィルターを追加したい」とChatGPTに伝えます。
(例)
以下のコードに移動平均線フィルターを追加したい。
void OnTick() {
double rsi = iRSI(NULL, PERIOD_H1, 14, PRICE_CLOSE, 0);
if (rsi < 30 && OrdersTotal() == 0) {
OrderSend(Symbol(), OP_BUY, 0.1, Ask, 3, 0, 0, “Buy”, 0, 0, clrNONE);
}
}
結果は、次のようなコードを生成してくれます👇
void OnTick() {
double rsi = iRSI(NULL, PERIOD_H1, 14, PRICE_CLOSE, 0);
double ma = iMA(NULL, PERIOD_H1, 50, 0, MODE_SMA, PRICE_CLOSE, 0);
if (rsi < 30 && Ask > ma && OrdersTotal() == 0) {
OrderSend(Symbol(), OP_BUY, 0.1, Ask, 3, 0, 0, "Buy with MA filter", 0, 0, clrNONE);
}
}
このように**「条件を追加」や「ロジックを変更」**など、
既存EAの部分改良ならChatGPTの得意分野です。
💡 決済条件もChatGPTで簡単に調整できる!
エントリーだけでなく、「どの条件で利確・損切りするか」もChatGPTで自在に変更可能です。
例えば、上記EAに「移動平均線クロスで決済」したい場合は、以下のように指示します👇
「このEAに、短期MAが長期MAを下抜けたら全決済する処理を追加してください」
ChatGPTは次のようなコードを出力します。
void OnTick() {
double rsi = iRSI(NULL, PERIOD_H1, 14, PRICE_CLOSE, 0);
double ma = iMA(NULL, PERIOD_H1, 50, 0, MODE_SMA, PRICE_CLOSE, 0);
if (rsi < 30 && Ask > ma && OrdersTotal() == 0) {
OrderSend(Symbol(), OP_BUY, 0.1, Ask, 3, 0, 0, "Buy with MA filter", 0, 0, clrNONE);
}
CheckCloseCondition();
}
void CheckCloseCondition() {
double shortMA = iMA(NULL, PERIOD_H1, 20, 0, MODE_SMA, PRICE_CLOSE, 0);
double longMA = iMA(NULL, PERIOD_H1, 50, 0, MODE_SMA, PRICE_CLOSE, 0);
if (shortMA < longMA) {
for (int i = OrdersTotal() - 1; i >= 0; i--) {
if (OrderSelect(i, SELECT_BY_POS) && OrderType() == OP_BUY) {
OrderClose(OrderTicket(), OrderLots(), Bid, 3, clrNONE);
}
}
}
}
このように「エントリー」「フィルター」「決済条件」の3点セットで調整できるのが、ChatGPTを使ったEA改良の強みです。
特に**決済ロジックの最適化(例:EMAクロス、ATR利確、トレイリングストップ)**は、収益性を大きく左右します。
🔸 ChatGPTで「連敗ストップ」ロジックを追加する
EAの改良では、勝率を上げるよりも**“負けを減らす”制御**のほうが効果的なことがあります。
たとえば「連敗したらその日はエントリーしない」というルールを追加するだけで、
無駄なドローダウンを抑えられます。
👉 詳しい実装例はこちらで解説しています:
▶ 【ChatGPT学習用】連敗したらその日はエントリーしなくする処理を作る方法(MQL4)
このような“条件制御”のロジックは、ChatGPTに自然言語で依頼することで簡単に生成できます。
よくあるChatGPTの間違いと修正ポイント
ChatGPTが出力するMQL4コードには、以下のような“よくある間違い”が含まれることがあります。
実際にありがちな例と、修正方法をセットで紹介します。
| よくあるエラー内容 | ChatGPTの誤出力例 | 修正版コード | 解説 |
|---|---|---|---|
| ① PositionSelectを使っている | if(PositionSelect(Symbol())) { ... } | if(OrdersTotal() > 0) { ... } | 「PositionSelect」はMQL5の関数。MQL4では「OrdersTotal()」または「OrderSelect()」で代用します。 |
| ② CopyBufferを使っている | CopyBuffer(handle, 0, 0, 3, rsiBuffer); | double rsi = iRSI(NULL, PERIOD_H1, 14, PRICE_CLOSE, 0); | CopyBufferはMQL5構文。MQL4ではiRSI()やiMA()などで直接値を取得します。 |
| ③ インジケータ関数の引数不足 | double rsi = iRSI(NULL, 14, PRICE_CLOSE); | double rsi = iRSI(NULL, PERIOD_H1, 14, PRICE_CLOSE, 0); | MQL4では時間足とシフトを明示しないとエラーになります。 |
| ④ Pointの扱いが誤っている | double sl = Bid - 50 * Point;(5桁口座でずれる) | double sl = NormalizeDouble(Bid - 50 * Point, _Digits); | 小数点桁数が異なる口座ではNormalizeDouble()で補正が必要。 |
| ⑤ OrderSendの引数順ミス | OrderSend(Symbol(), OP_BUY, Ask, 0.1, 3, 0, 0, "test", 0, clrNONE); | OrderSend(Symbol(), OP_BUY, 0.1, Ask, 3, 0, 0, "test", 0, 0, clrNONE); | ロット数と価格の順番が逆。ChatGPTはたまに引数順を間違えます。 |
🧩 ヒント:
ChatGPTが生成したEAをMT4に貼り付けた際、**「コンパイルエラー」や「’function’ – function not defined」**が出た場合は、

そのエラーメッセージをChatGPTに貼って「このエラーを直してください」と伝えると、正しい修正版を返してくれます。
ChatGPTへの効果的な指示例
ChatGPTに指示を出すときの“言い方”次第で、出力の精度が大きく変わります。
以下のように目的を明確に伝えるのがコツです👇
| 目的 | プロンプト例 | ChatGPTの出力結果イメージ |
|---|---|---|
| 条件追加 | 「このEAにRSIとEMAのダブルフィルターを追加してください」 | → RSIとEMAの両方の条件を満たす時のみエントリーするように修正 |
| エントリー調整 | 「エントリー回数を減らすためにボリンジャーバンドを条件に加えて」 | → バンド下限でのみ買い、上限でのみ売りの条件を追加 |
| 決済変更 | 「現在の利確条件を移動平均クロスに変更して」 | → 決済部分がMAのクロス判定に書き換えられる |
| ナンピン追加 | 「ナンピン機能を追加して、同方向に3回までポジションを持つように」 | → ロット増加+最大3ポジ制限のナンピン処理を追加 |
| 損切り調整 | 「ATRを使って動的なストップロスを設定してください」 | → ATR×2のストップロスを自動計算して反映 |
| 決済条件変更 | 「利確をEMAクロスで、損切りをATR×2にしてください」 | → 決済ロジックにEMAクロスとATR計算を追加 |
| トレイリングストップ | 「エントリー後に10pipsごとにストップロスを追従する機能を追加して」 | → トレイリングロジックをOrderModifyで実装 |
💡 同じ質問でも、ChatGPTはバージョンや前回の文脈によって違うコードを出すことがあります。
1回で完璧を狙うよりも、2~3回試してベストなバージョンを比較しましょう。
ChatGPTでEA改良を進化させるポイント
ChatGPTでEAをうまく改良するには、「部分修正 → テスト → 再修正」の小さな反復が最重要です。
以下のような流れで進めると効率的です👇
- 小さく修正する(例:「RSI条件を追加」だけ)
- MT4でコンパイル → エラーが出たらChatGPTに修正依頼
- バックテストで挙動を確認
- ロジックのズレをChatGPTに説明して再修正依頼
これを繰り返すと、自分の戦略を反映した高精度EAが完成します。
⚙️ ChatGPTは「完全なEAを作るツール」ではなく、
**あなたの頭の中のロジックを形にする“AIアシスタント”**と考えるのが最も効果的です。
まとめ:ChatGPTはEA改良の最強パートナー
ChatGPTを使えば、EAのロジック調整や条件追加が圧倒的にスピーディーになります。
ただし、MQL4の基礎知識があるほど効率的に使えるため、
「AIで楽するために少し学ぶ」という姿勢が最強の組み合わせです。
そして次のステップでは、改良したEAをバックテストで検証します。
ロジックの強弱や最適化パラメータを分析し、「使えるEA」に仕上げていきましょう。
🧩 ChatGPTでEAを改良したら、次は「検証」
EAを改良しただけでは、まだ“完成”ではありません。
次はMT4でのバックテスト(過去検証)を通して、ロジックの再現性やパフォーマンスを確認しましょう。
👉 【STEP4:ChatGPTでEAをバックテストする方法】では、
MT4でのバックテスト手順や最適化のコツ、ヒストリカルデータの扱い方を詳しく紹介しています。
➡️ 次の記事: ChatGPTでEAをバックテスト・最適化する方法|初心者ガイド(STEP4)
💡 EAの改良が難しいと感じた方へ
あなたのEAをプロが分析し、ChatGPTでは再現しにくい部分も最適化します。
▶ EA代行作成サービスを見る














コメント