流し読み出来ない本は今読むべき本じゃないのかもしれない

Pocket

GWは何かと新しいことに取り組みはじめるタイミングとなっているような気がします。今年のGWでは多読への取り組みがはじまりました。

1日に2冊を目標に挑戦しています。以前にも多読に挑戦したことはあったのですが、全く続きませんでした。

じゃあ今回は続いているのかというと……昨日は1冊も読み切れませんでした。さっきまで昨日読んでいた本の続きを読んでいたのですが、思うところがあってその本を読むのは諦めました。なぜかというと、

“流し読み出来ない本は今読むべき本じゃないのかもしれない” の続きを読む

Pocket

MT5のバックテストをコマンドラインから実行する

Pocket

MT5を使ってコマンドラインから任意の設定でバックテストを行うには公式ドキュメントのプラットフォームの起動に書かれている通りバックテストの設定を記述したカスタム設定ファイルを引数にコマンドラインからterminal64.exeを呼び出してあげます。次のように書いて起動できます。

設定ファイルに記述する内容は、単にバックテストを実行させるだけなら[Tester]セクションのみ記述すれば出来るみたいでした。

動作確認したときの設定ファイルも貼っておきます。

余談ですが、EAから何らかのファイルを出力した場合の出力先フォルダが分からずしばらく詰まっていたのですが、場所が分かりました。Strategy Tester Visualizationウィンドウの[ファイル]-[データフォルダを開く]でデータフォルダが開けるので、そこからさらにたどったMQL5/Fielsに格納されるようです。僕の環境では

というようなパスでした。

 

Pocket

MQL5でスプレッドラベルをつくってみる

Pocket

ウィザードからカスタムインジケータ用のファイルを作成して、チャート上にスプレッドを表示するプログラムを書いてみます。

今回作成したコードでは、インジケータ削除時にラベルが消えません……


“MQL5でスプレッドラベルをつくってみる” の続きを読む

Pocket

動的配列を使って1つづつ要素を増やす

Pocket

配列のサイズを変更できる動的配列の宣言は次の書式になります。

 

配列のサイズ変更にはArrayResize()を使います。

 

配列のサイズを1つだけ増やしたい場合は、現在のサイズ+1をすれば良いことになります。
配列サイズを取得するにはArraySize()を使います。

 

以上のコードを使って、動的配列を1つ増やすコードは次のように書けます。

 

Pocket

MQL5の日付の扱い

Pocket

datetime型

datetime型は1970年1月1日0時0分からの経過”秒数”を表す整数を格納します。
直接日付を指定するにはD”を使ってD’1970.01.01 00:00’などとします。

 

Printなどで出力すると日付の形式で出力されますが、%dとして出力するとdatetime型の値が1970年1月1日0時0分からの経過秒数を示していることが分かります。

MqlDateTime構造体

以下の構造体メンバを含みます。
  • year : 年
  • mon : 月
  • day : 日
  • hour : 時間
  • min : 分
  • sec : 秒
  • day_of_week : 日曜が0,月曜が1…,土曜が6
  • day_of_year : 1月1日を0とした日番号

datetime型からMqlDateTime型へ変換して使う

OnCalculate()で渡される日付時刻データはdatetime型なのでTimeToStruct()を使ってMqlDateTime型に変換できます。MqlDateTime型にしておけば時間の扱いが楽になりそうです。
 
Pocket