SetIndexShift関数|MT4インディケータの線をシフトする方法
執筆者
佐川直弘(株式会社トリロジー取締役)
MetaTrader 4(MT4)のMQL4プログラムでカスタムインディケータを作成する際には、インディケータ線の位置をシフトすることで、特定の効果を得ることができます。この記事では、SetIndexShift()関数を使用してインディケータ線をシフトする方法について、初心者にもわかりやすく解説します。
インディケータ線のシフトとは?
インディケータ線のシフトとは、インディケータ線を右方向または左方向にずらして描画することを指します。例えば、インディケータの値を過去のバーに適用することで、将来の値を予測するような視覚効果を得ることができます。
SetIndexShift()関数の使用方法
SetIndexShift()関数を使用すると、インディケータ線をシフトして描画することができます。この関数の仕様は以下の通りです。
- 関数仕様
- void SetIndexShift(int index, int shift)
引数の説明
- index
- インディケータ配列インデックス番号(0~7)
- shift
- シフトするバー個数(正:右方向にシフト、負:左方向にシフト)
この関数は、指定されたインデックス番号のインディケータ配列に対して、指定されたバー個数分だけシフトして描画します。
以下に、SetIndexShift()関数を使用してインディケータ線をシフトするサンプルコードを示します。
- サンプルコード
- #property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Blue
//—- インディケータパラメータ
extern int ShiftBar = 5; // シフトするバーの数
//—- インディケータバッファ
double ind_buffer1[];
// カスタムインディケータの初期化関数
int init() {
//—- インディケータバッファの設定
IndicatorBuffers(1);
//—- 描画設定
SetIndexStyle(0, DRAW_LINE);
SetIndexShift(0, ShiftBar); // ShiftBar個数分だけインディケータ線を右方向にシフト
IndicatorDigits(MarketInfo(Symbol(), MODE_DIGITS) + 2);
//—- インディケータバッファのマッピング
SetIndexBuffer(0, ind_buffer1);
//—- データウィンドウおよびインディケータサブウィンドウラベルの名前
IndicatorShortName(“Custom Indicator with Shift");
return (0);
}
このサンプルコードでは、以下のことを行っています。
- `#property`ディレクティブを使って、インディケータの設定を行います。
- 外部パラメータ(`ShiftBar`)を宣言します。
- グローバル変数としてインディケータ配列(`ind_buffer1`)を宣言します。
- `init()`関数内で、`IndicatorBuffers()`関数を使って配列の個数を設定します。
- `SetIndexStyle()`関数を使って、インディケータ線のスタイルを設定します。
- `SetIndexShift()`関数を使って、ShiftBar個数分だけインディケータ線を右方向にシフトします。
- `SetIndexBuffer()`関数を使って、配列の領域を確保します。
- `IndicatorShortName()`関数を使って、インディケータの短縮名称を設定します。
まとめ
インディケータ線を適切にシフトすることで、チャート上の視認性が向上し、トレードの精度も向上します。MQL4のSetIndexShift()関数を使用することで、簡単にインディケータ線をシフトし、カスタムインディケータをより使いやすくすることができます。初心者の方も、この基本的な使い方を理解して、実際のトレードに応用してみてください。
ディスカッション
コメント一覧
まだ、コメントがありません