MQL5 よく使う組み込み関数
MQL5 を見様見真似で学習中です。
当方、ぱっと見、MQL5 は C++ と似た言語なのかなと思ってます。
C言語自体は仕事で使うメイン言語の一つなので、個人的にはとっつきやすいのかなと思っているので、 C言語や C++ と比較しつつ学んでいければと思ってます。
MQL5 では、あらかじめ用意された組み込み関数が存在するみたいです。
C言語でいう標準ライブラリ的なものでしょうか。
以下、よく使うと思われるものを列挙しておきます。
基本形
ArraySize(配列)
:配列の大きさを取得する
Math 関数系
MathAbs(int)
:引数で与えた数値の絶対値を取得する。確かめてないけど、たぶん double とかでもいけると思う。MathMax(int, int)
:引数で与えた数値を比較し、大きいほうを返す
OHLC(Open High Low Close)の取得
関数単体ではなく、定型的に以下の手法で取得できるみたいです。
// OHLC を格納するための構造体 MqlRates prices[]; // 配列の先頭から新しいデータを格納(第2引数を false にすると、配列の先頭から古いデータを格納するらしい) ArraySetAsSeries(prices, true); // _Symbol は現在の通貨タイプが格納されたプリミティブ定数らしい // 第2引数は時間足(0を指定すると現在のチャートの時間足) // 第3引数は取得するデータの開始インデックス // 第4引数は取得するデータの数 // 第5引数はデータの格納先ポインタ int num =CopyRates(_Symbol,0,0,3,prices); printf("open:%lf, close:%lf", prices[0].open, prices[0].close);
追記
MQL4 と MQL5 で共通関数を使用する
MQL4 と MQL5 は組み込み関数に互換性がありません。
どうやらこれが MQL5 が普及していない原因の一つみたいです。既存の MQL4 のソースが使えなくなるならそりゃあ面倒くさいし嫌ですものね。
それを解決する方法として、 MQL5 の関数を MQL4 のインターフェイスにラップしてやる方法があるみたいです。
確かにこうすることで、MQL4 のソースがそのまま流用できますよね。
そのラップ関数のことを「MT4/MT5共通ライブラリ」と呼ばれているらしいです。
(こちらのブログで、これらの共通ライブラリ化を行っているようです。)
この「MT4/MT5共通ライブラリ」について本が出版されているみたいなので、購入を検討中です。