以前の記事『岡三RSSのフリーズ対策』で、
岡三RSSのメモリー使用量を5分毎にチェックし、
900MBを超えたら岡三RSSを再起動させていることを紹介した。
(もちろん、自動で)
最近のコロナショック相場では、しょっちゅう自動再起動がかかっている。
多いときで、日中で2~3回、夜間で3~4回程度。
このような状況では、とても自動売買は運用できない。
今年に入って、気合いを入れて開発した自動売買ロジックだが、
まだ本番リリースできずにいる。
岡三RSSを使いだした当初から思っていたが、
「これだけ激しくメモリー使用量が増えていくアプリケーションは、根本的にプログラム設計をミスっている。」
というのが正直な感想。
せめて、1セッションくらいもちこたえてほしい。
愚痴はこのくらいにして…
今回の記事では、
岡三RSSのフリーズ対策について、最近の相場状況で試してみたこと、気づいたことなどを紹介しようと思う。
まず、便利ツール、「岡三RSSモニター」を作った。下図。
これは、岡三RSS、Excel、自作ツールのメモリー使用量をモニタリングするツール。
そして、
- 各プロセスの優先度の変更
- 岡三RSSの再起動(強制終了→起動)、起動(起動していないとき)
- Excelの再起動(強制終了→起動)、起動(起動していないとき)
- 自作ツールの強制終了、起動(起動していないとき)
をボタンクリックでできるようにした。
Windowsに標準搭載されている「タスクマネージャー」を使えば、
メモリー使用量が分かるし、プロセスの優先度変更、プロセスの強制終了もできるが、
邪魔にならない画面サイズで、ワンクリックで実行できるようにした。
プロセスの優先度変更については、
- 優先度を上げることにより、メモリー使用量の上昇が抑えられるのではないか
と思い実験してみた。
Windowsでは、プロセス優先度を次の6段階で設定できるようになっている。
プログラムで設定できるし、タスクマネージャーでも設定(変更)できる。
- リアルタイム(RealTime)
- 高(High)
- 通常以上(AboveNormal)
- 通常(Normal)
- 通常以下(BelowNormal)
- 低(Idle)
デフォルトは、「通常」。
上図の例では、岡三RSSとExcelの優先度を「高」に設定している。
さて、どうやって効果のほどを検証するのか。
なかなか悩ましいが、
下記の4パターンで、
本番用マシンと開発用マシンを並行運用し、
定期的にメモリー使用量を相対比較し、
メモリー使用量の差が広がっていくのかどうか観察した。
なお、優先度「リアルタイム」はちょっと怖いのでやらなかった。
- パターン1 本番用:通常 開発用:通常
- パターン2 本番用:高 開発用:通常
- パターン3 本番用:通常 開発用:高
- パターン4 本番用:高 開発用:高
結果、
優先度を「高」にすることの効果がまったく見られなかった。
(詳細は割愛する)
なので、余計なことはせず、優先度はデフォルトのまま「通常」で運用することとした。
さて、メモリー使用量を観察していて気付いたのだが、
どうも、岡三RSSのメモリー使用量が600MBを超えると再起動したほうが良さそうだ。
相場が落ち着いていれば、岡三RSSの処理が遅れることは無いが、
急騰・急落が続けば、メモリー使用量がグングン増えていく。
使用量が少ないときとの増え方が違う。
そして、700MB前後から処理の遅れが顕著になる。
(状況によっては、もっと前から)
板(FBORD関数)は結構頑張って更新しているが、
FQUOTEや、FTICK、FCANDLEの動作が使い物にならないくらいカクカクになる。
今回、新たなツールを作ったのを機会に、岡三RSSの自動再起動の運用を下記のように変更することとした。
- 監視ツール : データ収集ツール → 岡三RSSモニターツール(今回作成)
- モニタリング周期 : 5分 → 3秒
- しきい値 : 900MB(固定) → 600MB(可変)
また、以前の記事『岡三RSSのフリーズ対策』で、
- Excelを再起動させずとも、岡三RSS(アドイン)を再起動すれば、復旧する
と紹介したが、
どうもタイミングが悪ければ、Excelが固まったままとなるようだ。
そこで、岡三RSS再起動直後に「ヘルシーチェック」を入れることとした。
内容は、以前の記事『ヘルシーチェック』で紹介した内容と同じ。
このときは、誤判定だらけという結果だったが、
岡三RSS再起動直後に1回だけ実施すれば十分。
ヘルシーチェックがNGであれば、Excelを再起動するようにした。
この処理も、データ収集ツールからモニターツールに移植した。
ツールをポコポコ増やすのはあまり良くないのだが、
トレードツールとデータ収集ツールはExcelと頻繁にやりとりしているツールであり、
これらのツールも連鎖的にコケてしまうことも考えられるので、
すぐにKillできるように、システム全体の状況を監視するツールとして、
今回のツールを作成した。
様子を見て、ツールの構成(システム構成)を見直そうと思う。