オブジェクト中の価格からバー位置を取得 ObjectGetShiftByValue 関数

関数

オブジェクト関数

ObjectGetShiftByValue 関数

この関数は、オブジェクト中の指定した価格のバーのインデックス値を取得します。

バーのインデックス値とは、最新のバーのインデックス値を 0として、一つ前は 1、二つ前は 2と順次番号をつけられた値になります。

ですので時間の経過と共にバーが作成されていくので、バーが作成される都度インデックス値は変わっていきます。

バーインデックス値は、一次方程式を使用してチャート上の X軸(時間軸)と Y軸(価格軸)座標によって計算されます。

そのため、この関数を使用できるオブジェクトは、トレンドラインおよび同様のオブジェクトのみに適用されます。

 

データ型と構成・戻り値

int ObjectGetShiftByValue(①,②);

戻り値は、オブジェクト中の指定した価格から対応するバーインデックス値を返します。
発生するエラーについては、GetLastError関数で取得することができます。

引数 [2]

ObjectGetShiftByValue関数は 2個の引数で構成されます。


引数名データ型単位初期値説明
object_namestringチャート上に描画されているオブジェクト名を指定します。
valuedouble価格値。

使用例

ObjectGetShiftByValue関数によるバーインデックス値の取得

ObjectCreate関数でトレンドラインを描画した後、そのトレンドライン中の価格値を指定して、その位置にあるバーのインデックス値を取得します。価格値は、その時の Bid値を指定しています。

コード

// ObjectGetShiftByValue関数によるバーインデックス値の取得
#property strict

void OnInit() {

ObjectsDeleteAll(); // オブジェクト全削除

int aa=31, bb=1;    // トレンドラインの位置を設定
ObjectCreate("obj", OBJ_TREND, 0, Time[aa], Open[aa], Time[bb], Open[bb]); // トレンドライン描画

double b=Bid;       // 価格値(Y軸)の指定
Print("バーインデックス値:", ObjectGetShiftByValue("obj", b));
Print("価格値(Y軸):", b);
}

void OnDeinit(const int reason) {
   ObjectsDeleteAll();
}

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

結果 

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