noralogコンテンツへスキップnoralognoralogは「一歩を踏み出しかねている誰かの背中を押そう」をコンセプトに体験談やハウツーの例をまとめます。MQL5備忘録MT5のバックテストをコマンドラインから実行するTweetPocketMT5を使ってコマンドラインから任意の設定でバックテストを行うには公式ドキュメントのプラットフォームの起動に書かれている通りバックテストの設定を記述したカスタム設定ファイルを引数にコマンドラインからterminal64.exeを呼び出してあげます。次のように書いて起動できます。/config:[カスタム設定ファイル]設定ファイルに記述する内容は、単にバックテストを実行させるだけなら[Tester]セクションのみ記述すれば出来るみたいでした。動作確認したときの設定ファイルも貼っておきます。SampleReplaceReport=1ShutdownTerminal=1Visual=0余談ですが、EAから何らかのファイルを出力した場合の出力先フォルダが分からずしばらく詰まっていたのですが、場所が分かりました。Visualizationウィンドウの[ファイル]-[データフォルダを開く]でデータフォルダが開けるので、そこからさらにたどったMQL5/Fielsに格納されるようです。僕の環境ではC:\Users[USERNAME]\AppData\Roaming\MetaQuotes\Tester\D0E8......\Agent......\MQL5\Files1C:\Users[USERNAME]\AppData\Roaming\MetaQuotes\Tester\D0E8......\Agent......\MQL5\Filesというようなパスでした。MQL5備忘録MT5のバックテストをコマンドラインから実行するにコメントMQL5でスプレッドラベルをつくってみるTweetPocketウィザードからカスタムインジケータ用のファイルを作成して、チャート上にスプレッドを表示するプログラムを書いてみます。MQL5備忘録MQL5でスプレッドラベルをつくってみるにコメント動的配列を使って1つづつ要素を増やすTweetPocket配列のサイズを変更できる動的配列の宣言は次の書式になります。array1[];配列のサイズ変更にはArrayResize()を使います。配列の新しいサイズ;配列のサイズを1つだけ増やしたい場合は、現在のサイズ+1をすれば良いことになります。配列サイズを取得するにはArraySize()を使います。サイズを取得する配列。要素が0個の場合は0を返します。サイズを取得する配列。要素が0個の場合は0を返します。以上のコードを使って、動的配列を1つ増やすコードは次のように書けます。MQL5備忘録動的配列を使って1つづつ要素を増やすにコメントMQL5の日付の扱いTweetPocketdatetime型datetime型は1970年1月1日0時0分からの経過”秒数”を表す整数を格納します。00:00’などとします。Printなどで出力すると日付の形式で出力されますが、%dとして出力するとdatetime型の値が1970年1月1日0時0分からの経過秒数を示していることが分かります。以下の構造体メンバを含みます。1月1日を0とした日番号datetime型からMqlDateTime型へ変換して使うOnCalculate()で渡される日付時刻データはdatetime型なのでTimeToStruct()を使ってMqlDateTime型に変換できます。MqlDateTime型にしておけば時間の扱いが楽になりそうです。僕の環境では以下のような出力になりました。5TERMINAL_DATA_PATH=C:\Users\hogehoge\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075TERMINAL_COMMONDATA_PATH=C:\Users\hogehoge\AppData\Roaming\MetaQuotes\Terminal\Common各定数の意味はこんな感じだと思います。