テクニカルEA化

MQL5で「過去〇日間の高値・安値(ドンチャンチャネル)」を取得してブレイクアウトEAを作る基本コード

有名な「タートルズ」の手法などで用いられるブレイクアウト戦略(過去20日間の最高値を更新したら買い、最安値を更新したら売り)は、MQL5の CopyHigh() および CopyLow() 関数、または iHighest() / iLowest() 関数を使うことで数十行のシンプルなコードで実装可能です。 インジケーター(ドンチャンチャネル)を呼び出さなくて

Read this for この手法を、EAの条件として分解する。

テクニカルは入口だけではなく、見送り条件、方向判定、撤退条件に分けると検証しやすくなります。

Category テクニカルEA化

Donchian / EA logic

MQL5で「過去〇日間の高値・安値(ドンチャンチャネル)」を取得してブレイクアウトEAを作る基本コード

結論

有名な「タートルズ」の手法などで用いられるブレイクアウト戦略(過去20日間の最高値を更新したら買い、最安値を更新したら売り)は、MQL5の CopyHigh() および CopyLow() 関数、または iHighest() / iLowest() 関数を使うことで数十行のシンプルなコードで実装可能です。 インジケーター(ドンチャンチャネル)を呼び出さなくても、チャートのヒストリカルデータから直接「指定した期間の配列の最大値・最小値」を取得して現在価格(Bid/Ask)と比較するのが、最も計算が軽くバグの少ないプログラミング手法です。

なぜEA運用で重要か

システムトレードにおいて、ブレイクアウト手法は「トレンドの初動に乗る」ための最も強力でクラシックなロジックです。 しかし、初心者はこれを実装する際「既存のドンチャンチャネルのインジケーター(カスタムインジケーター)を iCustom() で呼び出そう」としてしまいます。カスタムインジケーターの呼び出しはメモリを消費し、バックテストが重くなる原因になります。ローソク足の高値と安値という「MT5が標準で持っているデータ」だけでロジックを組めるようになれば、EAの処理速度と堅牢性は飛躍的に向上します。

仕組み・条件

MQL5における過去最高値(High)の取得コード例:

// 過去20本のローソク足(現在の未確定足 Shift=0 を除く)の最高値を取得
int period = 20;
double high_array[]; // 高値を格納する配列
ArraySetAsSeries(high_array, true); // 最新の足をインデックス0にする

// Shift=1(1本前)から20本分のHighデータを取得
if(CopyHigh(_Symbol, _Period, 1, period, high_array) > 0)
{
    // 配列の中で最大の要素のインデックスを見つける
    int max_idx = ArrayMaximum(high_array, 0, period);
    double highest_price = high_array[max_idx];
    
    // 現在のAsk価格が、過去20本の最高値を上回ったら買いシグナル
    if(SymbolInfoDouble(_Symbol, SYMBOL_ASK) > highest_price)
    {
        // 買い注文の処理...
    }
}

バックテストやリアル運用で壊れるポイント

どう確認するか

このコードを組み込んだEAをストラテジーテスター(ビジュアルモード)で回し、チャート上に標準の「Donchian Channel」インジケーター(期間20)を手動で表示させてください。 EAが「上側のラインをローソク足が突き抜けた瞬間」に正確にBuyエントリーし、「下側のラインを突き抜けた瞬間」にSellエントリー(または決済)しているかを目視で確認します。

自分の検証スタンス

私はブレイクアウト系のEAを作る際、単なる高値更新だけでなく「ATRフィルター(ボラティリティが十分に拡大しているか)」を必ず組み合わせます。 静かなレンジ相場で過去20日の高値を超えても、それはただの「ノイズ(ダマシ)」に過ぎないからです。「価格の更新」と「エネルギー(ボラティリティ)の放出」が同時に起きた時のみエントリーするようコードを洗練させることが、ブレイクアウトEAを長生きさせるコツです。

関連して読む

Technical to EA この手法を、EAの条件として分解する。

テクニカルは入口だけではなく、見送り条件、方向判定、撤退条件に分けると検証しやすくなります。

参照した公式情報

免責

本記事は個人の検証メモであり、投資助言ではありません。バックテスト結果は将来の成績を保証しません。海外FXや自動売買には、法規制・レバレッジ・スプレッド拡大・約定遅延・スリッページなどのリスクがあります。条件は変わるため、最新情報は各公式ページで確認してください。