iGatorは、既刊で解説したiAlligator(顎・歯・唇の3本線)の差を、
ヒストグラムとして可視化できる、
MQL4の組み込み関数です。
既刊iAlligator記事では、
3本の線がどれだけ開いているかを目で見て判断する方法を解説しました。
iGatorを使うと、
その「開き具合」を数値としてヒストグラムで一目で確認できます。
この記事では、iGatorの引数と戻り値を整理したうえで、
既刊iAlligatorとの表示形態の違いを明らかにし、
口が開き始めた瞬間を検知する、
実際に動くインジケーターの作り方を解説します。
・iGatorの12個の引数と戻り値の意味
・既刊iAlligatorとの表示形態の違い(3本線 vs ヒストグラム)
・上下ヒストグラムがそれぞれ何を表しているか
・実際に動くコード全体
設計思想: なぜ3本線をヒストグラムに変換するのか
まず、iGatorが既刊iAlligatorと何が違うのかを整理します。
既刊iAlligator(3本線)との表示形態の違い
iAlligatorは、
顎(JAW)・歯(TEETH)・唇(LIPS)という3本の移動平均線を、
そのままチャートに描画します。
一方、iGatorは、
線同士の差(どれだけ離れているか)をヒストグラムとして表示します。
| 指標 | 表示形態 | 見るべきポイント |
|---|---|---|
| iAlligator(既刊) | 3本の移動平均線 | 3本が絡み合っているか大きく開いているか |
| iGator(本記事) | 上下2本のヒストグラム | ヒストグラムの高さが伸びているか縮んでいるか |
3本の線を目で追って開き具合を判断するより、
ヒストグラムの高さを見るほうが素早く判断できます。
上下ヒストグラムがそれぞれ表すもの
・上ヒストグラム(MODE_UPPER): 顎(JAW)と歯(TEETH)の差
・下ヒストグラム(MODE_LOWER): 歯(TEETH)と唇(LIPS)の差
・この対応関係は公式リファレンスに明記は無い
・既刊iAlligatorの顎・歯・唇の関係から一般的に解釈されているもの
この対応関係は複数のMQL4解説で共通して説明されているものですが、
公式リファレンス自体には記載が無いため、
目安として扱ってください。
iGator関数の引数と戻り値
公式リファレンス(MQL4 Reference: iGator)の内容を整理します。
12個の引数の意味
double iGator( string symbol, // 通貨ペア名(NULLで現在のチャート) int timeframe, // 時間足(0で現在の時間足) int jaw_period, // 顎の平均化期間 int jaw_shift, // 顎のシフト int teeth_period, // 歯の平均化期間 int teeth_shift, // 歯のシフト int lips_period, // 唇の平均化期間 int lips_shift, // 唇のシフト int ma_method, // 移動平均の計算方法(MODE_SMMA等) int applied_price, // 適用価格(PRICE_MEDIAN等) int mode, // MODE_UPPER(上)/MODE_LOWER(下) int shift // 何本前のバーの値を取得するか );
既刊iAlligatorと全く同じ、
顎・歯・唇の期間・シフトの6引数を受け取る点が特徴です。
modeの選択肢がiAlligatorのMODE_GATORJAW等3種類ではなく、
MODE_UPPER/MODE_LOWERの2種類になっている点に注意してください。
MQL5版との違い: 戻り値とバッファ構成
MQL4のiGatorは、値をdoubleで直接返します。
一方、MQL5のiGator(MQL5 Reference: iGator)は、
値ではなくインジケーターのハンドル(int)を返します。
・MQL5のiGatorはハンドルを返すだけで、値そのものは返さない
・実際の値はCopyBuffer()で別途取得する必要がある
・バッファは4つ(上ヒストグラム・上の色・下ヒストグラム・下の色)に分かれる
既刊のMQL4→MQL5移行チェックリストと同じ、
テクニカル指標のハンドル方式化という変化点がここにも当てはまります。
サンプルインジケーター: 口の開き始めを検知する設計
単にヒストグラムを描画するだけでなく、
「口が閉じた状態から開き始めた瞬間」だけを矢印で知らせます。
上下ヒストグラムの値を取得する
double upper = iGator(NULL, 0, InpJawP, InpJawS, InpTeethP, InpTeethS, InpLipsP, InpLipsS, MODE_SMMA, PRICE_MEDIAN, MODE_UPPER, i); double lower = iGator(NULL, 0, InpJawP, InpJawS, InpTeethP, InpTeethS, InpLipsP, InpLipsS, MODE_SMMA, PRICE_MEDIAN, MODE_LOWER, i);
MODE_UPPERとMODE_LOWERを、
それぞれ別の呼び出しで取得する点がiAlligatorと共通しています。
開き始めの判定
上下ヒストグラムの絶対値の合計が、
直前のバーより一定以上増えた場合に、
「開き始めた」と判定して矢印をセットします。
実際に動くコード全体
実際にMetaEditorでコンパイルできる、
Gatorヒストグラムと開き始め矢印を表示するインジケーターです。
//+------------------------------------------------------------------+
//| GatorOpenDetector.mq4 |
//| Copyright 2026, FX-EA System Project Creator |
//| https://creator.fx-ea-system-project.com/ |
//+------------------------------------------------------------------+
#property copyright "Copyright 2026, FX-EA System Project Creator"
#property link "https://creator.fx-ea-system-project.com/"
#property version "1.00"
#property strict
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1 Lime
#property indicator_color2 Red
#property indicator_color3 Yellow
#property indicator_width3 2
input int InpJawP = 13;
input int InpJawS = 8;
input int InpTeethP = 8;
input int InpTeethS = 5;
input int InpLipsP = 5;
input int InpLipsS = 3;
double UpperBuffer[];
double LowerBuffer[];
double OpenArrow[];
int OnInit()
{
SetIndexBuffer(0, UpperBuffer);
SetIndexStyle(0, DRAW_HISTOGRAM);
SetIndexBuffer(1, LowerBuffer);
SetIndexStyle(1, DRAW_HISTOGRAM);
SetIndexBuffer(2, OpenArrow);
SetIndexStyle(2, DRAW_ARROW);
SetIndexArrow(2, 159);
SetIndexEmptyValue(2, EMPTY_VALUE);
IndicatorShortName("Gator Open Detector");
return(INIT_SUCCEEDED);
}
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
int needed = InpJawP + InpJawS + 5;
if(rates_total < needed)
return(0);
int limit = (prev_calculated == 0) ? rates_total - needed : rates_total - prev_calculated + 1;
for(int i = limit; i >= 0; i--)
{
double upper = iGator(NULL, 0, InpJawP, InpJawS, InpTeethP, InpTeethS, InpLipsP, InpLipsS, MODE_SMMA, PRICE_MEDIAN, MODE_UPPER, i);
double lower = iGator(NULL, 0, InpJawP, InpJawS, InpTeethP, InpTeethS, InpLipsP, InpLipsS, MODE_SMMA, PRICE_MEDIAN, MODE_LOWER, i);
UpperBuffer[i] = upper;
LowerBuffer[i] = lower;
OpenArrow[i] = EMPTY_VALUE;
if(i + 1 < rates_total)
{
double upperPrev = iGator(NULL, 0, InpJawP, InpJawS, InpTeethP, InpTeethS, InpLipsP, InpLipsS, MODE_SMMA, PRICE_MEDIAN, MODE_UPPER, i + 1);
double lowerPrev = iGator(NULL, 0, InpJawP, InpJawS, InpTeethP, InpTeethS, InpLipsP, InpLipsS, MODE_SMMA, PRICE_MEDIAN, MODE_LOWER, i + 1);
double widthNow = MathAbs(upper) + MathAbs(lower);
double widthPrev = MathAbs(upperPrev) + MathAbs(lowerPrev);
if(widthNow > widthPrev * 1.2 && widthPrev > 0)
OpenArrow[i] = upper;
}
}
return(rates_total);
}
MetaEditorでのコンパイル・実行手順
実際にMT4で動かすまでの手順です。
- MetaEditorで新規インジケーター「GatorOpenDetector」を作成し、上のコードを貼り付けてコンパイルする
- エラー・警告が0件であることを確認する
- サブウィンドウに上下のヒストグラムが緑・赤で表示されることを確認する
- ヒストグラムの幅が急に広がったバーに矢印が出ることを確認する
- 既刊iAlligatorのチャートと並べて表示し、3本線の開き具合とヒストグラムの高さが連動しているか見比べる
よくあるエラーと注意点
実装でつまずきやすいポイントをまとめます。
顎・歯・唇のパラメータをiAlligatorと揃え忘れる
iGatorとiAlligatorを同じチャートで比較する場合、
jaw_period等の値が食い違っていると、
両方の指標が別の設定で計算されてしまいます。
既刊iAlligator記事と同じ標準パラメーター
(13/8・8/5・5/3)を使うことをおすすめします。
mode定数をiAlligatorの3種類と混同する
iAlligatorにはMODE_GATORJAW/TEETH/LIPSの
3種類がありますが、
iGatorはMODE_UPPER/MODE_LOWERの2種類しかありません。
定数名が異なる点に注意してください。
開き始めの判定基準を厳しすぎる値にする
本記事の判定基準(1.2倍)は目安です。
通貨ペアや時間足によって、
適切な倍率は変わるため、チャートを見ながら調整してください。
既刊アリゲーター系記事との使い分け
似た「アリゲーター系」の記事が複数あるため、使い分けを整理します。
| 記事 | 表示形態 | 用途 |
|---|---|---|
| 本記事(iGator) | 上下2本のヒストグラム | 開き具合を数値・高さで素早く確認 |
| iAlligator記事(既刊) | 3本の移動平均線 | 顎・歯・唇の位置関係を直接確認 |
| alligator-alignment-indicator記事(既刊) | 並び順の判定矢印 | 3本の並び順が完全に整列したかを検知 |
よくある質問
iGatorについて、よくある疑問に回答します。
iGatorとiAlligator、どちらを使うべきですか?
役割が違うため、併用がおすすめです。
3本の位置関係を直接見たいならiAlligator、
開き具合の変化を数値で素早く判断したいならiGatorが向いています。
このインジケーターをEAのフィルターに使えますか?
使えます。
本記事の開き始め判定部分を関数化すれば、
「口が開き始めたらトレンドフォローのエントリーを許可する」
といった環境認識フィルターに組み込めます。
上下ヒストグラムの対応関係は確実ですか?
本文中で述べたとおり、
上ヒストグラムがjaw-teeth、下ヒストグラムがteeth-lipsという対応は、
公式リファレンスに明記されたものではなく一般的な解釈です。
厳密な検証が必要な場合は、
既刊iAlligatorの3本の値と見比べて確認することをおすすめします。
【MQL4】iGatorでアリゲーターの「口の開き具合」をヒストグラムで可視化するインジケーターの作り方:まとめ
iGatorは、既刊iAlligatorの顎・歯・唇という3本線の差を、
ヒストグラムに変換して表示する関数です。
3本の線を目で追うより、
ヒストグラムの高さを見るほうが、
開き具合の変化を素早く判断できます。
MQL5では戻り値がハンドルに変わり、4バッファ構成になる点に注意してください。
コメント