将来が不安なサラリーマンの雑記

プライベートな日々の雑記とか

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);

参考:MQL5でOHLC値を取得する – noralog

追記

MQL4 と MQL5 で共通関数を使用する

MQL4 と MQL5 は組み込み関数に互換性がありません。
どうやらこれが MQL5 が普及していない原因の一つみたいです。既存の MQL4 のソースが使えなくなるならそりゃあ面倒くさいし嫌ですものね。

それを解決する方法として、 MQL5 の関数を MQL4 のインターフェイスにラップしてやる方法があるみたいです。
確かにこうすることで、MQL4 のソースがそのまま流用できますよね。
そのラップ関数のことを「MT4/MT5共通ライブラリ」と呼ばれているらしいです。
こちらのブログで、これらの共通ライブラリ化を行っているようです。)

この「MT4/MT5共通ライブラリ」について本が出版されているみたいなので、購入を検討中です。