ObjectGetShiftByValue 関数
この関数は、オブジェクト中の指定した価格のバーのインデックス値を取得します。
バーのインデックス値とは、最新のバーのインデックス値を 0として、一つ前は 1、二つ前は 2と順次番号をつけられた値になります。
ですので時間の経過と共にバーが作成されていくので、バーが作成される都度インデックス値は変わっていきます。
バーインデックス値は、一次方程式を使用してチャート上の X軸(時間軸)と Y軸(価格軸)座標によって計算されます。
そのため、この関数を使用できるオブジェクトは、トレンドラインおよび同様のオブジェクトのみに適用されます。
データ型と構成・戻り値
int ObjectGetShiftByValue(①,②);
戻り値は、オブジェクト中の指定した価格から対応するバーインデックス値を返します。
発生するエラーについては、GetLastError関数で取得することができます。
引数 [2]
ObjectGetShiftByValue関数は 2個の引数で構成されます。
番 号 | 引数名 | データ型 | 単位 | 初期値 | 説明 |
---|---|---|---|---|---|
① | object_name | string | - | - | チャート上に描画されているオブジェクト名を指定します。 |
② | value | double | - | - | 価格値。 |
使用例
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();
}
コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)