2018年5月10日木曜日

[MQL4] OrderHistoryTotal() は口座履歴タブで設定した期間しか取得できない

[OrdersHistoryTotal()](https://docs.mql4.com/trading/ordershistorytotal) のドキュメントに以下のような記述があります。

> The number of closed orders in the account history loaded into the terminal. The history list size depends on the current settings of the "Account history" tab of the terminal.

つまり、"Account history"(口座履歴)タブの設定によって取得できるリストの期間が異なるとのこと。



実際にやってみたところ、確かに Account history で設定した期間しか取得できませんでした。

MQL4 のオーダー検索は、以下のように全検索するというのが主流です。 これを全期間に対してやってしまうとパフォーマンスに大きく影響するので、取得可能な期間を絞るというのが目的かと思います。 Expert Advisor を実行する時は期間を狭めに設定しておいた方が良いかもしれません。 ただし、それによって計算結果が変わってくる場合もあります。 設定は慎重に行った方が良いでしょう気をつけていても、履歴を見た後、期間を戻し忘れることはありそう。良いインターフェースとは言えないな…。 ```mq4 for (int i = 0; i < OrderHistoryTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) { // ここで何か処理 } } ``` なお、`SELECT_BY_POS` で取得できる履歴のソート順は保証されていないとのこと。 こちらも注意が必要です。 > 参考 > > [[MQL4] SELECT_BY_POS のソート順は保証されていない](https://strategyofc.blogspot.com/2018/05/mql4-selectbypos.html)