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() が正確ではない可能性があるので注意が必要です。
参考
秒を足の本数に変換する
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); // 約定時刻からの足の本数 |