FXで裁量トレードをしていると、
「今は本当にトレンドなのか?」 「エントリー方向は合っているのか?」
と迷う場面は少なくありません。
特にスキャルピングや短期足では、
感情や思い込みでトレンドを見誤ってしまうこともあります。
この記事では、MT4標準のアリゲーターを使って、トレンド方向を矢印で視覚化するインジケータを紹介します。
裁量判断の補助として、「今は順張り目線でいいのか?」を客観的に確認できます。
このインジケータでできること|トレンドを矢印で可視化
冒頭でも記載しましたが、今回のインジケータは『Alligator(アリゲーター)』を基準に判断しています。以降『アリゲーターサポート』と呼称します。
表示例

こんな感じで青矢印(ロングシグナル)と赤矢印(ショートシグナル)で表示時間足レベルでトレンドを視覚化しています。アリゲーター自体の線も同時に表示します。ですので、このインジケータ1つでアリゲーターの役割も果たします。
ロングシグナル
リップスラインのゴールデンクロス、以下の4条件が揃った場合にロングシグナル(青矢印)を表示します。
- ①リップスラインの値が、ティースラインより高くなっている
- ②リップスラインの値が、ジョーズラインより高くなっている
- ③ジョーズラインが、直近で上向きである
- ④ローソク足の終値が、リップスラインより高くなっている
ショートシグナル
リップスラインのデッドクロス、以下の4条件が揃った場合にショートシグナル(赤矢印)を表示します。
- ①リップスラインの値が、ティースラインより低くなっている
- ②リップスラインの値が、ジョーズラインより低くなっている
- ③ジョーズラインが、直近で下向きである
- ④ローソク足の終値が、リップスラインより低くなっている
パラメータ設定
パラメータは基本的にインジケータの『Alligator(アリゲーター)』と同じです。

- Jaws Period = 13 ⇒ ジョーズラインの期間です
- Jaws Shift = 8 ⇒ ジョーズラインの表示移動です
- Teeth Period = 8 ⇒ ティースラインの期間です
- Teeth Shift = 5 ⇒ ティースラインの表示移動です
- Lips Period = 5 ⇒ リップスラインの期間です
- Lips Shift = 3 ⇒ リップスラインの表示移動です
上記の値を変更すると、アリゲーターのラインは設定の通りに変更されます。
もちろんシグナルもラインの変更に沿って変更されます。
ファイル
『アリゲーターサポート』のソースコードを載せていますのでコンパイルして作成する事もできますが、一応コンパイル済のファイルもダウンロードできるようにしました。
📥 アリゲーターサポートインジをDL \ 国内最大級のインジケータープラットフォーム /
GogoJungle(ゴゴジャン)でインジケーターの評価・レビューをチェック!
ダウンロードした『アリゲーターサポート』を、MT4へ適用の仕方が分からない方はこちらの記事をご覧ください。
ソースコード
『アリゲーターサポート』のソースコードです。
//+------------------------------------------------------------------+
//| Alligator_support.mq4 |
//| Copyright 2020, mef Software. |
//| https://fx-prog.com/ |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, mef Software."
#property link "https://fx-prog.com/"
#property description "Bill Williams' Aligator"
#property strict
//---- indicator settings
#property indicator_chart_window
#property indicator_buffers 5
#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_color3 Lime
#property indicator_color4 Blue
#property indicator_color5 Red
//---- input parameters
input int InpJawsPeriod=13; // Jaws Period
input int InpJawsShift=8; // Jaws Shift
input int InpTeethPeriod=8; // Teeth Period
input int InpTeethShift=5; // Teeth Shift
input int InpLipsPeriod=5; // Lips Period
input int InpLipsShift=3; // Lips Shift
//---- indicator buffers
double ExtBlueBuffer[];
double ExtRedBuffer[];
double ExtLimeBuffer[];
double CrossUp[];
double CrossDown[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
void OnInit(void)
{
IndicatorDigits(Digits);
//---- line shifts when drawing
SetIndexShift(0,InpJawsShift);
SetIndexShift(1,InpTeethShift);
SetIndexShift(2,InpLipsShift);
//---- first positions skipped when drawing
SetIndexDrawBegin(0,InpJawsShift+InpJawsPeriod);
SetIndexDrawBegin(1,InpTeethShift+InpTeethPeriod);
SetIndexDrawBegin(2,InpLipsShift+InpLipsPeriod);
//---- 3 indicator buffers mapping
SetIndexBuffer(0,ExtBlueBuffer);
SetIndexBuffer(1,ExtRedBuffer);
SetIndexBuffer(2,ExtLimeBuffer);
//---- drawing settings
SetIndexStyle(0,DRAW_LINE);
SetIndexStyle(1,DRAW_LINE);
SetIndexStyle(2,DRAW_LINE);
//---- index labels
SetIndexLabel(0,"Gator Jaws");
SetIndexLabel(1,"Gator Teeth");
SetIndexLabel(2,"Gator Lips");
ArrayInitialize(CrossUp,EMPTY_VALUE);
SetIndexBuffer(3,CrossUp);
SetIndexStyle(3,DRAW_ARROW,EMPTY);
SetIndexArrow(3,228);
ArrayInitialize(CrossDown,EMPTY_VALUE);
SetIndexBuffer(4,CrossDown);
SetIndexStyle(4,DRAW_ARROW,EMPTY);
SetIndexArrow(4,230);
}
//+------------------------------------------------------------------+
//| Bill Williams' Alligator |
//+------------------------------------------------------------------+
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 limit=rates_total-prev_calculated;
//---- main loop
for(int i=0; i<limit; i++)
{
double Range=0;
double AvgRange=0;
//----矢印位置調整用
for(int counter=0;counter<=0+9;counter++){
AvgRange= AvgRange+MathAbs(High[counter]-Low[counter]);
}
Range=AvgRange/10;
//---- ma_shift set to 0 because SetIndexShift called abowe
ExtBlueBuffer[i]=iMA(NULL,0,InpJawsPeriod,0,MODE_SMMA,PRICE_MEDIAN,i);
ExtRedBuffer[i]=iMA(NULL,0,InpTeethPeriod,0,MODE_SMMA,PRICE_MEDIAN,i);
ExtLimeBuffer[i]=iMA(NULL,0,InpLipsPeriod,0,MODE_SMMA,PRICE_MEDIAN,i);
double rosokuValueCloseP = iClose(NULL, 0, i);
//ジョーズライン
double JAW_ATAI_1 = ExtBlueBuffer[i];
double JAW_ATAI_2 = iMA(NULL,0,InpJawsPeriod,0,MODE_SMMA,PRICE_MEDIAN,i+1);
//ティースライン
double TEETH_ATAI_1 = ExtRedBuffer[i];
double TEETH_ATAI_2 = iMA(NULL,0,InpTeethPeriod,0,MODE_SMMA,PRICE_MEDIAN,i+1);
//リップスライン
double LIPS_ATAI_1 = ExtLimeBuffer[i];
double LIPS_ATAI_2 = iMA(NULL,0,InpLipsPeriod,0,MODE_SMMA,PRICE_MEDIAN,i+1);
//リップスラインのゴールデンクロスでロング(ジョーズラインが上を向いている事)
if(LIPS_ATAI_1 > TEETH_ATAI_1 && LIPS_ATAI_1 > JAW_ATAI_1 && JAW_ATAI_2 < JAW_ATAI_1 && rosokuValueCloseP > LIPS_ATAI_1)
{
//ロングエントリー
CrossUp[i]=Low[i]-Range*0.5;
}
//リップスラインのデッドクロスでショート(ジョーズラインが下を向いている事)
else if(LIPS_ATAI_1 < TEETH_ATAI_1 && LIPS_ATAI_1 < JAW_ATAI_1 && JAW_ATAI_2 > JAW_ATAI_1 && rosokuValueCloseP < LIPS_ATAI_1)
{
//ショートエントリー
CrossDown[i]=High[i]+Range*0.5;
}
else
{
//何もしない
}
}
//---- done
return(rates_total);
}
//+------------------------------------------------------------------+『アリゲーターサポート』の使い方
『アリゲーターサポート』の使い方としての一例です。
基本的には、シグナルに逆らわずトレードしていく感じになります。
トレンドが発生している場合

大きなトレンドが発生すると、上記のようにショートシグナルが各所に出ます。アリゲーターの線が交錯するぐらいまで停滞してくると、ロングシグナルが発生し下げトレンド継続ならダマシの形となります。
この場合は、
- ロングエントリーしない
- ロングエントリーするけどロングシグナルが消えたら即撤
等の措置が必要になってきます。
レンジ相場の場合
このインジケータはトレンド相場向きのため、 レンジ相場ではシグナルの精度が落ちる点に注意が必要です。

見ての通り、レンジ相場は結構厳しい戦いになります。基本的にはシグナル通りに仕掛けてシグナルが消える又は逆のシグナルになったら撤退という感じです。
レンジ相場を事前に回避したい場合は、ADXが一定値以上のときだけシグナルを有効化するといった フィルタリングも考えられます。
❓ アリゲーターサポートのよくある質問【FAQ】
💬 アリゲーターサポートに関して、読者からよく寄せられる質問をまとめました。
基本的にはM15〜H1など、ある程度トレンドが出やすい時間足がおすすめです。
短期足(M1・M5)でも使用できますが、レンジ相場ではダマシが増えるため注意が必要です。
はい。ADXでトレンドの強さを判定したり、移動平均線で上位足の方向を確認するなど、
フィルタとして組み合わせることで精度向上が期待できます。
レンジ相場ではシグナルが機能しにくいため、
ADXが低い場面ではトレードしない、またはシグナルを無視する運用がおすすめです。
さいごに
以上が、トレンドを視覚化する便利インジケータになります。
このインジケータを作ったきっかけは、アリゲーターのEAを作成してみて結構機能していたので、裁量でも客観的にトレンドを確認したい場合は使えるかもしれないと思い、今回このようにインジケータとして作成してみました。
※ 上記のシグナルロジックをそのままEA(自動売買)として実装した例がこちら
✅ 今回のロジックをベースにしたEAサンプルも多数公開中
今回紹介したようなEAの売買ロジック・考え方をベースに、
当サイトではさまざまなFX自動売買EAのサンプルコードを公開しています。
ロジックの違いや設計の考え方を比較しながら、
自分に合ったEA構成を探したい方はぜひチェックしてみてください。
📊 EA運用・検証フェーズに進みたい方へ
今回のような仕組みを理解したうえで、
「実際にどのEAが安定しているのか」、「検証データではどんな差が出ているのか」
を確認したい方は、以下の記事も参考になります。
EA開発初心者向けに、今後も実践的に使えるMQL4関数や実装例を紹介していきます。
気になる機能やロジックがあれば、用途別に整理した関連記事もぜひあわせてご覧ください。










コメント