最近はMT4よりもMT5で開発することが多くなってきた。
EAの開発が完了すると最適化は必ずと言っていいほど行う。
これは過去のヒストリカルデータを元にパラメータを総当たり、又はAI(遺伝的アルゴリズム)を使って変えていくというものだが、この最適化を行う作業に
……..すごく時間がかかる。
MT5はMT4と違ってCPU全コアを使うので圧倒的に作業が早いのだが、
主力で使っているMSIのノートPCで丸2日以上かかる最適化のケースが増えてきたので
デスクトップPCを購入した。
***************************************************************
<ノートPCスペック>
CPU: i7-8750H @2.2GHz 6コア12スレッド
RAM:32GB
SSD:500GB
<新デスクトップPC>
CPU:Ryzen9 3950X @3.49GHz 16コア32スレッド
RAM:32GB
SSD:500GB
HDD:2TB
***************************************************************
正直言うとCPUに予算のほとんどを全フリして他はかなりケチってしまった。
これが後に致命的になるとは思わなかった。。。
デスクトップPCを購入後、早速セットアップしてMT5の最適化を試してみた。USDJPY_M1で
2015-2020.11 で完了予定時間がノートPCで200時間以上だったのが
デスクトップPCでは20時間ぐらいと表示され、更に実際は数時間で完了した。
快適に終わったのでCPUが全コア稼働していることだけを確認して他は、
何も気にしなかった。
そして、気分良く次はEURJPY_M1だ!と思い、最適化をはじめたところ
no disk space を吐き出しまくる。
何故!??
※上記はトラブル時の画像ではありません。
タスクマネージャーで確認したところ使用率表示でCPUは100%で良いんだが、メモリも100%でディスクも100%となっており、
ディスクスペースが実際にどんどん削られていく。。。
そして途中で空きディスクが無くなり no disk space… という流れだ。
ということで沼にはまっていくわけだが、試したことが多すぎて時系列に書いていくと混乱するので試したこととその結果を書いていきたい。
~試したこと~
*****************************************************************************
1・仮想メモリの割り当てを増やす(CドライブのSSDを仮想メモリ割り当てを200GBに増やす)→ いきなりごっそり200GB持ってかれて悲しいうえに、no disk spaceは変わらず。。。
2・仮想メモリの割り当てを増やす(DドライブのHDDを仮想メモリ割り当てを200GB~1TBに増やす)→ 容量に余力があるので仮想メモリに持ってかれても良いが、PCが重くなりすぎる&フリーズ。。。
3・仮想メモリの割り当てを無くす(Cドライブ&Dドライブの仮想メモリ割り当てしない)→ 快適だったがログをよく見ると、容赦なく最適化をあきらめるコアが多発していただけだった。。。(途中からdisable「無効」となる)
4・シンボリックリンクで一時的に肥大化する「Tester」フォルダをDドライブに仮想化 → Dドライブが遅すぎて全く進まない。。。
5・使用するコア数によってメモリの使用量が変わるので使用コア数を減らす → 効果はあるが使用コア数を半分以下にしてやっと動作する。コア数の暴力が使えず意味無し。。。
*****************************************************************************
何をしてもダメだった。。。USDJPYとかEURUSDとかは大丈夫でクロス円はNG。
ログを見てみるとUSDJPYとかEURUSDはTickデータを単独で取得するけどクロス円は複数取得する。
これがクロス円だと容量は大きく奪っていく原因か!!
↓↓↓↓↓
秒速で容量が増大していく!!
またまた時系列では散らかった説明になってしまうので状況を整理すると。。。
問題点が複数あって原因を特定しにくい状況にしていたと思われる。問題点を切り分けると
下記の点に分けられる。
~問題点~
1.メモリ(RAM)不足 :コア数ごとに必要量が増えていくので、CPUをグレードアップしてはじめて気づく。
2.ストレージ(SSD)不足 :Testerフォルダ内に大量にログを作り出していくのでメモリとは別で必要。
500GBでは全然足りない。上述のシンボリックリンクでも試したがHDDでは遅すぎて最適化がはじまらない。
※少しづつ進んではいくが途中でフリーズする可能性の方が高い。
~解決方法 結論~
・コアの数に応じてメモリ(RAM)を増やす。
・ストレージ(SSD)は素直にCドライブ2TBにする。
小細工しても全くダメだった。。。!メモリもストレージも両方必要なんかい!
しかもとんでもなく要求スペック高いぞ!
複数通貨で計算するEAだった場合は必要ストレージは2TBでは全然足りないと思われる。
もしくは妥協してリアルティックじゃなくて全ティックにする、更には始値にするとか。
///
これは5年間のリアルティック最適化でティック動作する、且つパラメータが複数あるEAで起きました。
///
もう覚悟決めて32GB×4枚とSSD2TB購入するので その2でご報告したいと思う。
自分もツクモで3950Xと32GBメモリ、500GBのSSDを買い、同じようにハマり、同じように2GBのSSDを買ってます(笑)
メモリの128GB化は予算申請中です。
やはりそうなんですね!メモリもストレージも両方必要ですね。
一旦64GBまでメモリ増設しましたが、まだ足りていません。。。