Pivot指数の見方について
コードの解説
参考リンク(英語)

Pivot指数は人気のあるインディケーターのひとつですが、残念ながらMT4の初期インディケーターの中にはありません。
そこで、今回はオーソドックスなPivot指数のインディケーターを作成し、コードと共に解説していこうと思います。

Pivot指数の見方について

p1
Pivot指数は、別名リアクション・トレンド・システムとも呼ばれており、主に海外のデイトレーダーを中心に普及したテクニカル指標です。前日の高値、安値、終値から算出される値を指標としてトレードポイントを探るのに利用します。Pivot指数は一般的に以下のような見方がされています。
SはSupportの略で支持線を指し、RはResistanceの略で抵抗線を意味します。また、PはPivot(基点)で、これらの基準となる値を意味します。

  1. S1、R1について
    S1に価格が到達したら買い。
    R1に価格が到達したら売り。
  2. S2、R2について
    S1、R1を突破してもS2とR2の範囲に収まるだろうと言う考えです。
  3. S3、R3について
    ここを超えたらPivotの予想を超えた動きになっているので、利がない場合ポジションをクローズしたほうがいいと考えている人もいます。
    もしくはそのトレンドに乗って新たなエントリーをすることも有効であると言われています。

Pivotには7種類の計算が使われます。
名称と計算式は以下になります (括弧内は略称)

  1. Resistance Line 3 (R3) = H + 2 (P – L)
  2. Resistance Line 2 (R2) = P +(R1 – S1)
  3. Resistance Line 1 (R1) = 2P – L
  4. Pivot Point (P) = (前日高値(H)+前日安値(L)+前日終値(C))/3
  5. Support Line 1 (S1) = 2P – H
  6. Support Line 2 (S2) = P -(R1 – S1)
  7. Support Line 3 (S3) = L – 2 (H – P)

インディケーター内のプロパティで変更できる箇所
●フォントサイズ
●各線の色
●線のタイプ(0~4)

    0 STYLE_SOLID
    1 STYLE_DASH
    2 STYLE_DOT
    3 STYLE_DASHDOT
    4 STYLE_DASHDOTDOT

MQ4とEX4ファイルをzipしてあります。
Build745で動作確認済みです。


(注意:Zip形式ですので、解凍してご利用ください。)
Topへ

コードの解説

まず、初めに #property indicator_chart_window と書いてあります。
これはメインのチャートウィンドウに描画するという宣言になります。
ここを indicator_separate_window とすることでサブディスプレイに描画する宣言になります。
下の図、オレンジで囲っている箇所がサブウィンドウになります。

p2

また、#property copyright, link descriptionも利用しています。

p7

こちらはインディケーター起動時に表示できる機能になっています。
オレンジの四角内のCopyright欄に記入したCross Bridge Ltd.をクリックするとLinkに記入したページへ飛ぶことが出来ます。

p8

続いて、大量のextern ~というものが並んでいますが、こちらは外部のプロパティウィンドウからアクセスし、設定を変更できるようにするように記述しています。

p3

この記述をすることで、インディケーターを実行した際にこのように編集することができます。

p4

OnInit()では必要なテキストオブジェクトや、横線の初期化をしています。
度々呼び出しているTimeCurrent()は最後に取得したtick時のサーバー時刻を取得します。以前のCurTime()と同じものです。

OnDeinit()ではインディケーターがチャートから削除されたときの振る舞いを記述します。今回はこのインディケーターで生成したすべてのオブジェクトを削除しています。

Start()では計算をし、生成したオブジェクトを移動、コメントの数値を更新しています。

また、文字列であれば、Comment()を利用することによって位置の指定はできませんが、簡単にチャート上に文字列を表示することが出来ます。
左上にあるオレンジの四角内がコメントです。

p6

今回、前日の高値、安値と終値を取得する際に、”ArrayCopyRates”という関数を利用しました。
int ArrayCopyRates(Dest, string symbol, int timeframe);
となっています。
Destは2通りの引数を渡せます。

double double_array[][6]
MqlRates mqlrates_array[]

MqlRatesは新たに追加された構造体です。

戻り値はバーの数で、失敗した場合 -1 が戻ります。
EAの場合はエラーチェックを必ずしましょう。

今回は新しいMqlRatesを利用しました。
構造体なので ”.” (ドット) でデータにアクセスできます。
以前のdouble arrayでは2次元arrayと言う形でデータをコピーしていて、
どのインデックスにデータが入っているか確認しなければなりませんでした。
MqlRatesを利用すると、それの配列をコピーしてくる動作になります。
よって、メンバーが視覚的に見えるのでコーディングもやりやすいと思います。

p5

ObjectMove(“P_Text” ,0,Time[0],P);
では、最新のバーの時間でPという値段の場所に”P_Text”オブジェクトを移動することを記述しています。
また、ObjectMoveは時間と値段で指定する方法 と X,Y軸で指定する方法があります。
軸で指定した場合、チャートを動かしてもオブジェクトは移動しません。

ObjectSet(“P_Line”,OBJPROP_PRICE1,P);
こちらも同様ですが、時間軸の指定はなしで、値段”P”のみ指定しています。

いかがでしたでしょうか。今回はPivot指数そのものとコードの書き方を簡単に解説させていただきました。

※本情報を営利的な目的で加工、再利用及び再配信することは固くお断りいたします。また、万が一この情報に基づいて被ったいかなる被害についても、当社は一切の責任を負いかねます。
Topへ

参考リンク(英語)

property
http://docs.mql4.com/basis/preprosessor/compilation
Comment
http://docs.mql4.com/common/comment
ArrayCopyRates
http://docs.mql4.com/array/arraycopyrates
MqlRates
http://docs.mql4.com/constants/structures/mqlrates
時間軸
http://docs.mql4.com/constants/chartconstants/enum_timeframes
Time[i]
http://docs.mql4.com/predefined/time
Object Functions
http://docs.mql4.com/objects