削除済みチャート保存フォルダ(deleted) を一発で空にする。/MQL4でShellExecute
MetaTrader4 では、一旦閉じてしまったチャートを再び開くことができる機能があります。詳細は、こちらを見ていただければと思いますが、この機能を有効にしておくと、deleted フォルダにファイルが貯まりまくってしまうんですよね。
UI上からは、1個ずつ消せますし、手作業で deleted フォルダを開いて削除してもよいのですが、どうせなら、script で一括削除しても良いかなと思い書いてみたのが以下のコードです。
(MT4 ShellExecute で検索して来られる人がいるようなので、サンプルとして書いてみただけのものですが、DOSコマンド?を呼び出したい時などにも参考に)
#import "shell32.dll" int ShellExecuteA(int hWnd,int lpVerb,string lpFile,string lpParameters,string lpDirectory,int nCmdShow); #import #define SW_SHOW 5 int start() { if (!IsDllsAllowed()) { Alert("ERROR: [Allow DLL imports] NOT Checked.");return (0); } PlaySound("tick"); // DOSコマンドの del で削除 ShellExecuteA(0,0,"cmd.exe","/C del /Q *.tpl",TerminalPath()+"\\deleted",SW_SHOW); // フォルダを開く ShellExecuteA( 0,"open",TerminalPath()+"\\deleted",NULL,NULL,SW_SHOW); return(0); }
ダウンロードはこちらからどうぞ。
プログラムのポイントは、DLL 呼び出しを行うので、必ず IsDllsAllowed() をチェックして、不可の場合は警告をだしている点と、実行されたかどうか分かりやすいように PlaySound("tick"); で音を鳴らしている点です..。
どちらも本来の機能とは無関係ですが、万が一、プログラムが動かなかった時のトラブルシューティングがやりやすくなるので、ツールを自作されている人なら、気を配っておきたいところです。