2018年5月9日水曜日

[MQL4] オーダー約定時刻からの足の本数を求める方法

オーダー約定時刻からの時間を求める

オーダー約定時刻からの時間は OrderOpenTime()TimeCurrent() の差分で求められます。 なお、OrderOpenTime() を実行する前には OrderSelect() で対象の Order を指定しておく必要があります。

1
2
3
// OrderSelect() は実行済みとする
long diff = TimeCurrent() - OrderOpenTime();
printf("%lld", diff); // 約定時刻からの秒

この値はで求められます。

参考

[MQL4] datetime を long にキャストすると 1970/1/1 からの秒になる | Strategy of C

この時、土日に入っている場合は TimeCurrent() が正確ではない可能性があるので注意が必要です。

参考

[MQL4] TimeCurrent() は土日の間は更新されない | Strategy of C

秒を足の本数に変換する

2018/6/20 追記

PeriodSeconds() を使用する方法に書き換えました。

PeriodSeconds() で先の値を割れば、足の本数になります。

Period() は現在のチャートの時間軸をで返すので、 Period() * 60 で先の値を割れば、足の本数になります。

1
2
3
long diff = TimeCurrent() - OrderOpenTime();
int num_bars = (int)(diff / PeriodSeconds());
printf("%d", num_bars); // 約定時刻からの足の本数