【MT4対応】ChatGPTで既存EAを改良する方法 ロジック・フィルター・決済条件を調整

ChatGPTでEAを改良するSTEP3記事のアイキャッチ画像。既存EAをもとに、フィルター追加・ロジック調整・決済条件変更を行い、精度アップを目指す流れをデグーキャラクターと図解で表現している。
EAを自作してみよう
記事内に商品プロモーションを含む場合があります

EA(自動売買プログラム)を作ったあとに、
「エントリーが多すぎる」「決済が早い」「もう少し条件を絞りたい」── そんな悩みが出てくることがあります。
そこで使えるのが、ChatGPTによる既存EAの改良です。

本記事は「ChatGPT×EA自動売買」連載シリーズの STEP3 です。
EAをゼロから作るのではなく、STEP2で作ったEAや手持ちのEAを前提に、
ロジック・フィルター・決済条件をChatGPTで修正・調整する方法を解説します。

📘 この記事でわかること
  • 既存EAをChatGPTで修正・改良する流れ
  • フィルター追加・決済条件変更の具体例
  • コンパイルエラーが出たときの直し方
  • ChatGPTに伝えるべき修正指示のコツ

※ ChatGPT×EA自動売買の全体像や学習ステップの整理については、 STEP1:入門ガイド(総まとめ)で詳しく解説しています。


それでは、ChatGPTで既存EAをどう改良できるのか、実例を見ながら確認していきましょう。

ChatGPTでEAを改良できる理由

りょう
りょう

ChatGPTは「ゼロから作る」よりも、
👉 既存EAを改良するほうが圧倒的に得意です。
※ 私も“作る”より、改良で使うことがほとんどです

ChatGPTはMQL4やMQL5のコード構造を理解しているため、
既存のソースコードを貼り付けて「こう修正したい」と伝えると、
修正版のEAコードを提示してくれます。

例:

「このEAにRSIフィルターを追加して、買いエントリーはRSI30以下のときだけにしてください」
「決済条件をEMAクロスに変更して」
「損切りをATR×2にして」

このように自然な言葉で指示するだけで、
複雑なロジックもChatGPTが追加コードを自動生成してくれます。

ここからは、STEP2で作ったEAや、すでに手元にあるEAコードを改良する前提で進めます。
まだEAコードがない場合は、先にSTEP2でChatGPTを使ったEA生成の流れを確認してください。

実際にEAを改良してみよう

それでは、実際の例を見てみましょう。
まず、以下のようなRSIで買いエントリーするシンプルなEAがあるとします。

※ コードを全部理解する必要はありません。
ここでは「RSIで買うEAに、移動平均線フィルターを追加する」という流れだけ確認できればOKです。

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に貼って直してもらう、という使い方でOKです。

よくあるエラー内容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」が出た場合は、

【MT4対応】ChatGPTで既存EAを改良する方法 ロジック・フィルター・決済条件を調整


そのエラーメッセージを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をうまく改良するには、「部分修正 → テスト → 再修正」の小さな反復が最重要です。
以下のような流れで進めると効率的です👇

  1. 小さく修正する(例:「RSI条件を追加」だけ)
  2. MT4でコンパイル → エラーが出たらChatGPTに修正依頼
  3. バックテストで挙動を確認
  4. ロジックのズレをChatGPTに説明して再修正依頼

これを繰り返すことで、自分の戦略に近いEAへ少しずつ調整していくことができます。

⚙️ ChatGPTは「完全なEAを作るツール」ではなく、
あなたの頭の中のロジックを形にする“AIアシスタント”と考えるのが最も効果的です。

改良・検証を重ねた実運用EAの例
EAは、コードを作って終わりではありません。
ロジック調整、リスク管理、バックテスト、フォワード確認を重ねることで、実運用に近づけていくことが重要です。

当サイトでは、AUDCAD専用EA AC RUSH を実運用しており、
フォワード成績や月別収益、リスク管理の考え方も公開しています。

※ AC RUSHは完成EAの実運用例です。ChatGPTで生成したコードをそのまま使っているものではなく、検証と調整を重ねた事例として紹介しています。

まとめ:ChatGPTは既存EA改良の心強い補助ツール

ChatGPTを使えば、EAのロジック調整や条件追加が圧倒的にスピーディーになります。
ただし、MQL4の基礎知識があるほど効率的に使えるため、
「AIで楽するために少し学ぶ」という姿勢が最強の組み合わせです。

💬 EAを作るよりも、まずは改良から始めるのが成功の近道です。

そして次のステップでは、改良したEAをバックテストで検証します。
ロジックの強弱や最適化パラメータを分析し、「使えるEA」に仕上げていきましょう。

🧩 ChatGPTでEAを改良したら、次は「検証」

EAを改良しただけでは、まだ“完成”ではありません。
次はMT4でのバックテスト(過去検証)を通して、ロジックの再現性やパフォーマンスを確認しましょう。

👉 【STEP4:ChatGPTでEAをバックテストする方法】では、
MT4でのバックテスト手順や最適化のコツ、ヒストリカルデータの扱い方を詳しく紹介しています。

💡 ChatGPTでのEA改良が難しいと感じた方へ

既存EAの修正内容をうまく整理できない場合や、ChatGPTでは再現しにくい処理がある場合は、
EA作成代行で仕様整理や実装を依頼する方法もあります。
EA作成代行サービスを見る

コメント

タイトルとURLをコピーしました