トレンドと反転を判断 iSAR 関数

関数

テクニカルインジケータ関数

iSAR 関数

 この関数は、任意に設定したパラメータのSAR(パラボリック ストップ アンド リバーサル システム)の値を計算して、その値を取得します。SARはトレンド系のインジケータに分類されます。

SAR

 SAR (Parabolic Stop And Reversal system [パラボリック ストップ アンド リバーサル システム])は、トレンドと反転を見つけるために使われるテクニカル指標です。これは、価格チャートに重ねられた点のシステムを利用します。点が反転すると、価格の方向性(トレンド)が変わることを示します。

MT4でチャート上にSARをプロットする時はナビゲーター中のインディケータ → 「Parabolic」インジケータを使用します。

(SARの計算式)

 SAR(Parabolic Stop And Reversal system)の計算方法は、以下のとおりです。

①初期値の設定
 SAR値は、最初にトレンドが反転したときに反転ポイントとして使用されるため、トレンドが変化する前に初期値を設定する必要があります。SAR値の初期値は、トレンドの最初の方向に沿った最も近い高値 または 安値になります。

②SARの計算
 SAR値は、以下の式に従って計算されます。

[上昇トレンドの時]
 対象バーのSAR = 1つ前のSAR + AF × (1つ前のEP - 1つ前のSAR)

[下降トレンドの時]
 対象バーのSAR = 1つ前のSAR + AF × (1つ前のSAR - 1つ前のEP)

 EP:極値 (上昇トレンドの時は高値、下降トレンドの時は安値)
 AF:加速係数 初期設定は0.02で上限は0.2まで。EPが更新される都度0.02ずつ増加。

 初日のSAR値は、1つ前のSAR値を最初の極値として使用し、加速係数は最初は最小値の0.02に設定します。
 SARは、トレンドが上昇している場合は下方向に、トレンドが下降している場合は上方向に移動します。
 極値が更新された場合、SARは反転し、初期値に基づいて新しい方向に移動します。
 加速係数は、トレンドが継続するとともに増加します。

③加速係数の制限
 加速係数は、最大値に制限されます。一般的な最大値は0.20です。
 加速係数は、トレンドが継続するとともに増加し、トレンドが強くなると、SARがより速く移動するようになります。初期値の場合、0.02ずつ増えます。しかし、加速係数が過度に高くなると、トレンドが逆転する可能性が高くなります。

(SARの使い方)

 SARは、トレンドの方向性と転換点を判断するために使われます。トレンドに沿ってポジションを持ち、点が反転するとポジションを決済して反対方向に新規取引するという方法が基本です。

 他の指標や手法と組み合わせることで、より効果的なトレードができる場合もあります。

データ型と構成・戻り値

double iSAR(①, ②, ③, ④, ⑤);

 戻り値は、任意に設定したパラメータのSARの値を計算して、その値を返します。

引数 [5]

 iSAR関数は 5個の引数で構成されます。


引数名データ型単位初期値説明
symbolstring計算対象の通貨ペア名。
「NULL」は選択チャートの通貨ペア名が選択されます。
timeframeint時間軸。ENUM_TIMEFRAMES 列挙値から選択。
「0」は現在チャートの時間軸が選択されます。
stepdouble加速計数(AF)のステップ幅。
通常は0.02が使われます。
maximumdouble加速計数(AF)の最大値。
徐々に増加したAFの最大値です。通常は0.2が使われます。
shiftintSARの値を算出するバーの位置。
現在のバーから指定した時間軸のバー数だけ過去へシフトします。例えば、現在のバーからの計算は「0」、 1つ前のバーから計算する時は「1」になります。

使用例

iSAR関数によるトレンドの確認

 iSAR関数を使って、直近のバーの 1つ前のバーから上昇トレンドか下降トレンドかを確認します。

コード

// iSAR関数によるトレンドの確認
#property strict
void OnInit() {

   double SAR1 = iSAR(NULL, 0, 0.02, 0.2, 1); // 1つ前のバーのSAR値
   double H1 = High[1];                       // 1つ前のバーの高値
   double L1 = Low[1];                        // 1つ前のバーの安値
   
   if(SAR1 > H1) {
      Print("下降トレンドです");
   } else if(SAR1 < L1) {
      Print("上昇トレンドです");
   }
}

コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)

結果

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