【必見】iBarShiftの使い方

契約更改を契約公開だと思い、野球選手は年俸を公開する凄い奴らと思っていたセレブパンダだお。

ロジックを開発するのに、単一の時間足だけでなく、複数の時間足の状態をみたい場合、どうするのって話をします。

例えば、1分足のチャートで、1分足のRSIの値と5分足のRSIの値を使いたい場合です。

RSIの値を求めるには、iRSIを使います。
7分前の1分足のRSIの値を求めるには、以下のようにします。

double rsiM1 = iRSI(NULL, PERIOD_M1, 14, PRICE_CLOSE,  7);

その時の5分足のRSIを求めるには、どうすればよいのでしょうか?

double rsiM5 = iRSI(NULL, PERIOD_M5, 14, PRICE_CLOSE,  7);

これでよいのでしょうか?

違いますよね。
これでは、7分前の5分足のRSI値ではなく、 5分×7本前=35分前の5分足のRSI値を持ってきてしまいます。

それを解決するのが、iBarShiftという関数です。

これを使うと、1分足で7分前の位置に対する、5分足の位置を返してくれます。

具体例は以下です。

datetime timeM1 = iTime(NULL, PERIOD_M1, 7);

int shiftM5 = iBarShift(NULL, PERIOD_M5, timeM1, true);

double rsiM5 = iRSI(NULL, PERIOD_M5, 14, PRICE_CLOSE, shiftM5);

1行目で、7本前(7分前)の時間を求めます。

7本前の時間は、5分足では、何本目に該当するのか、iBarShiftを使って求めます。

2行目で求めた5分足でのバーの位置を使い、RSIの値を求めます。

5分足は1分足が5本集まっています。
1分は1,2,3,4,5と増え、5分は5,10,15,20という間隔です。
では、7分の時に、5分足は5,10,15,20のどれに対応するかというと、5分が対応します

12分は5分足では10分ですし、18分は15分が対応します。

ここも、知らないと頭がパニックになります(笑)

1分足をみつつ、5分足をみるのをMTF(マルチタイムフレーム)と呼びます。
これができると、ロジックの幅がぐーっと広がります。

是非、勉強して、使いこなしてください。

では、まただお。

Twitterでフォローしよう

おすすめの記事